Hacker News new | past | comments | ask | show | jobs | submit | page 2 login
Poll: What's Your Favorite Programming Language?
2423 points by GreekOphion on Mar 23, 2012 | hide | past | favorite | 570 comments
What's your favortie programming langauge?

Below are the most popular languages. If your favorite isn't below select other and comment what it is below.

Note: By voting for a language you are not up voting this poll. Please up vote this poll to keep it alive.

3240 points
1805 points
1492 points
1032 points
886 points
711 points
590 points
570 points
567 points
476 points
375 points
341 points
Objective C
335 points
335 points
253 points
199 points
193 points
169 points
150 points
128 points
110 points
110 points
106 points
88 points
Groovy (Added Two Hours Late Due To Requests)
80 points
78 points
75 points
50 points
Visual Basic
46 points
45 points
41 points
34 points
28 points
28 points
25 points
13 points
11 points

Given the audience on HN, it's not surprising to see Python and Ruby disproportionally upvoted. (For the record: 145 for Python, 114 for Ruby at the moment, next highest is C at 53). Coffeescript is also significantly overrepresented. It's currently on 34, beating C++ (29), and in the same region as C# and Java.

What I am surprised at however is that C# and Java (37 and 35) are doing as well in this poll as they are. It seems that Java in particular is disliked here for it's heavy reliance on classes, classes everywhere, while C# is more approved of, but still disliked. Partially for the same reasons, but also for how Windows-centric it effectively is.

I guess it shows that HN isn't as seperate from a typical subset from programmers as it appears from just reading articles that are upvoted, and reading comments.

Personally, my favourite is Python, but between college and Android development, I've mostly been writing Java for the last few months. While I find that Android makes it less painful than applications using other big Java APIs (Swing for example), I'd still rather be writing Python.

I also wonder how different the results of this poll would be from a similar poll asking "What language do you write in a daily basis?". I'd imagine Haskell and Coffeescript as the biggest losers in such a comparison, while I'd imagine that PHP would have the biggest gain.

C#, the language, is not windows centric. The framework released by microsoft might be, but the language itself is decoupled from windows.

Looks like 'Go' is missing, 'Lisp' should probably be 'Common Lisp' since Scheme and Clojure are also 'Lisp'.

I would have voted for Go. Agree, should be on the list.

Agreed, same here. Go gets my love these days!

Same here, golang is my day to day language of choice now. The very large project I've just started I've selected Go! for.

Same here.

Also obligatory #golang so people can search for it on the page! (Had to sift through every "x hours a<go> to find this thread.)

I see a lot of votes for python, but a disproportionately small representation of python fans in the comments.

If you asked me a year ago, I'dve said python. But lately, I've been using Clojure for personal projects, and it's making python seem just... boring. (I get the same feeling when I write in Ruby too)

The "one right way" paradigm is a great one, and the language is solid. The built-ins are top-notch, and while not exactly a functional language, it's certainly expressive enough. In my mind, it's probably the ideal general-purpose language. But lately, I feel like I use it for everything because it's "good enough" for everything -- without being "great" at anything.

Point? I don't think I had one, sorry. I just thought I'd share that notion to see if it resonated.

If you don't mind my asking, as a Python person, how did you learn Clojure?

I'm mostly programming in Python and JavaScript today, and I want to learn Clojure, but I keep seeing these very strange talks. I don't know how to articulate it, really. My best metaphor is, it feels a little like I wanted to go out and learn about Catholicism and they said, "oh, that's easy, we'll just have you sit in on a bunch of confessions and you'll figure it out in no time." People explain why they made certain language decisions and I (as yet) lack any of the background needed to know what the hell they're going on about.

I also switched from Python to Clojure. After picking up the syntax (there is almost none) I spent a few weeks reading the source of Ring by Mark McGranaghan [1] and constantly referring to ClojureDocs [2]. (My goal was to port Ring to Python [3], but after I did I realized I now knew Clojure and could just use Ring.)

[1] Ring: https://github.com/mmcgrana/ring

[2] ClojureDocs: http://clojuredocs.org

[3] Pump: http://adeel.github.com/pump

4clojure.com was very helpful for me, as was this: http://jkkramer.wordpress.com/2011/03/29/clojure-python-side...

Thanks! I don't know how to pay you back, but I shall try to pay it forward.

No worries, glad I could help.

I think another thing that gave me a boost was when, for whatever reason, I decided that I should avoid for loops when writing day-to-day python. I started using list comprehensions, and then map, filter and reduce, and functools.partial, whenever possible. I had tried to approach lisps before, but I found it easier after those became habitual.

if you just wanna get a feel for clojure without getting too serious - here's a demo of livecoding in overtone - http://vimeo.com/22798433

overtone comes with a stock emacs config that will get you livecoding in no time.

after that, Joy of Clojure by Fogus. (edit: fwiw i have had no trouble with this book even as my first lisp, but i've been coding in a functional style for about 6 months before clojure)

I find Practical Clojure and Clojure in Action easier for beginners. The Joy of Clojure is a little advanced suitable if you already know Lisp. All 3 are good books.

A good start: http://java.ociweb.com/mark/clojure/article.html

Clojure force you to think and program in functional manner, where in Python you can skip FP. Thus learning Clojure IMHO will improve how you program in general. I am learning Clojure now for this purpose and I might not use it for real work.

If you just want to get a feel for Catholicism without getting too serious, you should leaf through 'In the Beginning'


It starts assuming virtually no background in the faith and it really gets you into the nuts and bolts quickly.

> I see a lot of votes for python, but a disproportionately small representation of python fans in the comments.

This is probably because describing the virtues of Python (clean & simple syntax, one right way to do everything, easy-to-use yet comprehensive standard library) just feels like beating a dead horse. Almost everybody in this community has heard of Python. The circle-jerk factor on HN is still somewhat low when it comes to this topic.

I currently use Python personally and professionally, and I love having it as my go-to language. However, I'll be happy to add some more languages to my repertoire in the future.

I was not expecting Python to be getting near as many votes as Ruby.

It is my favorite language simply because the pseudocode I write on whiteboards is basically Python. Strangely, it has been since well before I really started using it regularly.

Python is rapidly replacing ruby as the de facto scripting language for automation. It's also starting to replace Java as the language of choice for teaching programming and CS.

Python has been the de facto scripting language of choice for automation in a number of industries for quite some time.

I don't believe (but correct me if I'm wrong) that Ruby has ever gained much traction outside of the software development world. Perhaps we're just seeing some natural consolidation.

Ruby is the language that Puppet and Chef (the 2 most popular configuration management systems) are based on.

The roles Puppet and Chef fill are small parts of "automation".

Puppet is written in Ruby, but has it's own DSL, so it doesn't really count.

I never knew ruby was ever considered the "de facto language for automation". Maybe you are thinking of perl?

I was commenting on the popularity of Python in absolute terms, not necessarily in the context of a relationship with Ruby.

No, he's thinking of Ruby. Puppet and chef.

What is the Python equivalent to Puppet and chef?

The only modern and novel alternative is http://saltstack.org

Fabric comes to mind.

Fabric is more of a task-oriented SSH replacement with some really nice bells and whistles, much different from Puppet or Chef. Some folks are working on Salt Stack which is python-based and more akin to the others.

Fabric is more like Cap than Puppet / Chef

bcfg2 I have been using it for a few years now. Have enjoyed it much more than the other similar tools we evaluated: puppet, chef and cfengine

bcfg2 I have been using it for a few years now. Have enjoyed it much more than the other similar tools we evaluated: puppet/chef/cfengine

With tools such as?

There are those who think that if a programming language is only usable with bloated tools, the programming language might be flawed.

That's interesting. It was exactly what I was thinking while reading the C# thread at the beginning of this article's comments. Yes, yes, mono whatever, but really ...

I'm not sure what point you're trying to make here. Are you claiming I'm wrong or do you want me to do a google search for you?

A google search may not be as insightful as someone talking about a trend in popularity for a specific niche (automation.) I think the poster was just asking you to share specifics that helped form your opinion.

I find that I'm rather productive in python for scientific computing and go towards C (or occasionally even fortran) when I need something faster. I also find that it has a rather shallow learning curve for students who come in knowing java...

But generally, I think it's good to pick the right language for the right domain. I keep trying to find an excuse to learn Erlang ;>

  > ...go towards C (or occasionally even fortran) when I 
  > need something faster
Try cython next time.

Or PyPy.

Since he's specifically saying that he does scientific computing, PyPy is not a good suggestion. Pretty much all of the codebases of the stack for scientific computing can not be used in PyPy, and this will most likely not change in the foreseeable future since porting them is non-trivial.

I'm not trying to talk down PyPy here, but for this domain of application, it's not appropriate at the moment.

I'm not quite ready to cast my vote for Python, but this statement is so true. Basically all of my notes from planning stages as well as algorithms I'm looking at or working on... might as well already be in the interpreter.

Python seems to have higher penetration outside career programmers. When I learned Ruby about a decade ago, there was this "Ruby shouldn't be your first language" sentiment. I think there's been progress on that front, but Python had an early lead.

Some language generate a lot more noise then others--the noise is not at all correlated to actual usage or popularity.

I chose Smalltalk, not because its a language I get to use every day, or have even used a lot, but it has influenced two of the languages I'm most productive in, and from it has sprung foundational technologies which nearly all developers (especially those who program VM targeted languages) have been able to take advantage of.

It was one of the first languages I used which really introduced me to a completely different way of problem solving and thinking about the structure of a program. I know that language was probably Lisp/Scheme for a lot of people, but for me it was Smalltalk. Implementing control structures without language keywords!? Operators implemented using the same message passing techniques as any other method call!? Querying any instance for its implementation and documentation at runtime!?

The number of C# votes makes me very happy. When I originally signed up oh.. 1333 days ago it felt like I was the only .Net dev on the site. It was a huge deal for me to find other startups built on .Net back then. Now I discover them far more often. I think Microsoft must be doing something right. I blame Scott Gu.

Yeah, isn't it great that more people are backing a proprietary, closed source, Windows-centric technology?

(As a pre-emptive strike, Mono does not make .NET any more "open". If Mono was maintained and supported by the same people that design the language/APIs I might change my tune.)

That's a pretty substantial downside to C# for sure but it doesn't stop it from being a fantastic language. I can only imagine how popular it would be if MS supported non-Windows VMs (technically the CLR) directly.

Well C# is a great language, that runs very well everywhere (thanks to mono). I wouldn't ever dream of using ASP.NET but C# as a language is pretty nice.

Asp.net MVC is fine. Webforms is a crime.

> As a pre-emptive strike, Mono does not make .NET any more "open". If Mono was maintained and supported by the same people that design the language/APIs I might change my tune.

If Microsoft controlled both major implementations of C# and .Net, you'd consider that more open? Maybe you should think about that a little bit more.

Mono is open source. If it were the official (reference) implementation, of course I'd consider .NET more of an open platform.

That doesn't sound more open to me. Is Java more open than C++? Java's official implementation is open source, but it's controlled by Oracle. C++ doesn't even (to my knowledge) have an official implementation, yet it has numerous practical implementations, some of which are open source.

The programming language described by standard ECMA-334 is, like most any other ECMA standard, non-proprietary, open for anyone to use, and not particularly tied to any one platform.

There is of course a particular implementation of that language which is proprietary, closed source, and tied to a particular platform. However, this is not a particularly unique feature of the language. The same is also true of ECMA-262, ISO-1539, ISO-9899, ISO-10279, and many others.

For its part, Mono is supported by the same people that design the Mono branch of the language/APIs. This is a quite robust fork of the platform, which includes a great many useful APIs which are specific to that version, and forms the foundation of popular tools such as the Unity game development framework.

The parent comment specifically mentioned more people using .NET. I don't have a problem with C# as a language.

Yes, it does.

Hacker News is all about Python/Ruby/Clojure/Scala/Haskell most of the time, but then we find that there is this huge group of very happy Windows/C# developers that are passionate about their environments. Where are you the rest of the time? What have you people been building?

Standard ML!

Of course, I do research on Manticore (parallel dialect of Standard ML) and am one of the primary developers left on the SML/NJ implementation. So I'm a bit biased.

But trying to be objective, the module system is absolutely amazing. It's a simple / small set of syntax with a formalized semantics that is powerful enough to do almost everything you want to do with generics, classes, macros, and other module systems.

Bless you! Standard ML is the closest thing we have to a perfect language, in my opinion. My only wish would be a solution to the non-extensible overloading issue, but to fix it without also fixing the formal semantics around it feels like throwing the baby out with the bathwater, and is why I haven't gotten into Felix or Mythryl.

I mostly use Haskell myself. I find myself missing the laziness and purity when I use Standard ML, but I think the biggest obstacle for me is the shortage of libraries. I'm happy to use a language without a community, but compared to Haskell it feels a bit like a ghost town. Such a shame, it really is fantastic and would have been the perfect tool for building huge systems on.


Yes, the overloading issue requires changes to both the parsing rules and some fairly tricky formal semantics changes as well. I've talked with Dave MacQueen about it in the past, and it didn't sound like something he was terribly averse to, just that it would take a long time to really get _right_. And then it places a burden on the SML implementations, though at this point that's really SML/NJ, MLton, and possibly Poly/ML (though I don't know that team very well yet).

Unfortunately, the SML implementor community largely either moved on to other research projects after the implementation-y papers had been mined or left to work in finance (interestingly, it seems to be about 50/50, with the exception of a Googler or two). We don't really have anybody in research labs to do the kind of amazing full-time implementation, support, evangelism, and publication work that the Simons do so fabulously for Haskell!

That said, as a researcher, having many more SML users would require us (particularly Manticore) to Get Real in ways that are not on the path to publication. And considering I'm already only going to have 7-ish publications when I graduate, I see a probable future locked behind the doors of Big Finance for myself as well...

Which finance companies are using ML languages?

Apart from the obvious Jane Street example, quite a few. F# is used pretty widely at this point in the Chicago area. Many of the larger banks either have their own private dialect of ML or a strict, ML-like subset of Haskell (Standard Chartered).

But for most it's not their primary language; those roles are usually still filled by C on the server and some GUI-friendly language for the trader apps. It's mainly used less latency-sensitive work that is more financial modeling in nature.

Sorry for being vague with names; other than Jane Street and Standard Chartered, most of them will only talk about it confidentiality. Many take secrecy to the point of lunacy.

I selected Forth, but Postscript was a lot funner. I have always wanted to sit down and create a cross between the two. Perl for short scripts (just because of CPAN and always have Perl installed) and Objective-C is my main application language.

I gotta admit I miss Occam but it is over 20 years since I did any programming in it. I am currently researching agent based languages as I still have some Telescript documentation and have always been fascinated by the concept.

I answered Objective-C only because I'm considering the entire ecosystem around a language in addition to the actual language (its features, idioms, and syntax).

Objective-C isn't a particularly pretty language, in my opinion - but when XCode's powerful code completion, decent visual debugger, and awesome static analysis come into play, it's a lot more attractive.

Plus, for me, programming is about the goal, with the journey an oft-pleasant and very engrossing side effect. Objective-C hits the sweet spot where the language and toolchain gets out of my way and lets me build beautiful, functional software that people actually use.

In my consulting work, I seem to have benefitted greatly from a shortage of people still versed in old-school systems work, heavy C, Perl, and solid knowledge of the esoteric feature sets of traditional RDBMs. There is a decreasing number of people in the market who really know their way around Linux and other Unices as well, and who can bring some historical insight to bear.

I am not a bearded hacker. I'm only 26, but it seems that everyone in my age group has moved onto fashionable web programming tool chains, Ruby, etc. Personally, that's just as well; leaves me with less competition. :-)

Most of my "for fun" coding lately has been in Arduino's C/C++ language subset - which, given it's lack of many of the standard libraries usually assumed available when people talk about C or C++, I tend to not think of it as "C programming". In fact the resource-limited nature of Arduino programming feels much closer to assembly than anything else.

(Perl is still my "favourite" of all the languages I get paid to write…)

Mathematica. But not because of the language - it has some warts. But because of the problems I'm working on when I choose Mathematica as a tool.

What kind of problems. Could you elaborate a bit please?

Nice try Stephen.

What makes me really happy is when I'm working on something new. Particularly science. Some sort of new kind of science.

FYI, canned reddit-esque responses don't go over too well here.

Perhaps a better question is “what is your most favored language?”. My favorite language is F# but my most favored language is C#. It’s like how a dog might favor a particular limb until the other fully heals.

I voted for Python, but I would have voted for F# if it had been in the list. A good mix of strong language design (the ML pieces, plus some of the bits like workflows) and pragmatic utility (all those .Net libraries and such).

I code mostly in C# for employment reasons, but I do personal code in F# or Python, depending on what kind of tools I need access to.

Same post from 6 hours ago. http://news.ycombinator.com/item?id=3745084

My favorites:

- Ruby for an imperative scripting language

- Go for an imperative systems language (previously C)

- Clojure as a functional language

Although most Rails devs code Ruby in a strikingly imperative way, those of us who did Ruby long before Rails tend to code it in a functional way.

Go Team Ruby! But on a serious note, I wonder how many of those are < 2 years (I am) and were influenced by the Ruby community, a lot of which seemed to have hung around on HN for the same period of time.

I picked Python and Assembly. There was a day when C++ would have gotten the pick but not today. As for my reasons.

Python, simple enough to explain why. I get to quickly make and test a program with a language that is well documented, comes with a tutorial that in my opinion was just as good at getting me into programming with Python as any other books I've found out there, and the growing libraries for AI based fields is very nice. Lately (doing the NLP class, and was using SimpleCV/OpenCV for another project.) I've grown to love it even more then before.

As for why Assembly was my second runner up? One very simple, but hopefully thought provoking reason. Assembly Language was the absolute most simple yet complicated programming language I had ever dealt with, it taught me more about how and why computers do the things they do then anything else I learned about computers. (since I keep people's computers going as a living, it was extraordinarily helpful in making me a pro at fixing them.)

IMHO, Python is probably one of the best languages in general. But I consider Perl, its opposite in many ways, one of my favourites.

In Perl I can be witty and find my personal style. Sadly enough, my code poetry might not be somebody else's. Reading other people's Perl code can be hard.

On the other end of the spectrum, Python feels aesthetically dull to me sometimes. But it's a great language to program in with larger groups of people, even when they have different skill levels and coding styles.

In the end, these languages are all just tools; you can do a hammer's job with a screwdriver, but really all tools have their purpose in the right context.

(Go's missing, though.)

Moonscript (voted for Coffeescript and Lua). It's like Coffeescript for Lua instead of JavaScript, which is great of you need a fast and concise language to embed in another application (compiling the standard lua interpreter for a platform consists mostly of dragging the source to your IDE and compiling). ( http://moonscript.org/ )

I also love OCaml (and miss it's static inferred typing and pattern matching everywhere else), but it's ecosystem has never fit with what I'm working on outside of coursework in it.

It's really a shame that Groovy is not even in this list. It's understandable as it is very poorly marketed, but it is really a shame that it is not mentioned more, especially on such a forum. For entrepreneurs, it has so many advantages. As productive as Ruby and Python, and yet running on performant Java runtime. Plus, being a derivative of the Java language, it makes it so easy to find experimented developers. It's my personal favorite, and I really think all entrepreneurs with a Java background should give it a try.

Yeah, Groovy really is an awesome all round language. Nearly all the benefits of Java, Python & Ruby rolled into one. And so easily embeddable into any Java app, you can use it just where you need it or everywhere. It benchmarks substantially faster than Python and Ruby for the things I do, and it's really easy to optimize by just dropping into Java for anything that is a bottleneck which is far better than dropping to C and losing the all the benefits of living in a VM.

And don't forget groovy++ to easily achieve java like performance.

LISP and Scheme still have one killer feature all other languages don't have: extremely powerful macros.


This article gives a good insight what about LISP is so awesome:


I also vote for Ada because this is the best language I know to write maximum quality software. I would love to make money for living by coding Ada for Embedded Systems.

I finally created an account because of this :) Python FTW!

How sad - down-voted to oblivion on your first comment.

Quick tip to get the appropriate tone right. Don't post anything that sounds like a typical Reddit comment.

maybe some day I will finally become reddit user :D

So brave!

(Don't worry, I have a ton of karma to burn here)

Good choice. Welcome :)

nice to become a legal part of this awesome community :)

Perl, especially when parsing and manipulating text files. Still the best glue language between applications that don't like each other, such as when the output from one is incompatible with the input of the other (of course, vendor of second app promised it would be compatible). The only downside after perl saves the day is that it makes whoever decided to buy that application look far less bad than they deserve.

For me, there is a huge difference between programming languages I like, and what I can build with them. Clojure is my favourite, followed by Io. Both languages have a clean, minimalist aesthetic, are rediculesly powerful, and very expressive.

When it comes to getting stuff done, Javascript is an interesting language, and there are some things about it I like a lot, but there are many things in it where a) there is syntax for things that make no sense (like the ~ operator), b) the syntax for something common and important is horribly clunky (like function, or assigning to a prototype), c) the syntax having odd rules that almost seem like little traps (like the way that () will call the previous line as a function, or how you need a trailing comma on everything in an object literal except for the last thing). All that being said, I love what I can do with it. And I really find that CSS/JS/Semantic HTML has some of the nicest seperation of concerns of any UI programming toolkit I have looked at. So when it comes to what I can build (and get paid to build), I would say my favorite language is javascript.

Voted C, C++ & Haskell, but other languages are also nice. C is pleasant for its simplicity and straightforwardness. C++ is huge and complex, and I’ve never believed in OOP, but I know of no better language for generic programming. Haskell, on the other hand, is rather small and pretty. It doesn’t get in your way, it informs your writing in other languages, and its type system makes the angels weep.

Here is a plot of the votes (updated hourly):

* http://koldfront.dk/misc/hn/wyfpl/data.png

Did you keep track of the changes? I see relative changes in votes every time I check. It would be really cool to see how things went. You could also infer a geographical distribution of voters, as this poll goes through time zones :)

I have always maintained that if you have an unqualified "favourite" thing, you are probably not very in to that type of thing :)

I use C the most because it is the most appropriate tool for the job at hand for most of the jobs I do. I appreciate the simplicity and elegance of Scheme, and wish I could use it more. I envy Haskell's type system.

None are my favourite. After all, all programming languages suck.

Awe, that's the spirit!

I voted Ocaml because it is what I'd call my favourite language: of all the language I have actually used, it is by far the one I enjoyed the most, and the one that made me most productive.

However, Ocaml is not the end of it. I know of Haskell, and I sometimes resent Ocaml's value restriction, or lack of laziness. I know of Lisp, and I sometimes resent the complexity of Camlp4.

However, Haskell and Lisp are not the end of it. See, http://vpri.org/html/work/ifnct.htm and http://www.vpri.org/pdf/tr2011004_steps11.pdf showed that with the right tools, a few hundreds lines of code is sufficient to make a TCP stack, or a Cairo-like graphic system, or even a whole programming language stack that's more powerful than Lisp itself. When I see that, I know that I think Lisp, Haskell, Forth… are already obsolete. The market just doesn't know it yet.

However, COLAS and OMeta and Maru are probably not the end of it…

I primarily use c# but I dont know if it is my favorite because that is what I get paid to write code in or if its because I know C#, Objective-C, VB, SQL, and a bit of C++.

Of those languages, C# feels the most feature rich and easy to read, while I find working with the Cocoa framework and Objective-C particularly enjoyable. The others I work with but find no particular enjoyment from.

I chose Java, but hackers shouldn't have a language that is their "favorite". They should use all languages and pick that one that is best for the job. I realize this may be an unrealistic task, but I try my best to do it. While I probably the best at coding Java(Quickest, and get the most done in it), I don't always use it because its not the best language for the job.

> They should use all languages and pick that one that is best for the job.

That's certainly a correct answer, but it's correct because it's almost tautological. 'The language that I like the most is the one that's best [for what I want to do]'. The issue is that, in this question, 'favorite' is a bit vague, and the task isn't specified. (This is why I have a problem choosing 'favorites'.)

Despite that, in this situation, I interpret it to mean 'What [general-purpose] language has the best design?' Theoretically, a perfectly-designed language would be designed in such a way that it has an absolute advantage over all other languages for every type of task.

Given that definition, it follows naturally that I would choose Lisp - it's actually not my strongest language, but even a novice Lisper can see that Lisp is both as minimal as possible and yet as powerful as possible . Since it's a shapeshifter of sorts, it can adapt itself perfectly to any setting.

The drawbacks with Lisp (in my view) have nothing to do with the design of the language itself, but rather the environment. The libraries of languages like Perl and Python are much larger, by sheer fact that the community is larger. Lisp is cross-platform, but the installation (quicklisp aside) is still messier than Ruby's gem-based packaging or Python's eggs. And lastly, because most people don't learn functional programming as their first step, it's got a learning curve.

But none of those are problems with the language itself - at least not the design of the language. (I'm assuming here that we're dealing with high-level languages - it wouldn't really make sense to compare x86 assembly to Python - if you're writing assembly, you probably have a very good reason, and Python isn't even on the table).

So in the end, your answer to this all determines on how you interpret the question, so it's fun to see what the results are... just don't try and compare them directly - I think anybody who interpreted the question the way I did would probably choose Lisp, but it's clear from the comments that many other people interpret this a different way.

(Thankfully HN is good at avoiding flamewars, but I'm sure everyone here has seen enough useless 'debate' of this same topic on other forums to understand why I mention it!)

As someone who is just starting to learn to code, this is an interesting list, but I can't help but want more info. The "why" each language is preferred is missing. Obviously some of this is in the comments, but summarizing that text will take quite some time. I can't help but think additional related questions might provide greater context to each preference.

Coding in Ruby all day using Sublime Text 2 has been totally awesome for a little while now.

Debugging is not as slick as in Visual Studio-land but... that's what test coverage is for! (and it's super easy to do...)

Here, I wrote a class today which subclassed Delegator (https://gist.github.com/2305169) that will let you return a value from a function that looks like a typical single scalar value but actually has "hidden" attributes riding along with it. Smoke and mirrors :) This is the first time I used this class or the Delegate pattern for that matter. (I came at programming from a Psych major.)

Notice the test inline with the class definition itself at the bottom that is only run when the file itself is run (not when it's merely included by another file). A simple Command-B (for Build) in Sublime Text 2 and I get the tests passing in a split second and know I didn't break anything.

I would love to hear from the people who voted for Rexx explain what they are doing with Rexx - I am really curious.

A few years ago when working for a bank in Germany I had to learn Rexx but only for some extremely unsophisticated stuff - so I am asking: What are you doing with Rexx and what makes it your favorite programming language?

Does anyone here feel that all of these programming languages have their own flaws? I started programming 8 years ago (mostly as a hobby), and I feel like all these languages are missing something. That said, my "favourite" language is Haskell, but I don't really like it. I've only used Haskell since a year ago and there are still many concepts I have to master. Maybe my feelings will improve, but if they do it won't be by that much in absolute terms.

Emacs and Vim? Twenty years later and these are still the state of the art? Even when our computers are at least 1000 times more performant? I guess there are IDE's out there trying to do better, but in the end I'm still typing text into a computer, occasionally getting autocompletes that is exactly what I want, but usually its not.

Do I like programming? Yes I do, I like programming more than I hate the tools I have to use.

I am interesting in knowing at what time exactly would people think they have experienced enough language exposure to decide on the favorite one. Like, my favorite now is C, because thats the one I know best, and I cant say that this wont change, since I am learning Ruby and it rocks.

I voted for Clojure because so many of design decisions seem to be correct, but there's still plenty to complain about: unreadable stack traces. slow interpreter startup. meaningless function names in core.

I think I really want an immutable-data language that uses rubyish message-passing style.

My favorite language is not listed , it is LiveCode from http://www.runrev.com, it is an HyperCard on steroids. I am very productive with it and it is terribly fun to use. Besides that I like Lisp/Scheme =)

I kind of wanted to vote for groovy. It's pretty much what you get if Java and Ruby had a baby and is a pleasant language to work with. Truthfully though, I like a lot of the languages on that list so it's hard to pick just one as a favorite.

No Groovy? Seriously?!?? C'mon, man...

Anyway, put me down for "Groovy" at the moment, although it could potentially be knocked off that perch at some point. I have some other languages I'm interested in exploring but haven't gotten deeply into yet.

C# is great, it is even better with the vs.net, I found it is easier to express what I want to do in c# syntax. ASP.net is fine too, you can choose not to use the server control approach which I think is the bad part of asp.net

I'd be interested in hearing why anyone would choose Tcl.

I have to use it during the day, but use Ruby on my side-project. Tcl and it's lists (and lists-of-lists) is wicked painful - especially compared to my Ruby experience at this point.

My choice would be Go.

The beauty of Java is that is not ONLY a language, it´s three things:

1. A runtime environment 2. A software ecosystem 3. A language.


So you can use 1. and 2. without having to write a line of Java if you don´t like it. There´s plenty of languages that run on top of the Java virtual machine: JRuby, xRuby, Jython, NetRexx...

Even Lisp and Cobol if you want.


There´s a yearly summit about new languages ported to the JVM... http://openjdk.java.net/projects/mlvm/jvmlangsummit/

I do like Go a lot. It's not on the list yet.

The one I'm developing, duh.

These days, I'd have to say Smalltalk is my favorite. I think more modern languages are still catching up. Modern open source implementations like Squeak and Pharo make Smalltalk very accessible.

I like Python because I'm an inexperienced and infrequent programmer. While I took a few courses on programming (VB, Java), it wasn't til I discovered Python that I would actually code in my own time. All the boilerplate crap I had to deal with for Java was wiped away, and I could just write. I'm sure if I wrote more complex things, I could find better languages, but for simply getting things done and just jumping in and writing a few lines, Python just feels right.

Does that sound about right to those of you with more experience?

Give Ruby a try. You will be pleasantly surprised. I was.

The real beauty of Python is the fact that it is easy for beginning programmers, yes, but it has also a lot to offer for experienced coders concerning all the advanced things they might need.

It's no accident that services like Dropbox[1] or YouTube[2], both arguably very complex systems, are relying on Python as their language of choice.

[1] http://blip.tv/pycon-us-videos-2009-2010-2011/pycon-2011-how...

[2] https://www.youtube.com/watch?v=G-lGCC4KKok

None. I like Lisp but it has its problem. I don't like Java but it is useful and it has good tools and a ton of libraries. I like C, but it needs better libraries and it can be a little cumbersome to write. I don't like C++, but there are cases where one of its features are useful.

I hate PHP but it is easy to write a quick backend in which can be deployed everywhere. I hate Javascript, but it is hard to beat it in the browser.

I summary I don't have a favorite language, they all kinda suck and kinda don't. It all depends on what I need to use them for.

Sounds like you would like clojure.

No. I tried it but it fails in two ways:

1) all the libraries are it takes advantage of are written in Java and this doesn't fit the closure style of coding at all.

2) the available tools just suck. Sorry, but without autocompletion the time it takes to write something balloons way, way too high.

I guess 2 would have been less of an issue 20 years ago -- back then most of the IDEs that we use today did exist -- but it is not 20 years ago. It is now.

Totally agree with you on 1). I found Clojure uses Java libraries even for the most basic stuff, and that forced you into unLisp like code. That is acceptable for Java folk, but when you want to stay closer to Lisp, that's a problem.

There are many impressive Lisp dialects which aren't mentioned here like Mark Tarver's Shen programming language and John Stutts Kernel programming language, so I am just going to vote for Lisp which hopefully covers most of these dialects. I have been a Lisper for over a year.

I am not particularly impressed with most things which aren't Lisp based or which aren't at least functional. In particular, I am not impressed by Python. Admittedly, I am biased towards functional languages like Lisp because I am a mathematician.

The first thing I always check out when looking at a programming language is the debugger. Smalltalk's debugger is the most useful and fun because of the dynamism of the system as a whole.

Those days I feel (unless you write backends for Google or embedded sw) that "Python is all you need" (unfortunately - I wish I could work with more languages with equal productivity).

C still remains my favorite programming language. Though compared to modern languages it has fallen way behind, still nothing beats the simplicity of C.

With less theory to learn compared to other languages, the power of C lies in the implementation only. Just few simple ayntaxes combined with terrific logic can make some really powerful applications.

Also, maybe little bit nostalgic here, but it feels good to return to C every now and then just to make some highly logical program and challenge the logical side of my brain.

I love Ruby, but ultimately Python is my favorite.

Ruby is consistent and cool, but I can do everything I want with Python and I can make it FAST as hell.

Over the past week I've been moving some things into Cython and it has literally sped 200 times faster than Python which is 10 times faster than Ruby, and with a lot less memory overhead. Speed _does_ matter when the two languages are nearly the same in terms of development speed. Furthermore Python has more libraries and less wtf moments when looking at peoples code.

Perl becuase it does what I want.

Haskell because it makes me do what I ought to do.

Python for when I'm "thinking in code", or doing data analysis that's not too performance sensitive (NumPy). I probably enjoy Python the most.

Ruby for when I'm doing configuration management or occasional webdev.

Fortran for when I'm doing serious computation, C for when I'm trying to do something fast that isn't number-crunching. (Though I'm trying to learn Go for that.)

And a smattering of other languages (Perl, shell, Java, etc) for interacting with tools that speak those better than anything else.

I was under the impression that Python/Ruby were pretty much interchangeable. In what situations do you chose one over the other?

Well... they're both popular, dynamic, object-oriented programming languages with a clean syntax. But that doesn't make them interchangeable. ;-)

In general I find that Python is the easiest language for me to "think in", syntax-wise. It is almost pseudo-code in its simplicity, and I like that it has extremely powerful namespaces. It also seems to me that it's easier to write programs in Python which ignore object orientation in favor of a more functional style, than it is in Ruby. I'm slowly falling out of love with OOP, and Ruby loves its objects.

I also really like Python's libraries for numerical and scientific work. For whatever reason, Python took off in the scientific community, and it's got libraries like NumPy and SciPy which I haven't seen duplicated in Ruby. It's also easy to integrate with existing Fortran and C libraries... and if you've done much work with Fortran, you know that it might be blazing fast but it's not the most pleasant thing to work in. Much nicer to glue it together with Python. :-)

Where Ruby shines for me is in its libraries for server configuration and web development. I like Python's webdev libraries, but I still find it easier to work with Rails or Sinatra than with Django or Bottle. I also think that Chef is one of the best things ever for managing servers in a programmatic fashion, and for that you need Ruby.

The number of votes for Objective-C is really funny to me, because I've never talked with a fellow objc developer that would describe it as their favorite language. Apples platform may be their favorite platform to develop for, but I and everyone else begrudgingly uses objc to target it.

Granted, they have been adding some very useful features to the language over the past couple years that I rely heavily on, but I'd never go so far as to call it my favorite.

I like the message sending syntax of objective-c. At first it was so weird, but now I almost hate looking at anything else.

After awhile, I think most people even begin to appreciate it's verbosity. You can make it read like english pretty well.

Of course, I'm sure I wouldn't like Objective-C without Cocoa or I wouldn't like writing it on Windows.

I've never been able to get round the whole whitespace thing in Python and Ruby. I really like brackets and they've always been the strongest thing to signal where code starts and ends.

A minor correction: Ruby is not as whitespace dependent as Python. Ruby uses "end" to end blocks, not changed indentation. Whitespace matters though in other ways, for example newlines and in some places if there is a space or not.

I'm curious as to why D doesn't get more love. It's had a pretty rocky liftoff, but there's a lot to like there, regardless of your preferred programming paradigm.

I picked Python because I like Python the language.

I put up with the standard library, I'm not thrilled about there being so few decent cross-platform IDE's supporting Python, and module hell can drive me nuts, especially considering the fact that a minor version discrepancy means the module won't work (e.g., module built for 3.1 refusing to work on Python 3.2, although perhaps there's an incredibly simple solution to this which has evaded me thus far).

Mercury (http://www.mercury.csse.unimelb.edu.au/), a strongly-typed, fast, relative of Prolog.

I marked C#, Clojure and Javascript.

I use C# and Javascript at work, and enjoy both. (Not saying I enjoy .NET though, just the language.) I like the way C# is evolving towards functional programming and includes new paradigms while retaining the (ostensible) familiarity of Java and C.

Clojure is a great language and there is a great community around it. Here I am just a beginner, though, and it is not part of my everyday life. Hopefully it might change in the future.

I see Python leading in this poll. Two things that can be happening: 1. Python is going mainstream. 2. Programmers who are hackernews readers like Python more.

I moved from Java to Python, hopefully I will never have to go back. Writing in python is a pleasure. I do a lot of SQL too though I cant really say I like it.

Mesa and/or Modula3 was always a nice language to write in.

langs = list()

f = open('langs.txt', 'r') content = f.readline() while content != "": line = content.strip() if line != "": temp = {} parts = line.split(" ") if "points" not in parts: temp['title'] = parts[0]

		nextline = f.readline().strip()
		parts = nextline.split(" ")
		temp['score'] = parts[0]
		langs.append( temp )
	content = f.readline()
newlist = sorted(langs, key=lambda k: int(k['score'])) print newlist


[{'score': '6', 'title': 'Cobol'}, {'score': '6', 'title': 'Rexx'}, {'score': '7', 'title': 'Fortran'}, {'score': '8', 'title': 'Ada'}, {'score': '8', 'title': 'Pascal'}, {'score': '9', 'title': 'Groovy'}, {'score': '12', 'title': 'ColdFusion'}, {'score': '14', 'title': 'Delphi'}, {'score': '14', 'title': 'Tcl'}, {'score': '16', 'title': 'Shell'}, {'score': '18', 'title': 'Forth'}, {'score': '20', 'title': 'D'}, {'score': '23', 'title': 'Visual'}, {'score': '24', 'title': 'Smalltalk'}, {'score': '29', 'title': 'SQL'}, {'score': '30', 'title': 'Assembly'}, {'score': '31', 'title': 'OCaml'}, {'score': '32', 'title': 'Actionscript'}, {'score': '51', 'title': 'Lua'}, {'score': '57', 'title': 'Erlang'}, {'score': '74', 'title': 'Scheme'}, {'score': '92', 'title': 'Scala'}, {'score': '100', 'title': 'Other'}, {'score': '120', 'title': 'Perl'}, {'score': '123', 'title': 'Objective'}, {'score': '125', 'title': 'Lisp'}, {'score': '163', 'title': 'CoffeeScript'}, {'score': '187', 'title': 'Clojure'}, {'score': '192', 'title': 'C++'}, {'score': '194', 'title': 'Java'}, {'score': '205', 'title': 'Haskell'}, {'score': '235', 'title': 'PHP'}, {'score': '303', 'title': 'C#'}, {'score': '355', 'title': 'C'}, {'score': '515', 'title': 'JavaScript'}, {'score': '718', 'title': 'Ruby'}, {'score': '1133', 'title': 'Python'}] """


  Warning: file_get_contents(http://open.dapper.net/RunDapp?dappName=HNChart&v=1&applyToUrl=https%3A%2F%2Fnews.ycombinator.com%2Fitem%3Fid%3D3746692) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.1 503 Service Temporarily Unavailable in /home/content/c/a/l/callindia/html/hnvote/hncharts/chart/index.php on line 6
  Error fetching the Hacker News Poll.

I just broke down and got a login on HN because of this poll. I was astounded at the number of python votes. Mmmm -- I got a reg and also voted for python, but still... Why is this poll so lopsided? I would have guessed a murkier distribution, after all, we all have to write in at least 5-6 langs just to get along. Does HN simply attract pythonistas?

Here's my programming language usage history so far. (learned order)

1. DOS batch scripting (1994)

2. C (1996)

3. Bash (1998)

4. Pascal (2000)

5. PHP (2001)

6. Ruby (2002)

7. Javascript (2004)

8. Python (2005)

9. Ruby (2009-present)

Now I'm in love with Ruby more than ever, I turned it down several times during my college years in favor of Python, but finding Ruby is like finding your true love. I was in loved with her more than ever. I have gone through Python, and back to Ruby and I am much happier as a programmer. :-)

I like ruby with RubyMine IDE . They work fine on the server side apps (web and console). Havn't tried desktop apps and dont know if it is possible ( i know its possible with jruby and swing but no info for ruby it self). It has a good feeling and flexibility when you work with it. Good class library and gems are easy to fetch and install

How ironic is that when someone ask you to write a program that put some text ob screen and you are unfortunately using C#/Java or similar languages, your code comes out something as : public class main { public static void main(string[] args) { Console.WriteLine("Hello world"); } }

Which should have been just: (print "Hello world")

Top ten 24 hours later out of 11689 votes

    Python     2591  22.17%
    Ruby       1451  12.41%
    JavaScript 1182  10.11%
    C           817   6.99%
    C#          678   5.80%
    PHP         544   4.65%
    Java        460   3.94%
    Haskell     450   3.85%
    C++         449   3.84%
    Clojure     388   3.32%

My list:

1. Go 2. Python 3. Everything else

By voting for Scheme, I really mean Racket.

Can you add Go please?

My favorite language is the one I don't know yet and desperately want to master. Objective C, in my case.

It changes all the time, and all languages have their merits and drawbacks. But I'd say Rust for now.

We did something similar with the 40,000 code submissions made on CodeEval last year. Python was also the winner :)


Awk, C, Go, rc, Scheme.

Simple and conceptually-consistent languages that my simple mind can fully understand.

Python, because it lets me concentrate on what I want to do, and by default I think about algorithms in something that looks a lot like Python.


Clojure, because it's different and elegant.

Javascript/java/c++ because sometimes it needs to work in browser/use some library/be fast.

It's a fairly circumstantial question. If I had to pick one language for the rest of my life and could be asked to build all manner of applications, I'd pick Java. Otherwise it's ruby all the way - it's fun to work with, but has limits.

You really might enjoy Groovy. It's eerie how similar it is to Ruby and yet somehow it pulls off being nearly Java compatible at the source level (I know you won't believe that statement if you haven't tried it, at least I wouldn't). It really is a kind of 'have your cake and eat it too' kind of language.

SQL isn't really general purpose programming language, it's hard to call it `programming' language at all. It doesn't really feel comparable to the other ones.

Also Lisps could be merged into single entry since all shell languages are one.

Any Visual FoxPro refugees out there? It was the first language used for a serious project. It's still one of my favorites due to nostalgia. I do fire it up occasionally when I need a quick tool written for the office.

Got to be C/C++ because everything relies on it in some fashion. For example, interpreted languages almost always use a C/C++ built interpreter. It's also the most direct route to assembly which is the ONE....

Why have a single favorite language, use language as a tool to get the things done.But for the question sake I will say Java and Python, but if this questions come up next year, I will like to click few more...

Standard ML. The implementations and the standard library situation both need a lot of work, but the language itself is by far the cleanest and most practical very-high-level language I've encountered.

I'm surprised to see such a low number of Fortran programmers. Are we really at the brink of extinction or are people from science and engineering not interested in all this kool new (hacker) stuff?

That's cool question! It's like who is stronger Vandam, Chuck Norris or Stallone )) It will be great to include chart here - to illustrate all languages with more then 'N' points for example.

Its really a mix of erlang and python at this point. I love erlang for its error handling and concurrency performance. I love python for its easy to read factor, libraries, and simplicity.

I voted for Ruby and JavaScript because that's what I use. I've tried some Python/Django but it somehow didn't feel right. I guess it really comes down to your personal preferences.

Favorite != most used. Sometimes you're "forced" to use a language because "that's what the company use". For example, I use Java in my company, but I won't make it my favorite.

Groovy: Added two hours late and out of alphabetical order. Not the most popular language, but definitely a rising star. Too bad it's not getting a fair shake in this poll.

It depends what I'm trying to do.

The question is like asking a carpenter what their favorite tool is.

It'd be more enlightening to (somehow) ask what kinds of problems people apply each language to.

Depends on what you're doing, but favorite implies I enjoy it, which would have to be something that isn't used for work, which would be something Pd/Max for me.

If Coffeescript is on here, Moonscript should be added too: https://github.com/leafo/moonscript

Favorite language, not to be confused with a language I can practically use yet. I love and voted for Haskell but for now my weapon of choice is Python.

I think programmers have to choose best suited tools for solution considering existing requirements and constraints.

But giving an answer I'd like to vote for Go. :)

Hm... Maybe one of the reasons why replacement-for-C kind of languages don't quite take off is because people apparently still like C quite a lot.

I just wish I could downvote. I'm looking at you, PHP.

Have to admit that seeing PHP 2:1 over Lisp casts the HN audience in a much different light, though Haskell's fairly good showing is at least a little reassuring.

I prefer PHP to Lisp.

Go without a doubt.

F# and Dart should also be on this list considering they're the source of a lot of programming language innovation that's happening atm.

'None' is missing!

Perl 6.

Who are these masochists who are voting for C++?

people who prefer compiled to interpreted

I prefer compiled over interpreted...but I prefer almost anything over C++!

PHP is nice... but if I could improve it, I'd like it to be not quite so loosely typed. I would like to specify the datatypes.

Every now and then, someone comes up with ideas to "improve" PHP. Some of those ideas are actually quite good. The only problem is that PHP is about as obsessed with backwards compatibility as Windows is. Good luck getting the devs to accept a feature that will break scripts written in PHP 3. (Yes, that was a bit of an exaggeration, but libraries like phpass actually do claim to work in PHP 3, 4, and 5 without modification.)

My favorites:

- Ruby, because it's easy and straight forward with lot's of nice features

- Python, because... I don't know. I just enjoy writing Python code :)

I went with Shell since I am not even a programmer, more of a designer. Shell scripts helps me automate almost everything.

It is quite surprising to see that Ruby and Python are the most criticized and also the most popular languages on HN.

Do people like Actionscript? I've always felt like this language is only used when programmers have no other choice.

Out of all the languages I've used (C/C++/Perl/Javascript/Erlang/Objective-C/Ruby)

I like Perl the best and javascript+ruby the least.

That's really surprising to me. Whenever I tried Perl it always turned into a painful mess. When I started using Ruby I felt it was the best of Perl and the best of ... Smalltalk I suppose — and I never looked back.

Maybe I'm missing something about Perl?

Ruby looks nice.

You better follow the best practices for Perl and it is like the other scripting languages. Check the Modern Perl book.

My reason to prefer Perl is because it is fun and the culture is good. The business case for Perl is CPAN. E.g., check Moose and additions like http://search.cpan.org/~flora/MooseX-Declare-0.35/lib/MooseX...

No single language is the best for every situation. Know the tools and pick the right one for the problem at hand.

I guess I'm making a fool out of myself right now... but C# comes before C++ in the alphabetic sorting order ;-)

[Witty comment on the correlation of great software being written in the two most hated programming languages.]

AWK. When I get to use it, that is. It's not right for most problems, but when it is, it's a pleasure to use.

Are you referring to SQL the standard (which isn't a programming language), or to any enhanced flavour of it?

I think we need another thread of favorite scripting languages. Shell would have more than 15 points then.

It's slightly depressing when a poll about favorite languages has 30+ options and your choice isn't there :-(

+1 Groovy!

Love how much love CoffeeScript gets!

Most of these languages are not as good as my favourite language, Blub, apart from the Lisps.

How is Haskell almost as high as Java? I've never seen it in use anywhere, Java everywhere.

A lot of love for C#. I would have assumed that there would be a lot of C# / .NET bashing.

Surprised to see the poll includes coffee script amongst the list of these elite languages

I cannot understand why 180 people voted up PHP. It's the worth language I've ever tried.

Ruby and Lisp for me. A couple of years ago it would have been Python but not any more.

C# is my favorite language, too bad I can't use it since I work at a Linux shop.

I am verymuch surprised that there are over 2x JavaScript votes than Java or C++

Why isn't `awk` on this list?

Come on Hackernews! Is it hard to sort the list by number of voites?

People see to be confusing "favorite language" with "language i use".

i like the constructive conversations. when i first saw this i was afraid this might turn into which one is better in the comments. glad to see a mature crowd on HN,very informative =D

Ok, who are the five people that said "Cobol"? Show yourselves! :)


It's really fun to use; a bit like Python but with the benefit of static typing.

SQL is not really a programming language. PL/SQL is.

This proves that python is the best language.

Gotta be PHP! Half the web is built on it!

No Limbo? Dennis Ritchie will be let down.

The recent success of Python saddens me.

everyone stop upvoting python ! http://imgur.com/gtLOb

No love for Ladder Logic? sniff

What about Go?

I guess Bash would fit under Shell ?

Putting my vote on perl was important enough for me to finally create an account here after lurking for a year or so. Still on perl 5

Go is my current favorite language.

i dont have a favorite language, but i really enjoy to play around with BlitzMax and Monkey.

other: hypertalk http://www.runrev.com/

Max/MSP/Jitter. Dataflow 4 life.

Python, Never comes in your way.

How do I vote this polling crap down? Pointless and subjective and if this was stackoverflow, would be deleted.

Should SQL really be up there?

i really loved working on C# it's quite cool but for web RoR and PHP are best

WLanguage from PCSoft-France

+1 for Go.


No Go?

Where's R?

On my keyboard, it's between E and T, if you use a different layout, then I can't help you.

R is a delightful environment hobbled by a hideous language.

What? No love for Prolog?

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact