Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Poll: Language Use
82 points by Xichekolas on Dec 5, 2009 | hide | past | favorite | 122 comments
I'm curious what languages you work in on a daily basis. I do not want this to turn into some kind of silly language flamewar, so please, none of that. Feel free to select however many you actually use. If you pick Other, please leave a comment.
Javascript
534 points
Python
440 points
Ruby
314 points
Java
277 points
C
264 points
PHP
233 points
C++
188 points
Other
177 points
C#
134 points
Perl
125 points
Clojure
76 points
Lisp
62 points
Haskell
55 points
Erlang
47 points
Scheme
43 points
Lua
30 points
Ocaml
20 points
Arc
11 points
Go
10 points
Smalltalk
9 points
Coldfusion
8 points
Fortran
6 points
D
4 points


Other: Objective-C (how could you forget? ;-)


Yup, same here. Although, I'll occasionally find myself spending days at a time using C within a project (IOKit (accessing, not writing drivers for), CoreFoundation and some other lower level functions such as kqueue).


same here. Use this every day.


The table at 20:55 UTC, sorted by points:

  Javascript	147 points
  Python	116 points
  Ruby		 81 points
  C		 72 points
  Java		 71 points
  PHP		 64 points
  C++		 44 points
  C#		 37 points
  Perl		 27 points
  Clojure	 26 points
  Haskell	 18 points
  Lisp		 18 points
  Scheme	 16 points
  Erlang	 11 points
  Lua		  7 points
  Ocaml		  7 points
  Coldfusion	  2 points
  Go		  2 points
  Arc		  1 point
  Fortran	  1 point
  Smalltalk	  1 point
  D		  0 points
  Other		 43 points
Mostly as I expected, but a couple of things surprise me: I thought perl would be closer to Python and PHP; I didn't think C# would get nearly so many votes; and I would never have guessed that Clojure would make the top 10.

I'm relieved to see that C narrowly beat Java for 4th place, but I'm a bit disappointed by the performance of Scheme, Erlang, and Arc -- even though I don't use them myself, I figured that more people here would.


Sometimes, our community makes us forget how marginal we are.


The Secret Weapon User Group never was a very large one.

It's a natural consequence.


    Javascript            372 (17.72%)
    Python                315 (15.01%)
    Ruby                  221 (10.53%)
    C                     191 (9.10%)
    Java                  182 (8.67%)
    PHP                   167 (7.96%)
    C++                   124 (5.91%)
    Other                 121 (5.76%)
    C#                     82 (3.91%)
    Perl                   70 (3.33%)
    Clojure                53 (2.53%)
    Lisp                   42 (2.00%)
    Haskell                37 (1.76%)
    Scheme                 34 (1.62%)
    Erlang                 31 (1.48%)
    Lua                    16 (0.76%)
    Ocaml                  11 (0.52%)
    Go                      7 (0.33%)
    Arc                     7 (0.33%)
    Fortran                 5 (0.24%)
    Smalltalk               5 (0.24%)
    Coldfusion              4 (0.19%)
    D                       2 (0.10%)
    2099 points over 23 options


In comparison against the TIOBE Programming Community Index for December 2009:

    Javascript            372 (17.72%)  [  3.515%]
    Python                315 (15.01%)  [  5.185%]
    Ruby                  221 (10.53%)  [  2.653%]
    C                     191 (9.10%)   [ 16.285%]
    Java                  182 (8.67%)   [ 17.061%]
    PHP                   167 (7.96%)   [  9.770%]
    C++                   124 (5.91%)   [  9.175%]
    Other                 121 (5.76%)    --
    C#                     82 (3.91%)   [  6.258%]
    Perl                   70 (3.33%)   [  2.692%]
    Clojure                53 (2.53%)   [  0.881% / 3?]
    Lisp                   42 (2.00%)   [  0.881% / 3?]
    Haskell                37 (1.76%)   [  0.190%]
    Scheme                 34 (1.62%)   [  0.881% / 3?]
    Erlang                 31 (1.48%)   [  0.277%]
    Lua                    16 (0.76%)   [  0.585%]
    Ocaml                  11 (0.52%)   [ < 0.15%]
    Go                      7 (0.33%)   [      ??]
    Arc                     7 (0.33%)   [ < 0.15%]
    Fortran                 5 (0.24%)   [  0.425%]
    Smalltalk               5 (0.24%)   [  0.150%]
    Coldfusion              4 (0.19%)   [      ??]
    D                       2 (0.10%)   [  0.587%]


I'm curious who works in Go on a daily basis at current stage of its development? For what kind of projects it is preferable to any other language at the moment?


The guys on the Go team probably do.


I would probably be using if if I had to write a high performance threaded application. Also if I had to do something in a low level language, I would choose GO over C now.


Other: Assembly (X86 and POWER mainly). Factor for some interactive exploratory tasks.


MATLAB ? It is extremely useful for machine learning hacking.


Also for engineering works like Vibrations and Control Systems


I'll second this. I have started to use MATLAB a lot as it is highly emphasized in my financial engineering program.


Not to mention matrix calculations, which I actually do on a daily basis (for solving PDEs).


Do you prefer MATLAB to Python + numpy + libsvm (for ML) ?


No way. Python/numpy/scipy FTW. (not an SVM guy)


Other: POSIX shell.


Also newer shells would be worth adding too: bash and zsh.


I currently teach a basic course in shell scripting at a university. I'm amazed that bash wasn't included! I don't know whether you'd include Make in there too, but I would - the two together still form the basis for the majority of software deployment in Linux, I reckon. Certainly all our research software uses these two technologies (still!)


Why would you want to mention bash in a course on shell scripting? All you'd do is produce more people writing gratuitously incompatible scripts.

I use bash as an interactive shell, but for scripts I can't imagine why anyone would want to use bash unless they simply didn't realize how non-standard it is.


It is the first time I hear that bash is non-standard.

For specialized tasks such as simple pipes, invoking a sequence of commands (for a more involved tasks I prefer Python) what else would you use other than your interactive shell?


what else would you use other than your interactive shell?

A POSIX shell. There is actually a --posix option to bash which makes it more closely approximate POSIX-standard behaviour, but last time I checked it wasn't perfect.


Bash isn't a standard shell. The Bourne shell (e.g. /bin/sh) is standard. There are Unices where bash isn't available (by default, or at all), and there's no reason to hardcode bash as the interpreter for a shell script unless you're using bash-specific extensions. (If you have to ask, you probably aren't.)

This is what's called a Linux-ism: "The Linux distro I use does it this way, so it must be the standard, right?" It's very annoying when porting things to BSD or elsewhere.


It depends whether you count standards as those decided by a committee, or those that people actually use. Sure, the various BSDs are quite active (and all have bash available through modern package management systems), but AIX, Solaris and HPUX are on the decline and have been for 10 years now.


Does it make sense to require bash as a dependency for a program that ignorantly hardcoded it in a two-line shell script in its test suite?

(I mean, I'd just patch it in the port, but it's annoying in the same way as people sending e-mail wrapped inside a Word file for no reason.)


Rational ignorance. The bash warnings about non-POSIX features have a reputation for being unreliable, so if I've only tested with bash (because I don't care enough to set up chroot) I shouldn't claim it works with any other shell.


No no no, I'm not saying it's testing a shell script, I'm talking about requiring bash for a script that literally says:

   #!/usr/local/bin/bash
   prog_name some_argument
Or, worse yet, programs that exec a command by using bash internally.


Well ... maybe using a shell to run a command worked differently in 1971. There's $IFS ... job control ...

Okay, yeah, there has never been a shell on which that wouldn't work. WTF bonus points for requring /usr/local/bin, which is almost certainly not where the OS maintainers package it.


The argument could be a filename. The filename could have a space in it. So yes, I'd use a shell that has $@ rather than $*, a settable IFS, etc.


Other: Actionscript 3


Looks to me like Javascript is going to take this as nearly everyone who codes it codes in something else as well. Just not the same something else...


I didn't post it to find a "winner" so much as to see what the trend was like. I expect javascript/ruby/python to be very well represented because they are common in web apps, and a lot of people here are working on web apps.


Other: Objective-J


Other: Tcl. Good language, somewhat underrated.


Ruby is Japanese Tcl. You should switch.


Other: Oracle PL/SQL on a daily basis at work.


Other: Scala


Other: VB.NET (yes, really), Actionscript


Hey, me too :)

Although it wouldn't have been my first choice (I was put on an already existing project), I came to like some parts of it.


I am using this more at my current job for a year and I still don't get used to the framework.


I'm sorry.


Other: R


More C than I expected (go us!). Would be interested in what the specific projects were using it.


Well, you know, I'm building this online backup system... :-)


I'm writing a compiler for OpenMP style parallelism on the Cell. My compiler produces C code.


Building a runtime for a new language designed for distributed computing.


Any further information? Very curious about that.


We're still at the early stages, but some prior work that we're starting with can be found here:

http://neilconway.org/docs/boom-20091023.pdf http://neilconway.org/docs/netdb2009_paxos.pdf

The basic idea is to write distributed systems in a high-level logic language; essentially, to treat writing a distributed algorithm as a distributed data management problem ("data" being the state of the computation).


Very interesting, the results are already impressive (hot stand by namenode). I've previously skimmed over the Declarative Networking paper (http://berkeley.intel-research.net/dgay/pubs/06-sigmod-overl...) after seeing an article about in a recent CACM.

Are there any plans to open source any of the work (either the JVM implementation, the C implementation or some of the products, e.g. hot-standby NN)?


Thanks! We basically open-source everything we do; the problem is committing the resources to support stuff and polish it into a usable product, which unfortunately doesn't always happen.

The Java-based implementation can be found here: https://svn.declarativity.com/lincoln/java/trunk/ . The old C++ implementation (P2) is https://svn.declarativity.com/p2/trunk/ .

We haven't been polishing the JOL/BoomFS work, because we're currently working on a brand-new language ("Bloom") that should be much more programmer-friendly; as part of that, I'm writing an efficient C-based dataflow engine. If you have any more questions, feel free to drop me an email.


In my case, network servers that need small-packet/high-throughput and extremely low latency (telephony stuff). Microprocessors too (AVR mostly) for various stuff.


Embedded and real time projects. Mostly industrial automation, instrumentation, communications stuff.

Surprised no one has listed Verilog or VHDL.


Are you doing Verilog? What are you building? If there was one thing in the universe I want to learn right now... HDL would be one of them.


Not yet--though I'd like to dream up a project/excuse at work to justify tooling up for it. (I've messed around with some basic FPGA and CPLD kits at home, but nothing in depth.) The gates per dollar ratio on even the low-end FPGAs is getting to be really exciting.


A new lightweight virtual machine that emphasizes high performance in distributed environments (HPC, cloud, etc)


Microcontroller stuff. Just made a mod to my Bluetooth temperature monitor side project.


Analysis code over a large data set for research in Hadronic physics.


in my case, replacing the critical loop in matlab code with something faster (first c on the cpu, then c/opencl on the gpu).


Operating System


Plan 9 OS



Woa, really ?! Please do tell more.



Hahaha .. so you've got the expert :)


Picked py, pl, c, but also other: http://ooc-lang.org/ (it's pretty interesting lately :) )


Other: Mumps. (Yes, really.)


Hasn't someone yet written a compiler that targets MUMPS from a nicer language? And if not, why not start on it yourself? Fun project, with very relieving results :)


My condolences.


I wonder if a more specific question, like, which language do you use the most on a weekly basis might produce more meaningful results. I get the sense that cross-language applications are becoming ever-more common.

We have code in C++, Java, Ruby, Perl, Python, Javascript and PHP, but there's a high concentration around the first three.


I work in vb.net everyday at work. Maybe my brain is melting, but I don't hate it nearly as much as I used to. My previous .net experience was c#, so I think I just had to retrain some habits out of my fingers.

Also, voted for python. Loving it for all my randoming glueing and bit moving needs on my windows machine at work.


When .NET was first introduced, my natural language choice was VB.NET since I was coming from the classic ASP/VBScript world. Over the past 5-6 years, I've introduced more C# into my projects and now I've migrated mostly to C# + ASP.NET MVC -- in addition to Flex, Ruby/Rails. VB is still a useful language since everything compiles to the CLR anyway, but now that C# 3.5 is bringing more "dynamic" features it's more attractive to me. Plus, the syntax is so close to javascript and actionscript that it's a little easier to switch back-and-forth within the same project.But VB has served me well over the years.


Yeah I definitely think there is value in a unifying algol-like syntax. Going between JS and VB.NET is easy on the brain.


It's interesting that scheme use is not far off being equal to Lisp use. In my case I learned lisp with scheme then decided to stick with it after I looked at CL and realised it would give me a big headeache.

I wonder what prompts others to stick with scheme.


A lot of my projects end up requiring C for speed or hardware access, but I prefer to prototype in Python. It basically ends up being that I spend less time in Python but get about 20 times done when I do. :)


Referring to prototyping. I mostly do them with Emacs Lisp. This may sound strange at first, but this allows me to focus on exploring the problem and takes away the pain of setting up an interface to test stuff when they are still fluid. The funniest part is that once I had to help with a tedious documentation merging task on a tight schedule. Due to extremely limited time constraints I made a half automatic elisp solution that became the standard tool to perform the task. It's still used and by people never exposed to Emacs before.


It's funny how prototype code can suddenly become production code. But maybe that is an emergent property caused by the power of the chosen language.


Other: sql


I do a large portion of my work in pure T-sql right now. Though I also use Python near daily and C# occasionally.


Other: Tcl


Not a daily basis, but most of my coding lately is in C++ for game design society at uni. In theory I also do php, as webmaster, but I tend to put that to one side more than I ought.


Other: Delphi.


Delphi and C for me - the Delphi compiler.


Knowing who you are, god speed you on that :)


To the other people who do ColdFusion stuff--are you doing new development, or maintaining legacy systems?

I do a mix of both, though I don't spend all day, every day doing CF.


Both also. I find it quick and easy to develop with.


Other: ARM assembler, (a variant of) BASIC, GAWK, Matlab.


Other - F#

I voted for Ocaml, which is a close cousin, but with all the libraries available, F# is really another kind of thing entirely.


Curious, what type things are you working on with F#? Are you in the finance space?


I have a startup in the real-time web space -- web applications, notifications, rich-client, and real-time content analysis.


VBA when employed to do financial modeling.


Other: assembly (M68k, ARM).


Scala


Pascal/Delphi Actionscript


Fortran and D, but no Cobol or Ada...


Other: COBOL.


Other: Groovy


+1


Other: PL/X, System Z Assembly


Interesting--what is PL/X used for these days? I worked briefly with what might be similar PL/5 which was a derivative of XPL for writing systems programs for the Sigma 5 series of computers.


As far as I know, the only place PL/X is still used is inside z/OS, though I could be wrong.


Is it an assembly-language replacement, like a high-level assembler?


Not really, I suppose I'd describe it as a low-level language like C, combined with syntax which would be familiar to anyone who has used REXX. You can do things like splits in python to refer to a subset of an array, and it has a single loop macro, which is similar to ALGOL68's 'for'. Also, it has dummy sections, which are kind of like structs, except they can be associated with a specific pointer. So, rather than saying 'Employee->name' to refer to the structs name field, you just say name, and it knows which pointer it is based off of. You can tie many of these pointers together and it will follow them automatically, which is very useful, although it can get confusing.

That said, it does have high-level-assembler features, like being able to directly declare and modify registers. Pl/X also features a way to directly insert assembly code using a GENERATE macro, in which you have to specifically declare which registers/variables are either modified or referenced.

All-in-all, it's not a bad language; I prefer it to C.


T-SQL almost daily at work.


No Forth?


Other: Ada


No Sawzall or Wasabi? ;-)


Other: Oracle PL/SQL


Other: Mathematica


Other: MATLAB, IDL


Other: Standard ML


Other: Squirrel


Other: Refal.


Other PL/SQL


Other: Haxe


Groovy?


Other: Ada


Other: boo


bash



+1 for newLISP :-) Current version rocks!




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

Search: