I especially like the part about "You see, most of you Haskell/Lisp/Erlang gurus are true intellectuals and are very capable. You write very well: many great 'functional-style programmers' like you have nicely written blogs filled with sacks of good thoughts and ideas.
However, when I look around I rarely see any results of your work."
It seems his argument is that there is some evolution at work in the marketplace. Instead of arguing the "bestness" of language X or Y, simply look around and see what is thriving and what isn't. That would be a great discussion to have here. I'd add more, but I think I'd sound like a troll. Good article.
If you're going to decide that an idea is right based on how many people agree or disagree with it, you have a problem: anyone who creates something new is tied for wrongest person ever.
I wouldn't judge anything by how many people agree or disagree with it. I would simply acknowledge that a lot of people feel one way or the other.
Why not view programmers as customers, and languages as products? Are the customers buying the products that provide them the most value? I believe your argument is that they are not. Then why? Are they dumb? Misled? Controlled by people who don't know any better?
It just seems like there is some missed communication going on here. I know I'd like to see somebody who is an expert in both functional programming and some ornery imperative/OO language, like C++, make some observations. By expert, I mean several non-trivial deployed production systems in each language, not somebody who played with language A in college is now infatuated with language B.
As for me, I'll pick whatever language makes my startup get to market and adapt to customer's needs the fastest. I hear PG says that's probably one of the functional languages. I'm game. I can prototype and change a web site very quickly in several other languages (with the right tools), I'm always willing to see if something else will work better. But I can certainly also make the observation that there must be a lot more functional programmers who moved to imperative programming than the other way around. Surely they all can't have done so for the reasons I've outlined above.
A lot of the 'value' in a language is its network of users. For every X users, depending on how much your average user is likely to contribute back (some constant C), there will be Y contributions in terms of libraries, help on lists, user groups, articles, things like that.
"A lot of the 'value' in a language is its network of users."
I wish Common Lisp programmers would realize that. Many are outwardly hostile to the very idea of their language becoming popular with the barbaric hordes of uncivilized Java and C# and PHP programmers.
Well, those that post on comp.lang.lisp that is. I suspect the Common Lisp "community" is one of the reasons pg is developing Arc.
That was good, although I'm not sure I agree with all of the analysis.
Perhaps there is a difference between "language as a solution" and "language as a development platform". If you are looking for the best solution to problem X, choose the language best suited to solve the problem. If you are looking for the best development platform for problems X1..X1000, then the calculus comes out differently. Dunno.
My thoughts on that are that most developers are not going to be proficient in more than 2 or 3 "full fledged" languages at a time, with some other things like SQL thrown in that they're ok at. So a lot of people really are looking to learn something that does a lot of things pretty well, or that at least doesn't fail horribly at anything.
I think if you strip aside the emotional reasoning that's going on, some languages naturally fit with some people more than others. Thinking in terms of functional decomp and association is just different than thinking in terms of objects. Some people build their own "language within a language" each time they solve something. Some people just want a language that is easy to find help for on the internet. Perhaps the trick is to identify which of those paradigms best fits your long-term goals for your both you and your problem.
I once interviewed a guy with a bunch of different languages on his resume. "So which do you like best?" I asked. He responded, "Java". I said, "Why's that?" He said "Because when I hit the compile button most of the time it just runs."
> some languages naturally fit with some people more than others
Precisely! Because, in the end, languages are for people, and people are fickle and weird, and often irrational.
I think there are some things that make some languages more or less objectively better for some tasks, but like anything that revolves around people, it's often not so clear cut.
Marketplace popularity is often the product of luck and first mover's advantage rather than evolution (examples that come to mind: Windows, MySpace, etc.).
There's no denying that timing, momentum and markets can sometimes conspire to propel less than optimum products to an undeserved position of dominance. The C language just might be an example of that.
However, I think the author's most most salient argument could be summed up as: "before claiming to be David slaying Goliath, make certain you're not really a dwarf standing on the giant's shoulders."
Goladus, thats why we have this wonderful concept called iterative development...or whatever you want to call it. If something is good, you iterate on it, otherwise no one will use it.
I especially like the part about "You see, most of you Haskell/Lisp/Erlang gurus are true intellectuals and are very capable. You write very well: many great 'functional-style programmers' like you have nicely written blogs filled with sacks of good thoughts and ideas.
However, when I look around I rarely see any results of your work."
It seems his argument is that there is some evolution at work in the marketplace. Instead of arguing the "bestness" of language X or Y, simply look around and see what is thriving and what isn't. That would be a great discussion to have here. I'd add more, but I think I'd sound like a troll. Good article.