Finally, if you still don’t know what language to pick, choose Ruby on Rails because it is the best. If you don’t agree, get ready for a public stoning.
Clearly, some very sound thinking! I like this guy already!
More seriously, the article is spot on. I have one caveat though: don't settle for what you know if you really want to know something else.
For example, if you've been doing PHP programming for years, and know it really well, but are really keen to learn Python and Django, give it a try! My advice would be to try the new language/framework for 2 weeks. It sounds long, but actually 2 weeks is almost nothing.
After those two weeks you might go back to your previous language, satisfied that you know it's the right choice since you've tried the grass on the other side and it didn't taste any better. Or perhaps you'll switch to the new language, safe in the knowledge that yes, it is a lot better and you can probably do a better job in this new language.
I developed in ASP.Net on Windows for years but got tired of having to code in Windows and do everything else in OSX. I picked up a copy of Agile Web Development with Rails and gave myself a "2 week challenge". It's been a few months and I haven't looked back. I can't imagine going back to .NET.
You're a startup. You have neither the time nor money to do it all yourself, and if you're not first to market it's curtains. The best language for your startup is the one that has the most people kicking out free, modular code that you can pull off the shelf and use. This would seem to be Ruby for the time being, but the main point is you need to pick up the fad du jour and run with it.
Although if you're looking to get something done, learning a new language isn't going to help in the short term, there is such thing as a better language. PHP sucks. As a language, it's hackish, and not really designed at all. So unless you need to integrate with existing tools, it would probably be best to stay away from a language that will attract meto developers.
The reason there are a ton of "php sucks" posts is that tons of people use PHP. The reason tons of people use PHP is that sometimes it's the best tool for the job. Engaging in 'language X sucks' debate is a waste of time better spent designing an innovative product.
I disagree. PHP is objectively worse than Ruby, Python or Perl in practically every regard with the exception of ease of deployment. A language that loses source compatibility in point releases, has no consistent syntax or conventions, crappy toolset, half-assed object orientation and worthless functional aspects, is neither expressive nor terse... I could go on and on.
I have yet to see a fraemwork built on PHP that can match Django or ROR in terms of features or ease of use, starting from the fact that the language makes development of adequate template parsers or ORMs much more difficult given the lack of metaprogramming facilities. Oh, and while having fewer features it's also slower than the other language's reference implementations.
The only advantage PHP has is the preponderance of available developers and libraries (and those libraries allow to shoot yourself in the foot much more easily than the alternative languages by virtue of being just plain worse. Wake me up when there's something comparable to SQLAlquemy or Beautiful Soup on PHP). They're actually very significant advantages, but speak more about its legacy and inertia rather than any technical advantages.
Sometimes, this actually is a significant (technical) advantage.
Of course, PHP is not perfect, but which language is? Sometimes, even the old VB(A/S) can be the best choice to solve a given problem.
In my opinion, languages aren't the end in itself - they're just tools. I've get to know programmers that use "kiss-ass" technologies but cannot solve (business) problems.
Again, an example I've mentioned before: I you have no idea what the "De Casteljau"-algorithm is about, how could you implement a adequate solution for a given problem with any technology? But if you do, there's not so much difference implementing it with Canvas/JavaScript, SVG, VML, Whatever.
Yeah, because VB6 is so much better than Python or C#. Strangely I have yet to see many complaints about C# or Java in relation to C++ or VB6, yet I'm sure as many if not more poeple have used VB6 and C++.
Some languages allow you to shoot yourself in the foot more easily. Some have just better conventions and toolsets. VB6's object model just plain sucks in comparison to C#. C++ bugs are much harder to catch than Java's, and Java gives you a better toolset to find them (not that I'm a Java fan, I acutally dislike the language quite a bit).
Bjarne's phrase is pretty cute. But let's be honest, technical merit has never been in a factor in a large majority of business decisions. If that were so people would drop the horrible abortion that's ABAP or COBOL for SAP applications, Sun would drop Telnet as a default dameon and use a better shell than sh as a default. But hey, it's the most popular commercial Unix, right?
I'd argue that Rails' use of DSLs and metaprogramming makes it materially different from straight ruby. It gets even more confusing with lisp where your libraries are, by definition, language extensions. Often with completely custom syntax.
It's kind of an irrelevant distinction anyways. People don't really pick "languages", per se. They usually pick "language + libraries", and the line between third-party libraries and standard libraries is getting increasingly blurred.
Of course he forgot to mention what is currently the trendiest language to use, which is the one I'm writing. I haven't had this much fun with a computer since dos days.
Then that's your problem, if you can't understand it. A man is unhappy: he knows not why he is unhappy, what problem he has, nor how to solve it. Is it nonsense to say he is unhappy? A species is wandering around configuration-space; it knows not what the current fitness function is, nor what mutations would solve it best. Is it nonsense to say that the species will do better or worse?
I'm thoroughly amused that the first tool link is a picture of someone using a hammer to pound on a screw. The photographer even says in the flickr comments that he's thinking about titling the picture "What happen when you use a wrong tool...".
This in no way diminishes your point, which I think is quite valid. I just found myself laughing out loud so it seemed worth sharing.
I like Ruby and Rails for that matter, or rather where Rails 3 is headed. But this has flame bait written all over it. It's a matter of choosing the right tool for the job, plain and simple.
It's a matter of choosing choosing the right tool for the job, plain and simple
I have a lot of trouble with this statement. It is a tautology, it is necessarily true. Now that we both agree, what is the best tool for the job and how do we choose it? The OP gives the author's perspective. If you don't agree, perhaps you could share yours.
There seem to be a lot of people who think that arguments about what language to use are 100% fluff and that they can all be neatly settled by the cute "right tool for the job" platitude. The truth is that sometimes we're just not sure what the right tool for the job is and we might do ourselves a favor by being open to different arguments for different tools.
If you're truly committed to "the right tool for the job" be prepared to become a polyglot programmer.
We use 5 (or 6, depending on how you count) different programming languages regularly at my startup and for strong business and technical reasons each of them is "the right tool for the job". We also have some other languages squirreled away in odd corners. In those cases, the languages tend to be "good enough" tools for their jobs (so there's no sensible reason to change something that is already working).
Finally, if you still don’t know what language to pick, choose Ruby on Rails because it is the best. If you don’t agree, get ready for a public stoning.
Clearly, some very sound thinking! I like this guy already!
More seriously, the article is spot on. I have one caveat though: don't settle for what you know if you really want to know something else.
For example, if you've been doing PHP programming for years, and know it really well, but are really keen to learn Python and Django, give it a try! My advice would be to try the new language/framework for 2 weeks. It sounds long, but actually 2 weeks is almost nothing.
After those two weeks you might go back to your previous language, satisfied that you know it's the right choice since you've tried the grass on the other side and it didn't taste any better. Or perhaps you'll switch to the new language, safe in the knowledge that yes, it is a lot better and you can probably do a better job in this new language.