Poll: What programming language do you use for your app/startup?
If you are using a framework, you can lump it into the respective language.
If you are using a framework, you can lump it into the respective language.
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.
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.
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.
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.
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.
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.
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.
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
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.
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...
Or is ruby just there for your API and your internal stuff is perl?
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.
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.
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.
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've dabbled in a lot of languages, but those seem to be the ones I've settled on lately.
"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."
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.
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 guess Python tries to be Perl with a cleaner, neater syntax.
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.
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.
If you, at one point, want to go with python, i suggest doing that now.
Also, Actionscript/ Flash might be nice to include since it would be interesting to see how its usage compares to Javascript.
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.
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.
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.
At my day job, we're using C, with our tests in Python (using robotframework [1]) and testing frameworks in C++.
If I were to do my own startup, it'd probably be in clojure.
C'mon... admit it: you use perl, don't you?
(it's kinda the Perl of web development)
Backend: Java/POJOs
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.
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 :(
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.
I suspect most people don't care in the end.