Hacker News new | past | comments | ask | show | jobs | submit login
Poll: What Language would/do you use to build a web application
91 points by codegeek on June 14, 2013 | hide | past | favorite | 92 comments
There are so many languages and frameworks now to build web applications. What do you use/prefer today ?

Please upvote the post itself to share with others.

EDIT: Added Javascript , haskell and Go little late. Sorry i m such a noob sometimes!!

Python
209 points
Ruby
171 points
PHP
105 points
Javascript (node.js etc)
73 points
Other
69 points
C#
40 points
Java
33 points
Clojure
32 points
Dart
25 points
Go
25 points
Scala
21 points
Haskell
17 points
Erlang
10 points
VB
1 point



JavaScript - I'd do the prototype in Meteor.js and then build it out for real with Node and a standalone front-end framework. Depending on the project, that framework might be backbone.js, ember.js or even bound.js plus other things I cobble together)

And there's no way I'll vote up a poll with ten options including Dart but not JavaScript.


Agreed. JavaScript is the top language on github by a margin (https://github.com/languages), and some of the other languages you listed aren't really intended for web apps naturally. I would add JavaScript post haste and probably kill off Dart and VB.


Yeah, I think in the HN community Node would be a much more common option than VB.


Why would build a prototype to only throw it away? This seem naive.


You need to go look up "prototype" ;)


1) Seeing things in action often clarifies my design.

2) You can build things really fast with Meteor.

3) After you know what you're doing you can develop the robust version much more quickly. This time savings is often significant.

4) Since Meteor is built on Node, you don't throw everything away. You can actually keep quite a few functions and nearly all your handlebars intact when you port to the final project.

I'm not saying working this way is for everyone, but it works well for me.


you and I have very different definitions of "prototype"


I think the prototype in this case is more to flesh out the idea and its associated functions, without concerns for code quality or security.

It would help a lot in building the road map for an application, but you definitely wouldn't want to use any of it in production.


Some frameworks are designed to help with this step though. For instance: Rails has scaffolds & generators, angular.js has directives (plain old html views you can open), html itself can be used for mock-ups (and there are plenty of others as well).

Specifically, why build a partially functional prototype only to throw it away for another framework down the road.

It seems naive to me, because the effort you put into the prototype is mostly dropped (except for high-level mental models). Rather then building a throw-away prototype, I think it's better idea to build a prototype you can refactor and improve, with one set of tools.


I am such a noob that forgot to add javascript. added now.


Python, using Django or Flask. Flask if I want to get it out fast, and Django if it's complex enough to justify the overhead.

I simply like how Python gets out of my way when I'm trying to write something. I have yet to find another language that does that for me as well as Python does.


I feel the same way... about Ruby. I'm always shocked at how often I can just guess how to do something, and it works. The language lets you do anything.

Whereas in Python, there's one way to do it, and it's a matter of looking it up the right way to do it.

Matter of personal preference, really. They're pretty much equivalent choices for a web app and one probably just should use whichever one is most comfortable with.


To be honest, I always felt the same way about both Ruby and Python, the level of intuitiveness seems the same to me.


Yeah, I totally get that. It's just that having learned Ruby first, when I try to write Python I type things that I think should work, but they're just the wrong syntax. Like, as a trivial example, I always try to push() on a List when I want to use it like a stack. List in Python has a pop() method but no push() method, what's up with that? I guess I just need to RTFM though.


you read my mind. was going to type exactly this.!!


This poll is very interesting to me for one reason - Python is winning the poll, yet I very rarely see/use any large web applications that are actually written in Python. I'm guessing this is partly because Python is increasing in popularity now, and the web applications being written in it haven't yet reached the wider public? Also, perhaps, a lot of small personal projects are done in Python yet don't scale out into the Gmail/Gdocs/Github style ubiquitous services?

The poll is also missing Javascript which is very strange, as it's probably still the most used language for the front end of web apps, and with Node it's probably used more regularly for the full stack, too. EDIT: Looks like Javascript was just edited into the poll now.


There are a ton of large web apps done in python. Youtube, disqus, bitbucket, The Onion, some mozilla properties, instagram are the examples that come to my mind. A simple google search would probably result in surfacing many more - see http://stackoverflow.com/questions/886221/does-django-scale


... how do you know what major web applications are written in? A lot of companies go to some length to obscure this.

Also, aren't a lot of rather big names into Python publicly? Disqus, Pinterest, Dropbox, Everbrite, SurveyMonkey.. There are just the ones I can remember talking about using Python.



Reddit uses Python as well


YouTube handles more traffic than all the sites you named combined.


That might be true, but do not forget it is a hybrid between Python and the C Family (C++?).


Don't quote me on this, but I think Python is more wildly used than Ruby as a language, but not on the web and it's popularity on the poll might have to do with Rails now falling off little since it's not the shiny new toy anymore.

Everyone seems to be all up in Python right now and I don't know why.


Is youtube large enough? There's a lecture[1] on slideshare that introduces Python in Youtube.

Another example is a Chinese SNS website Douban[2], which serves over 100 million users, and it's very active. [1] http://www.slideshare.net/didip/super-sizing-youtube-with-py... [2] http://douban.com


Let's not forget Dropbox


at the top of my head reddit and youtube are written in python...


Let's not forget reddit :]


Python here. I really enjoy working with it and recommend it often... I'd love to start using Clojure, which I keep false-starting on learning, but it's hard to find the time (which is a good indication it's just not as important to me as the other things I spend my time on; oh well).


Perl. Old and old-fashioned, but still good, and with a good community.


Perl should be listed here, I use Dancer 2.0 at work.


Try Ruby! It's like the best of Perl, without the rest of Perl! :P


Not sure if you are joking?


I know that some people really don't like JavaScript but seriously... Dart, but JavaScript not?


Unfortuntely, I don't see good alternatives for Java if it's a larger project.

C# - tied to MS stack. I know, there's Mono, but I'm somehow sceptical using it for a web app...

Python, Ruby, PHP - slow, much worse IDE support than Java.

Clojure - dynamic typing -> worse IDE support, less readable than Java.

Scala - slow compilation, overly complex and unelegant syntax.

Go - looks good, but sometimes feels too low-level - it's a systems programming language, it was created as a C++ replacement.

Dart - unfortunately the ecosystem isn't evolved yet, but this is how Java should look like. The only thing I don't like is optional typing.


If you hadn't identified yourself as a Java programmer, it would have been obvious by your high level of concern for IDEs.

Language like Python and Ruby don't have IDE support like Java does because they don't need them. I'm reminded of the post, "IDEs are a Language Smell": http://www.recursivity.com/blog/2012/10/28/ides-are-a-langua...

It's sometimes a bit disconcerting how strong a learned dependence Java programmers seem to have with IDEs.


>C# is tied to MS stack. I know, there's Mono, but I'm somehow sceptical using it for a web app...

I don't understand why the initial reaction to Mono is always skepticism. No one's first reaction to other open-source projects is instant skepticism...


It's possible that people commonly conflate their feelings towards Mono with their feelings about the general CLR/C# environment.

Not saying that's definitely the case here, but how many web-targeted projects exist for .NET/Mono? Obviously, there's ASP/MVC - but what else? Compared to the number of web frameworks/etc for Java? (I don't know.)

The anti-Microsoft sentiment seems strong among web devs. So, when new devs start out, they might read a lot about how if it comes from Microsoft - it can't be good. I am fairly certain that that is a strongly contributing factor to people's avoidance of it.


In regards to Go, why do you think it feels too low-level? Is it about library availability or is it more about the language itself?


From what I can remember (not all of these are about being too low level):

* Pointers, dereference, pass by value vs pass by reference

* Creating maps with "make" is weird, in Java I would just call a constructor

* I'm not a big fan of the type system, it somehow doesn't feel robust and full-featured. Making Go good for OOP definitely wasn't a priority.


Have you ever seen PyCharm http://www.jetbrains.com/pycharm/? I do feel it is a much better solution than what Eclipse has to offer.


No, but I'd be very surprised if it was better than Eclipse & Java, because Python is dynamically typed and generally less explicit (Java has access modifiers, standard annotations like @Override etc.).


Jeff Atwood Law: Any program that could be written in JavaScript will be written in JavaScript


Node.js. Surprised it's not on the list.


sorry forgot to add it. Just added.


No JavaScript option?


perl.... as an APP without a framework. Then i would plug that APP into a perl framework ie: Perl Catalyst. And if im not happy, i can change to Dancer or mojo And then JS for client side.


Yeah! App is web(-framework) agnostic. Easy testable. No fat controllers! Same app used from web, email, CLI, irc, you name it... Web framework is a glue, not a cage. :)


List needs Javascript (Node.js)


I used to do a lot of desktop development but for the past 4 or 5 years have mostly been doing web development. I'm quite fluent in Python, C#, Javascript, etc. I can't imagine doing a large project in Python, it feels hacky. It has a ton of great features like the "with" statement which is pretty cool but I still reach for C# and Asp.net MVC for large web projects. Maybe I'm missing something.


I scanned this multiple times...

Where is JavaScript???


Lua - I'm going to use it (using OpenResty) to build an API for a web application soon.


I'm building one in Haskell at the moment. I don't know that I'd go so far as to recommend it yet; the available libraries for web related work are fairly hit and miss IMHO. Some leave a lot to be desired, others are fantastic.


JavaScript.

And, why no JavaScript?


For small stuff CouchDB directly (with Jade as templating) or Smalltalk's Seaside, for larger stuff build for running the next decade Perl due to boring stability and backwards compatibility and least surprises.


Why, oh why is there no Lisp on the list? Here's to the weird ones.


Go :)


Why is VB included but not JS or Go?


RoR and some frontend nonsense in JavaScript.

You really ought to specify "What language do you develop your backend in?", as that's a bit more clear in your intent.


I'm pretty much a JavaScript guy, but lately I've been writing a lot of stuff with Ruby for work, so I might give a Rails a try, really depends on what we'd be building.

And while I'm commenting I might as well add at at this point if I wouldn't touch PHP or Java with a long stick. I can barely sleep at night when I think of all the people who still write Java on browser...


>I can barely sleep at night when I think of all the people who still write Java on browser...

You are probably talking about Java Applets. No one is writing web apps as Java Applets anymore (if you could even call something like that a web app). We're talking about real web apps, and a lot of companies are using Java to build them (e.g. Gmail and a lot of other Google Products, ...). Plus, the JVM is a great runtime for other (more dynamic, less verbose) languages like Scala or Groovy.


It very much depends on the application.

What is the size and scope of the project? What feature-set are we looking at? Anything realtime? Performance critical? Large team building components at the same time? Maintainability? Scale?

If you really must pick a one-language-fits-all (and i think this poll reflects this logic) it would have to be python.

So, choosing tool before job; python. But also, you would be an idiot.


javascript definitely needs to be in there!


Other: Haskell (Happstack framework)


Can you add C?

I prefer C for critical parts, reserve the option to use Python for stuff that Python is good at and use mostly Javascript in the front-end usnig a MD* Framework.

My clients mostly just ask for PHP though. That's my problem though, I need to find new clients.


PHP out of experience, but I can't say its necessarily "the best"


Definitely Java!


Arc. I've just finished adding scrypt password hashing to it, actually.


I'd go with what I'm better or what is better for the team skills... usually I stick with Ruby, Python or PHP.

I'd love to build something in Scala someday. :)


It absolutely depends on the scope and features of the application... the question would hold more meaning if it were more specific?


Scala. The Play! Framework offers some terrific features for asynchronous web applications, especially coupled with Akka.


Ruby: Sinatra/Rails, usually on top of Heroku or straight-up AWS. Usually a SQL-variant or MongoDB.


I have used Scala in conjunction with the Play Framework as of late. I am a fan of it.


Racket. Really enjoyed using it.


What, no love for Groovy?


Do we upvote Other to vote for Groovy, or Ruby? The only functional difference between the Groovy implementation and Ruby's many implementation is the alternate syntax, so really Groovy's implementation could be considered a dialect of Ruby.


Python, and to be more specific: Tornado.


Why is there no option for Node.js?


Node.js isnt a language.


I think mootools is pretty cool.


Javascript


everyone knows that hn users like python, so no surprises


Dart is the best !


Symfony2 ( PHP )


Smalltalk?


Perl


Python, because Python rocks! No, seriously, if you haven't tried Python, try it. It's getting better every year.


I almost made it through Coursera's python course. It's a really nice language but I still find the whitespace thing annoying. Also package management seems a bit lacking but I might just not be familiar enough with the ecosystem.


package management is best handled through PIP. Virtualenv for isolated environments.


I'd say Python handles package management better than just about anything else, period.

Regarding "whitespace"... best stick with PHP or Perl.


Go. Add it :)


Ruby + Rails because reinventing the wheel is painful and risky.


If you don't want to reinvent the wheel then you should be using PHP.




Join us for AI Startup School this June 16-17 in San Francisco!

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

Search: