Hacker News new | past | comments | ask | show | jobs | submit login
Poll: What programming language do you use for your app/startup?
80 points by raheemm on Oct 28, 2010 | hide | past | favorite | 118 comments
Just trying to understand the top choices here at HN. Please pick any/all languages that you are using at your startup/side-project/day-job/learning.

If you are using a framework, you can lump it into the respective language.

Javascript
733 points
Python
506 points
Ruby
429 points
PHP
346 points
Java
220 points
Other
189 points
C
159 points
C#
157 points
Objective C(iphone)
156 points
C++
122 points
Perl
94 points
Dot Net
68 points
Actionscript/Flash
62 points
F#
16 points



I'm suspicious about people who put too much importance into their language choice, maybe because I'm tempted to be one of them. You can love beautiful programs, or programs that get things done.

The former people tend to gravitate toward things like Haskell, which is very pure, conceptually beautiful, and feels like using the LHC to crack nuts. But hey, you're using LHC, great fun.

The latter will pick whatever ugly PHP framework is closest to the final product they want to ship. Most great startup ideas aren't very sophisticated algorithmically wise: existing mature libs in ugly languages beat writing/adapting everything in a cool one, although the latter is a lot more fun; an active and friendly online community, which is familiar with problems close to yours, beats having macros and first-class closures in your language; etc.

In theory people could love both beautiful things and getting things done, but in practice I find that the more strongly they feel about one side, the less they care about the other.

A corollary is that, in fun-to-use languages, everyone writes fun stuff rather than useful ones: frameworks, meta-programming stuff, continuation-based contraptions, etc. So you end up with a dozen half-baked neural network libs, but no decent (and _de facto_ standard) HTTPS client.

TL;DR: the overwhelming majority of startups are about social and economic hacking, not about software hacking. Over-focusing on the language issue is a clue that one hasn't come to terms with this sad truth.


Your characterization seems a bit too binary. When I have a choice I code in Python, because it seems to provide a really nice balance between beauty and practicality. It's an elegant, well-designed language that also has a rich, diverse, mature ecosystem of standard and third-party libraries and frameworks.


Agreed, Python hits a sweet spot, largely because GvR managed to maintain a strong anti-not-invent-here culture in the community.

Also agreed, I'm quite binary, if not caricatural, in my characterization. But it gets the point across, and I trust readers to put grains of salt wherever appropriate.

This being said, if like most projects, yours is more about reusing existing stuff than about writing software components that have never been released by anyone else before, and better-fitting components exist in PHP than in Python, You'll be better off writing ugly and not-fun PHP code. Some people can swallow this, others can't; the latters are probably better off not going the startup way.


I agree, Python is our language of choice as well. The logic we use is that it's in most/all of the cases the lesser of the two evils.

You can always argue "Oh! you are doing "that" use <said language> it's amazing and has that built in." However we find that Python focuses a lot on the programmer as well (white space etc...) and that was the tipping point.


While that is ultimately true, in the first days (especially pre-investment), the largest expense is programmer's salary, whether that is something you pay, or an opportunity you forego. Thus, getting to a fundable prototype twice as fast, or to a more robust system at the same time IS a factor.

Regardless of how much focus you put on it, it is usually the first "hard" decision everyone has to take in their tech-supported startup, and thus it gets a spotlight.


Agreed, salaries are the main expense; but not writing code goes faster than writing code in a productive language!

Unless you go to a completely unchartered territory (as e.g. Viaweb did), and there's no library to get you halfway done, you should pick the best library and just accept the language it happens to be written in.

Of course, a good language supported by a great community has better chances to have the best libraries. I'd even go further, and argue that "language goodness" should be defined by its ability to let great libraries and community emerge, rather than how fun and concise it is to code in it. This property is not entirely determined by the language's syntax, semantics, or even implementation, but it is what truly matters, what gets things done or not.


Other - Go (http://golang.org/)

I'm writing a high-performance webapp that requires some specific data-structures and algorithms to achieve the speed needed. I tried prototyping in RoR first, but even simple test requests ended up taking minutes to answer. Then I conveniently attended a guest lecture by Rob Pike on Go, and had one of those all to frequent "oh cool, gotta try that" moments. I must say I don't regret it one second though. Go is a surprisingly nice language for writing all kinds of things in. The features of the language combined with the rather extensive set of standard libraries, (IMHO) makes it ideal for high-perfomance webapps.

I tend to do these thing just as much to learn new things though. So I'm not saying it couldn't have been done in another language instead.


I like Go, it gives me the feeling of python in a compiled language (also goroutines are great)


You didn't list Erlang, Lua, Scheme, Common Lisp, OCaml, Prolog, or Haskell. (Also, loads of other languages, but I actually know people who use each of those.)

Also, adding options to a poll that's already in progress is going to skew the accuracy by quite a bit, but self-selecting polls aren't that scientifically rigorous anyway.


Those fall into the "other" category. As I write this, "Other" has 5.91% of the votes (52 / 880 votes)

Give the guy a break. You can't list every possible choice and based on these numbers, it doesn't look like very many people use the technologies you listed.

If we (generously) assume only half the users of those languages actually voted, that would change the "other" group to 104/932 = 11.16% which would edge out Java's 6.55% and PHP's 10.84%. It would still fall short of Ruby's 13.95%, Python's 15.13%, and Javascript's 20.71%

Check out this thread for people voting "other" http://news.ycombinator.com/item?id=1843229


I don't mean to be overly critical of the guy who posted the poll, these come up periodically and almost always have those issues.

IMHO, tracking the overlapping between them would be an interesting data point - Python and C, Python and Javascript, Ruby and Javascript, etc. At that point you've got a cartesian product of everything to track (in this format), though. It would probably be best to do the polling completely differently.

Also: "which language + which niche" would be good. This seems to be skewed toward web programming.


You are right - that's why I stopped adding any more languages after the first 30 mins since this could skew the newer languages lower.


I think as startups grow, they tend to end up with something of a frankenstein-ish mix of languages as they write bits that are well suited to each language. For us I ended up checking C++, Java, Javascript, Perl and Ruby, though we have little bits also in Python, Scala and PHP as well.

As a sidenote, we track which programming languages our webservices customers are using and I made a graph of such here:

http://blog.directededge.com/2010/05/30/what-programming-lan...


I find it a little surprising that you use both perl and ruby. Is it an issue of "one guy likes perl, another likes ruby", or are there things you find easier in one than the other, in both directions?

Or is ruby just there for your API and your internal stuff is perl?


I hadn't done web programming for about 8 years when we founded Directed Edge, and the last time I had Perl was still riding high. So the old stuff, and a lot of the maintenance scripts are in Perl. Ruby has, however, begun eating into the Perl usage.

I still find Perl a little better suited for straight text-processing tasks, not to mention that it's a lot faster than Ruby for such. It's tempting to say, "It doesn't matter." but when you're running tasks that process several gigs of text, the difference between waiting 5 minutes for a job to finish vs. 20 can impact overall productivity.


Makes sense.

I feel the same way about text processing. I have yet to see anything else that rips through text like perl does. Over the summer, I rewrote a powershell script in perl and got three orders of magnitude improvement (reliably), all in the constant factor. Powershell is probably the worst language for text processing (it encapsulates every line in an object before passing it between processes in the stream), but I still found this impressive.


Does the logic for these text-processing tasks change a lot and that's why you need a higher level language for them?


I do actually have a perl script that generates all the obnoxious boilerplate a rails application that does something slightly differen from what DHH likes requires, so I have no doubt that such a mix of languages may come to pass in other places, too.


Using both Ruby and Perl is nothing compared to the GHC Haskell compiler using Perl.


Clojure.

I'm working on a map maker for role playing games (http://geodeist.com). The Java interop is a pleasure. I don't have to worry about portability.

No framework because I couldn't find anything suitable.


I think that the languages used by people who voted for "Other" are the most interesting to see in this context.

Could you please post what language you're using in your project if you use a language that is not listed?

I use Erlang.


I spend a lot of time programming in Ada 83 in my day job. The software has to do with air traffic control. I also voted C, C++, Perl and Python. In my personal projects Python is the dominating language, but I also write a lot of shell scripts in both my personal projects and day job.


I use an in-house language and Lua at work, mostly Lua and C for my personal projects, and, after getting really into Erlang earlier this year, I've been learning the Erlang platform (OTP, etc).

I've dabbled in a lot of languages, but those seem to be the ones I've settled on lately.


Scala


Another vote for Scala (plus Ruby, R and Javascript).


and another for scala! What web frameworks, if any are you using?


Yep, some Scala at Bump, too.


My "other" was for clojure and sh.


Me too


PHP people seem to have an inferiority complex, always defending and rationalizing. Here's a secret for you guys, all the choices suck in one way or another.


I would like to share my favorite quote on programming languages, courtesy of #python on freenode:

"Being enlightened gentlemen, we split all programming languages into two groups, sucks and doesn't-suck and put all of them into the first group."


Using .NET (C#) at work as well as GWT (Java) and minor bits of JavaScript. We're also using FLEX (ActionScript) for some upcoming projects.

At home I have some unfinished projects in JavaScript (a Chrome Extension), Java (an Android app) and C# (a WP7 app). All my website side-projects at .NET (C#) as well, but I've been tinkering with .NET MVC a little bit too. I guess I'm just a fan of the Microsoft Stack or I don't want to switch because I'm unsure of my ability to juggle more server-side languages and .NET keeps me employed.

I voted accordingly.


Sorted by frequency:

At work: Java, Scala, Clojure, Python, Emacs Lisp[1], ad-hoc scripting in Perl and shell

At home: C, OCaml, C++, Scala, Java, Clojure, Scheme (mzscheme), Python, Perl, Emacs Lisp[1]

[1] I usually do (require 'cl) with emacs Lisp, does that count as cheating?

Dream environment (unconstrained by existing projects): C, OCaml (or Scala if there's need to be on JVM), Common Lisp or Clojure (can't make up my mind between Lisp-1 and Lisp-2), Perl (I like Python, but I don't see what problem it solves that Perl doesn't).

Considering adding Erlang to the mix (worked halfways through Joe Armstrong's book). Considering learning Haskell (although I am already familiar with Monads, ADTs, pattern matching - from OCaml and Scala - and semi-familiar with ideas behind type classes from Scala's higher-kindred types and OCaml's modules).


I like Python, but I don't see what problem it solves that Perl doesn't

I guess Python tries to be Perl with a cleaner, neater syntax.


I decided early on when I built Appleseed that I wanted it to be a commodity platform, so I went with a very basic LAMP stack. I'm even shying away from PHP 5.3 because so many hosts still don't support it.

It hasn't always been easy, but part of the way I see distributed open-source social networking catching on is by encouraging communities to set up their own social networks (churches, schools, niche communities, etc.), and the best way to make that happen is to make it as easy and streamlined as possible.

Overall, it hasn't been terrible. Once I built a solid MVC framework and plugged in some good libraries (I cannot say enough good things about simple_html_dom), I was able to forget about the language, and focus on the logic, which is where I'm happiest.


Where is Lisp? I think it would still be a popular choice.


I'm using PHP because it's quick, and I know it. After things (hopefully) get going, I hope to migrate over to Python + Django.


Not to be a jerk but once you get going. You wont end up switching to python+django. It'll stay php because you'll be focusing on other things like maintaining the existing code and adding functionality.

If you, at one point, want to go with python, i suggest doing that now.


Using what you know is smart. Planning to migrate a new language "just because" I would re-think. Rewriting an entire codebase is a TON of work. I'd either just go with PHP or go with Python.

If you really do think you will need to switch languages for some reason in the future, I'd make the switch now. It'll take a little more time up front but the long term benefit will be worth it.

Rewriting a codebase is something your customers can't see. It won't drive in more sales. It'll just take up time when you should be laser focused on adding features, pivoting if need be and driving bottom line growth.

If you do decide to go with Python, contact me if you need help or get stuck and I'll be more than happy to give you a hand. Also, consider using Pylons. It doesn't get the press that Django does, but it's very nice and is my Python framework of choice.


Recent projects have been in Python, but my current project is written in Go.


"Python where I can. C where I have to"


Seriously missing a lot of languages here. Where's Objective C? Visual Basic?


You should probably (if it's possible to edit) add Objective C for people doing iPhone development.

Also, Actionscript/ Flash might be nice to include since it would be interesting to see how its usage compares to Javascript.


Why just Obj-C for iPhone (or more accurately iOS) dev? What about Objective-C for Mac development?


There are far, far less startups doing Mac development than there are doing iPhone development.


Added. The nice alphabatization is lost now... oh well...


C++ (with Qt), QML, Javascript, HTML, CSS and Clojure. Bit of a random mix, but it is working pretty well for me.

My apps desktop GUI is done in QML (Qt declarative layer) with C++ extensions (custom widgets, performance sensitive aspects, things that QML does not yet support such as drag and drop). QML supports scripting in javascript to handle events. I also use Qt's WebKit widget to display HTML/CSS/JS content (both local and from the web) and Clojure for backend logic and server code. I use quite a number of Clojure libraries for a rich environment, including some distributed/clustering stuff. My C++ app embeds a JVM which can run Clojure locally, but I have it setup so you can connect to it running on a server too (I plan to let organisations run their own servers but also host servers myself for people to make use of, perhaps as part of a subscription). I'm trying to push as much of the GUI logic to QML/JS or HTML where I can and as much of the backend logic to Clojure, but there are bits that pretty much need to be done in C++ (eg due to interop with Qt/QML). I like writing Clojure code, so I try to do as much as I can with it. I dislike Javas GUI stuff though and love QML, so the GUI is stuck in Qt/QML :)

Not quite ready to give details of what the app does just yet, though at my current rate of development I should be soon.


Looks like Ruby users have most time on their hands to surf HN!


Nope, just got the work done faster.


Generators save a lot of time!


We still build in Coldfusion with core modules in Java. In its tag based days it was annoying but now that you can work in pure CFScript it's a lot cleaner.


CF here as well. Tried writing in CFScript over the years but got tired of having to go to tags for certain things. Will give it another shot when we upgrade to CF9 which has full support. We are moving some processes to another language (prob C# on database) for stability/performance reasons, and will probably consider alternatives for any big new projects.


It's nice to see that there are still some people out there that use (read: admit using) CF.

I personally use it as my primary language as well, and have successfully used it at every company I've worked for. I'll admit the tag based syntax is pretty ugly, but you can kick out some great apps with it.


ColdFusion here too.


I'd love to see a follow-up on this poll about which frameworks are used with each language. E.g. jQuery or prototype for JavaScript? Cake or Zend for PHP?


Other = Scala/Lift. Too different from Java to lump it into that general category.


I wish Javascript was split out into server-side (Node, etc.) vs client-side.


Well if you want you can also share in what programming lang you like to program - http://ilikeprogramming.com/ .

p.s. Ruby rocks p.p.s. It's obvious that JavaScript will get most of the points. Every one use it for the front-end.


We are solely Erlang from the data processing to the web front end. Wouldn't change it for a thing.


"Dot Net" is not a programming language - just as the JVM isn't.


I usually prototype visual things or web-frontend things in actionscript, standalone or back-end in java. But right now I'm working on a web-app in Haxe (targeting PHP)


We am using LuaTeX (99.5% Lua, rest TeX) on our sole product.


I have two projects. One's a framework and application in C, with some utilities for it in Ruby (plain, no frameworks). The other one is in Python just because I thought it'd be a good way to learn the language in depth.

At my day job, we're using C, with our tests in Python (using robotframework [1]) and testing frameworks in C++.

[1] http://code.google.com/p/robotframework/


Would have been more informative if Javascript was separated into client-side and server-side. It's obvious that everyone uses it on the client-side.


I use Haskell.


It is kind of difficult to add JS into this poll in my opinion. I think everyone will have to check js and something else, unless you are talking about using js for the backend as well as front-end. I can't imagine a startup/app that doesn't use js (at least one that is web based)


I marked off C, C++, python, and other (shell scripts) for rethinkdb though I'm not there right now. The code was in C++ but most of it would compile as C, and we wrote lots of benchmarks in some combination of python and shell scripts.

If I were to do my own startup, it'd probably be in clojure.


Glad I could vote for more than one.


Where's Groovy? :-(


We use PHP. I'm hoping to rebuild the backend in Clojure, which I am just learning. I wish we had built the whole site using Clojure, for the reasons Paul Graham mentions when he wrote Blub programmers. But I did not know Clojure when we started.


Our base language is PHP, but since we are working with teaching programming we are working with a lot more Javascript, Actionscript,C/C++, Java, and lately we have been testing/working with haxe.


Using haxe as well


Dot Net is not a language.


Yeah, I think is there to catch F#, VB.net and asp.net. But then, there should be a JVM option, where clojure and scala fits better than in other.


I'm astonished to see so few votes for perl. I mean, c'mon, the whole universe was hacked together with it:

http://xkcd.com/224/

C'mon... admit it: you use perl, don't you?


I used to use perl for a lot of little personal hacks, but ruby co-opted that role for me a couple of years ago.


I believe JavaScript and Python are the most popular choices here.


I am using PHP, Scala(Lift framework), Javascript and Adobe Flex


Use VB.NET at work, (consequently) playing with Clojure at home.


Interesting to see how everyone seems to be constantly picking on PHP, yet this poll shows that it's the second most used language used for our apps/startups.


This may be an "unpopular" view, but if you need a simple, no nonsense, well supported language, tailored for web use with no big gotchas and you are not facing any particularly exquisite engineering problems.... PHP is often a no brainer.

(it's kinda the Perl of web development)


It's third now and keep in mind that PHP is 3 times as old as the iPhone so you're dealing with momentum issues also. Most sites more than 5 years old are PHP and the switching costs are too high to leave the language.


We use Clojure, which is sadly missing from the list


Clojure


XSLT


Why do the contents of this list (and the conspicuous languages that are not there) give me such a downer?


We're using erlang + python pretty heavily, so I'll throw that in here, since erlang wasn't on the list.


We use PHP at work with a few Ruby scripts, and I'm using Ruby & Node.js for my personal project


You're alienating a lot of designers by excluding HTML from the list. ducks


Node.js ftw


RDML (Rapid Development & Maintenance Language), a 4GL which generates C.


Erlang.


Clojure.


T-SQL


Erlang


Ruby JavaScript Objective C (Mac) C# (Windows) Perl


my weapons of choice are Clojure, Ruby, Objective-C, but in this pool I voted Ruby just because is fun :) and do like to code for fun :)


No coffeescript option? What a shame....


Frontend: PHP/Drupal Custom Modules

Backend: Java/POJOs


c# for one, php for the other


SQL.


Scala


Haskell


PL/SQL


My condolences ;)

I had to do a lot of maintenance/enhancement work on an old PL/SQL app a few years ago. There were some interesting tricks in the language, but overall I was happy to escape it and move back to working in something a little more modern.


OCaml, C, Q, Matlab


C++, CUDA, Python


& NewLISP !


Add F# please


Added


PHP


I've fallen for Scala, and want to use one of the frameworks that support it.

Lift requires use of Maven or sbt, both of which are annoying tools. I don't want you to force me to download stuff from the net every time I start a project! With most frameworks, I should be able to download a package that I can put on a laptop, disconnect, and build projects in a vacuum. Lift doesn't allow me to do this... also XML :(


Once I got up and running with sbt, I really took to it. You only need to be concerned about the net when you add a dependency that you want it to resolve by fetching remotely. If you want alternative web frameworks, I think scalatra looks promising.


http://www.playframework.org/ supports Scala too.


I am looking into it and like its Grails-like setup, but its Scala documentation is outdated and I'm not sure how stable Scala support actually is... I will definitely keep an eye on it, and might even dig into the code a little.


You probably want to have a look at this:

http://github.com/guillaumebort/play-scala/blob/master/docum...

Also, when you can life with some Java code that actually isn't very Java like, you can try the normal approach and later enhance with Scala.

They use compile time extension and Groovy in views to get a lot of syntactical sugar going on.


Play may be Scala killer app IMO


The choice of language and framework often seems like a big one, but how often do people regret their decision? If you do, what was your choice and what's wrong with it?

I suspect most people don't care in the end.




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

Search: