4 ms·
It's opinionated, but this article serves as a good FAQ for people who might be asking what language should they learn.
by acangiano 18y ago
It's opinionated, but this article serves as a good FAQ for people who might be asking what language should they learn.
- gaius 18y agoWell, no because there is one factor that dwarfs all others: what are my friends or the people in my field using? If everyone you know (personally or professionally) is using language X then there will be collective experience you can tap, documentation, mailing lists and howtos, lots of code already written, etc. It doesn't matter if you have a "better" language if there's no-one you can talk to or whose code you can reuse. Remember, a programming language is not a technology. It's a community. Choose the community you want to join, then use what they use.
- axod 18y ago"Remember, a programming language is not a technology. It's a community. Choose the community you want to join, then use what they use." I can't disagree with this enough. Why do you need to talk to people? Why do you need to reuse other peoples code? Perhaps for some people, the community matters, but I don't think that's common. Obviously you need to have decent language documentation, but that's not a community, it's just the specs.
- brianr 18y agoWhy do you need to reuse other peoples code? So I guess you like implementing all your libraries yourself?
- axod 18y agoLibraries are separate from community IMO, Sure, if there's a well made library out there that does exactly what I need I'll use it, but it's not the main factor.
- gaius 18y agoMaybe you are at the point now that you can implement any application in any language without ever running into problems, writing every library routine you ever need from scratch, porting the compiler/runtime to a new platform if you need to, and you also have complete mastery over your application area, say aeronautical engineering or bioinformatics, able to solve any problem in code without ever speaking to another living soul. If so, my hat is off to you my friend. But that's not me, after 15 years as a professional and two degrees, and I'll wager that's not anyone else reading this either. In my experience, the community around a language trumps all other factors for getting stuff done.
- axod 18y agoThe point is this: If you run into issues, you need to be able to solve them. If the language is well documented, you can use that. If there are tons of books on the language, you can pick up a book. I'd say asking the community is usually a last resort. Ever asked the PHP or Javascript community questions? Most of them have no idea. They'll give you terrible, often incorrect answers. Ever asked the Java community? Most will recommend you use XML to create a FactoryFactoryGenerator pattern on Jetty using enterprise beans. Ask the lisp community? They'll burn your house down for assuming you're worthy of asking them a question. Obviously these are generalizations, and I'm sure there are some great javascript,php,java,lisp etc communities around. Choosing the language based on the community amounts to just following the other sheep, rather than taking an unbiased decision about which language best fits the job required based on factors including libraries available, books, maintainability, ease of hiring people in later etc etc Also I'd say communities like this (Hacker news) are far more valuable than specific language communities.
- plinkplonk 18y ago[This refers to Gaius's comment at http://news.ycombinator.com/item?id=446136 http://news.ycombinator.com/item?id=446136. I note this because I've seen "threads" broken because some comments in the middle rise to the top]. Why was this comment downmodded to zero? (I've upmodded it to one). It is well written, thoughtful and makes a good point. I understand people disagreeing with it, but downmodding it to zero is just insane. I've seen this phenomenon increasing on HN recently and have "rescued" a couple of comments (i didn't agree with them but thought they didn't deserve the severe downmodding). If PG were to allow scripting HN, like he said he would, I'd probably write a script to tag a commenter as "someone I'd like to follow" and let me know when they got downmodded into oblivion!
- fauigerzigerk 18y agoI totally agree on the downmodding (although I disagree with the comment you refer to). Apparently some people find the use of words challenging. There is a big difference between the use of voting for filtering large amounts of content and using it as a way to express opinion. The former is serverd perfectly well by upvoting. The latter is unworthy of intelligent beings in my view.
- acangiano 18y agoThat's a good point, but I'll address both points. - What are my friends using? Each of these languages has online communities that are ready to help. Some more than others, but they all minimize the need to have real life friends who use the given language. Physical groups can be beneficial, but thanks to the internet they are no longer strictly necessary. Also, in most cities there are usergroups if you'd like to interact in person with the community. - What are the people in my field using? There are advantages associated with using a language or DSL/framework that's popular within your field - there is no denying that. But you shouldn't underestimate the competitive advantage that a more obscure language that's better suited for the task can give you over your competitors. PG used Common Lisp without a relational database for Viaweb. Yet in part that was the secret to his success. I suspect that using Lisp or Haskell in places where everyone else still use C++ or Java, may be a major competitive advantage thanks to the increased productivity and more robust code you can write with them.
- giles_bowkett 18y agoyeah but anybody who asks what language they should learn is an idiot. the answer is all of them, except the ones from Microsoft. everybody knows that.