Live data from Hacker News

"I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

erlang.org

91–100 of 183 posts

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#91
post #57

Earlier quoted context omitted.

> What is it with people liking a specific language What is it with shaming people for preferring a specific language where it is applicable? For some reason I can like a brand of electric drill, and I can believe in using a nailgun, but I am not allowed to like a specific language without someone coming along to scold me. If you don't ever develop opinions about tools and how to use them, are you really engaged or a…

What is it with people missing the point so many times in a row? Hence why I said "learn how you can use languages together and for the right purpose"—but I don't believe it should be the primary focus. When you buy a drill, the main purpose is to make holes in things. When you buy a nailgun, the main purpose is to stick things together. One might do it better, one might do it faster, and yes, it's useful to know tho…

I really love the comparison to photography. It's good to remember that no one tool is perfect for every job and that new doesn't mean better.

That said, it's also good to remember that there's nothing wrong with loving your languages as long as you reasonably avoid bias and don't let it stop you from trying new languages and ideas.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#92
post #59
post #15

Earlier quoted context omitted.

> If we stopped bickering so much about what is the "right language", "right framework", "right library" Programmers are sometimes maximizers rather than satisficers for this kind of thing. We don't want to know if something is ok and will get the job done, we want the best one. I think people argue for their language out of some sense of the network effects involved: if I can get more people using my language, there…

I don't think it's anywhere near that complicated. People argue about languages because languages become part of their identity: It's common to think of oneself as for example a "Lisp Programmer". And if a language is part of your identity than people saying less than amazing things about that language feels like an attack on you personally, and very quickly the discussion devolves into an argument that has nothing i…

I think you are bang on about this.

The problem is one of identity. We will protect anything that we attach to our identity because we perceive any attack on it as an attack on us. To have intelligent, unemotional conversations that has to be decoupled.

In general it can lead to problems if we map our identity externally - whether to a programming language, or something else - of course this is easier to preach than to practice.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#93
post #88

Earlier quoted context omitted.

I think you're reading a bit much into my intent from a comment that is really just a quote from the article.

It seems a little odd to specifically single out my post about efficiency with a quote about efficiency if your intent wasn't to address my point. So if I am reading too much into your post, then what was the intent?

I'm sorry; I wasn't trying to bludgeon you with Joe's words. Looking back it is clear that I did and I should have added some exposition of my own.

However, my goal was to see more about where you draw the line, and I think you did answer that, so thanks.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#94
post #40

Earlier quoted context omitted.

AFAIU Python's closure have been incomplete for a long time. I think they've become true, complete closures after the addition of the nonlocal keyword on 3.0 Please correct me if I'm mistaken. This all comes from a cursory research on the subject.

In short, in your opinion, Python has no "complete" closures because you cannot bind a new value to the name from enclosing lexical scope from within a nested scope. I disagree.

This is not possible in Haskell either. You never hear people claiming Haskell doesn't support closures.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#95

Earlier quoted context omitted.

I know it's wrong, but I've used pliers on bicycle wheel nuts. They were at hand and the Park wrench wasn't. But what the hell, the tire was flat and it was a long walk home.I am a kludgaholic. And not seeing it as a problem. The author was using Fortran on punch cards and considered himself lucky [Enter: three more Yorkshiremen ...]

I started on Punch cards... Back in '86 we had a Bulgarian over at Bristol and he told us that in Bulgaria you only got one compile so if you wanted to change your programme you had to edit the object deck (ie assembler in punch cards).

I remember a Saturday making punch cards. I was probably five. He must have had an assignment due. He was back in grad school and still working full time. He's got stories about manually editing paper tape.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#96

Earlier quoted context omitted.

What is it with people missing the point so many times in a row? Hence why I said "learn how you can use languages together and for the right purpose"—but I don't believe it should be the primary focus. When you buy a drill, the main purpose is to make holes in things. When you buy a nailgun, the main purpose is to stick things together. One might do it better, one might do it faster, and yes, it's useful to know tho…

Beautiful comparison with photography and well said. And I would like to know the answer to this one: "What is it with people missing the point so many times in a row?" too. It's not like it's hard to understand or that there are few explanations out there. I suspect many things and have many theories, but I'd be happy if someone concisely summarized different possible causes of such a behaviour of amateur programmer…

Oh I understand it well, I think. I went through phases such as this in both photography and other fields. I sort of skipped it in programming thanks to a theoretical CS education, and being told constantly "the language doesn't matter" throughout my learning phase.

I think you're always striving for higher quality at the beginning. You always want to skip over the developing mastery part right into mastery, but it never works that way. So you take shortcuts, and you see that they have effects. To continue with the photography example, if you buy a more expensive lens, for a while it looks like your photographs are getting better. On the surface, they improve. They're smoother, sharper, with better color; whatever. For a while, you think that's what photography is all about, the quality of the image, the lust for higher and higher quality.

We do the same thing in programming. You learn a language. It lets you do stuff. But then you learn a different language and it just seems so much better in the areas you believe are important right then. On the surface, it's easier to code in and easier to understand and it results in more polished code, or faster, or it lets you do things in a way that seems cool. You think "why would anyone ever use Old Language when they could use New Language?" You build lots of cool things and no one uses them but they're cool anyway.

In both fields, the beginner is just learning their tools. It's important to go through that phase in photography, because you learn that lenses and cameras and flashes and gear really do make the result different. The mistake is thinking they make the result better. Because better has many different meanings that are deeper than the surface level that the gear can affect. Same with programming: you make this mistake that New Language is better because it does XYZ better, without realizing that what you're actually building has a deeper meaning than just what the language does better. That it actually takes a lot of different languages, or that Old Language might actually be a better choice because you don't need XYZ, you need ABC. Or something.

It's the difference between mastery and the illusion of mastery or the desire for mastery, and it's the process of learning what tools are for and why they're important, before realizing that they're only important on the surface: as a means to an end. It's an attempt for quality before mastery, which has a limit.

Once you have mastery though, if you've got all the other parts right, then chances are you're going to choose the right language. Language isn't unimportant because it's not important (it is); it's unimportant because if you have everything else right, then the choice of language follows naturally. It's not a concern. It's an afterthought that a true master will already have the answer for.

This is why if you go up to a professional photographer and ask them what kind of camera and lens they're using, they'll just give you a quizzical look and roll their eyes. In their head, the answer is obvious. "The right one."

Will they still be attached to their gear? Of course. Will they still prefer what they're used to? Of course. But they have no illusion that it means anything more than that.

In the end, the photographer in the right place at the right time with the right light still wins, regardless of the gear—even though he still has the right gear. And in the end, the programmer with the right project and the right customers with the right need still wins, regardless of the language—even though that programmer has probably already chosen the right language.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#97
post #47

Earlier quoted context omitted.

"Javascript has grown a rather nice async ecosystem that Python just doesn't have. It's also exciting for people from the standpoint that everything feels newer and more up for grabs. Python is a rather old language." Python old? Not to be snarky, but I've got programs for the PDP-11 that dated Python's great-grandmother. Excitement in a language doesn't cut it, I respect productivity, environment and progress. For a…

Python is, objectively, decades old. For some people that would make it less exciting. Excitement produces buzz and popularity and encourages development effort which creates real and useful code. I vastly, vastly prefer Python. But we are NOT helping Python AT ALL if we bring it up to trash Javascript every time it's mentioned, without making any argument more specific than "I used a PDP-11".

I'm not seeing a decrease in Python development and investment. In the past decade I've seen a lot of effort invested in interesting and productive third party utilities and libraries. New languages still have to build those tools and such to get to a steady-state and attract more than language explorers and hipsters.

I wasn't trashing Javascript, which is obvious if you trace through the message thread. I haven't delved much into modern Javascript, since most of my work involves data and cli/desktop/network applications instead of web applications and services, so I don't have a valid observation worth sharing.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#98
I'm interested in Erlang, have read a lot of good things about it lately.

However I've not tried it yet because I don't see how it is going to help me... I already know some functional programming (Scala, Haskell) and I don't work with large, distributed software or databases.

I'm afraid I'm going to learn it, not finding something useful to do with it, and then "forget" it.

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#99

Earlier quoted context omitted.

Each language has its purpose, however humble. Each language expresses the Yin and Yang of software. Each language has its place within the Tao. But do not program in COBOL if you can avoid it. The Tao Of Programming verse 1.3

In order to write invent COBOL Rear Admiral Grace Hopper had to invent programming languages, compilers, linkers and the entire modern IT industry - and then she had to implement them, without a programming language or a compiler or a linker. That is the TAO of COBOL - the mother of us all.

It is also important to remember that COBOL was the result of design by committee in the attempt to please all parties and not her opus. This is an incredible book about her life and contribution: http://www.amazon.com/Invention-Information-Lemelson-Studies...

Re: "I couldn't really learn Erlang, 'cos it didn't exist, so I invented it"

#100
post #94

Earlier quoted context omitted.

In short, in your opinion, Python has no "complete" closures because you cannot bind a new value to the name from enclosing lexical scope from within a nested scope. I disagree.

This is not possible in Haskell either. You never hear people claiming Haskell doesn't support closures.

Which is why I disagree with claims that Python doesn't support them either. It does, of course; we could argue if Python supports "complete" closures, but we won't, because we know better than to use meaningless terms in discussion, right?
Post reply on HN