News for hackers. Stuff that matters.
Re:How to Pick a Language by gaius on Friday January 23, 2009 @02:54AM (#446136)
Well, 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.

Re:How to Pick a Language by plinkplonk on Friday January 23, 2009 @03:57AM (#446176)
[This refers to Gaius's comment at 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!

Re:How to Pick a Language by fauigerzigerk on Friday January 23, 2009 @04:53PM (#447174)
I 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.

Re:How to Pick a Language by axod on Friday January 23, 2009 @03:16AM (#446152)
"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.

Re:How to Pick a Language by gaius on Friday January 23, 2009 @04:52AM (#446214)
Maybe 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.

Re:How to Pick a Language by axod on Friday January 23, 2009 @05:22AM (#446232)
The 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.

Re:How to Pick a Language by gaius on Friday January 23, 2009 @07:09AM (#446281)
"Community" includes turning to the person at the next desk and saying, hey, have you seen this before? Or asking on a mailing list inside your organization. That's why I said "people you know personally or professionally".
Re:How to Pick a Language by axod on Friday January 23, 2009 @07:11AM (#446283)
Sure, but I'd value a good general hackers opinion over a specific language specialist.
Re:How to Pick a Language by gaius on Friday January 23, 2009 @07:35AM (#446295)
It really depends on your application domain. Someone knowing that the complex thing I want to do is already in NumPy and she used it herself yesterday and here's a snippet of code pasted into my IM is priceless. Similarly I might say, oh, I wrote some code that does nearly your thing, you could just change this one line. Pretty much anything I need I could code up myself in a half a day or a day, but all those half days add up.

More than one project I've started in Lisp here (not to pick on Lisp, just as an example) and run into an issue that I could implement myself in time T or do the whole lot in Python in time T/10. It's a no-brainer. For non-trivial tasks to be completed within fixed periods, striking out on your own with a new language is a meaningless risk.

Re:How to Pick a Language by gaius on Friday January 23, 2009 @09:48AM (#446413)
PS I guess it varies between languages, but the wider community lists I'm on (Python, cx_Oracle, Matplotlib-users, Caml-list, a few others) are full of smart and helpful people.
Re:How to Pick a Language by graywh on Friday January 23, 2009 @11:02AM (#446506)
If there's no community, who wrote the books or improved the documentation? Who publishes a ton of books for a language no one uses?
Re:How to Pick a Language by brianr on Friday January 23, 2009 @03:24AM (#446157)
Why do you need to reuse other peoples code?

So I guess you like implementing all your libraries yourself?

Re:How to Pick a Language by axod on Friday January 23, 2009 @04:17AM (#446189)
Libraries 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.
Re:How to Pick a Language by acangiano on Saturday January 24, 2009 @10:13AM (#448151)
That'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.