Hacker News new | past | comments | ask | show | jobs | submit login
Poll: What is Your Favorite Programming Language?
20 points by GreekOphion on March 23, 2012 | hide | past | favorite | 55 comments
These languages are only the most popular. If your favorite language is not listed please pick other and then comment below what it is.
Python
115 points
Ruby
68 points
JavaScript
61 points
C
37 points
PHP
32 points
C#
28 points
Perl
24 points
Java
23 points
Clojure
23 points
Lisp
16 points
Scheme
14 points
Haskell
12 points
C++
11 points
Erlang
11 points
OCaml
9 points
Other
9 points
Scala
8 points
Objective C
6 points
Lua
6 points
Shell
4 points
Assembly
3 points
Actionscript
3 points
Fortran
3 points
D
3 points
Visual Basic
2 points
Tcl
2 points
Smalltalk
2 points
ColdFusion
1 point
Forth
1 point
SQL
0 points
Delphi
0 points
Pascal
0 points
Ada
0 points
Cobol
0 points
Rexx
0 points



I think one of the biggest problems when you get into these debates about PHP vs Ruby/Python is that they are always comparing stock PHP with RoR or Django. When you compare Rails to Cake or one of the other highly popular frameworks out there for PHP then that language closes the gap. Yes, PHP still has issues, especially with function naming conventions, but it still fascinates me to no end to see PHP bashed mindlessly when if you compared it to the language without the framework you might see a different picture. Come on guys, wake up and smell the coffee. Every language has its own set of issue, and it has its own set of strengths. If it was about the best, we never would have moved passed languages like Perl and C, both of which I like. I know and use several languages, including PHP, and usually enjoy using each of them when I do.

Oh, and there are several really good (and cheap) hosting providers out there who support PHP, Ruby and Python all on the same setup with no additional charge.

PHP is easier to get into because you don't need a framework to do anything. Ruby and Python both require these, but to take PHP up to the same level as Ruby and Python when they are used with these frameworks, then you have to use a framework as well. At that point, 90% of peoples issues with the language are rendered moot.


As a self-taught programmer I used to hail PHP as God's gift to mankind until I recruited a team and attempted rapid deployments. The language is just poorly designed compared to Ruby and Python. In face it can encourage some really bad habits for soon-to-be engineers.

On a side note, Coffeescript is one of my fav for it's ease of fixing common bugs concerning global variables, semicolons and equality comparisons. But I am a little turned of by its overblown hype on simplied syntax by its fanboys. They need to realize that, sometimes typing function in JS is just as easy as typing -> in most IDEs.


Fell in love with Python the first time I saw it. Most of my projects are written in Python. It is simply elegant.

I really like CoffeeScript as well. (Javascript is a real pain to handle sometimes!)


The better you learn a certain PL the more you realize how it sucks. Eventually you realize that all languages suck. P.S. I mostly use python.


.. And that some of them you'd rather un-learn


You left off Clojure


I couldn't pick between C or Python as I use them both in different circumstances and adore both of them. Tis a shame I can't use either in my job - I'm a PHP developer by day and not a big fan of the language at all :-(


Go?


CoffeeScript?


Haters gonna hate, but I enjoy PHP. For those who say PHP is sloppy and lacks substance, that's because you write it that way. A lot of the complaints that people have are long gone: - lack of namespace: they exist -goto lines: no one forces you use them! -inconsistent function naming conventions: you choose the names... -magic quotes: no longer exist

My point is there are a lot of people who hate on PHP, but the majority of complaints are issues that you bring to the table. Regardless, I enjoy other languages too. I've been picking up on python recently and it's very enjoyable.


Sorry, but my primary complaints of PHP are in no way related to anything that I've "brought to it." These are all default behavior out of the box:

- Error messages that are often nowhere near where the problem is, and sometimes contain no stacktrace

- PHP-provided function names are inconsistent and follow no set convention, mostly because the language was built without Objects or Namespaces

- The arguments to PHP-provided functions are arbitrarily ordered (such as array manipulations, and string searching). I have to look them up every... single... time.

- Core features of basically every other popular dynamic language took years to arrive in PHP. Hell, it didn't even get a real shorthand array syntax until a few months ago.

- Backwards design decisions, such as having sort-related functions modify data structures in-place.

- Completely insecure on a default install. No directory traversal protection, combined with having urls map directly to on-system files, is a recipe for disaster.

- No isolation or easy support for simultaneous PHP working copies. If I want to work locally on 2 separate PHP projects, each requiring different PHP versions and different (often conflicting) libraries, I have to pollute my entire global workspace.

I could go on, but it's making my blood boil recalling the times I had to deal with this foul stain of a language. There is no reason for a self-respecting developer to ever choose it, especially when alternatives like Python or Ruby exist. Period.


There's still the problem of tutorials: There are tons of bad tutorials out there that teach people to write insecure, sloppy, and un-substantive code. The result is a plethora of bad PHP programmers who don't seem to understand seemingly simple concepts like global variables. And much of the practices that result from it are considered idiomatic.

Some of the error messages that PHP spits out are incomprehensible at best, and misleading at worst. Broken code quickly becomes a nightmare.

And frankly, the fact that Rasmus Lerdorf doesn't like programming shows pretty well in the language. His incompetence is all over its "design."


>Some of the error messages that PHP spits out are incomprehensible at best, and misleading at worst.

What languages (as a replacement for PHP) have better error messages?


Most of the people who hate on PHP are likely not programming the sort of application that PHP is used for. I generally ignore a .NET/Java/C++ developer crapping all over PHP.

Ruby/Python dev's I pay attention to on the other hand, if only because those two languages interest me. That said, where I am, PHP/Javascript is where the money is, so clearly they are my favorites!


Quite the contrary. I hate on PHP pretty hard... Because writing a PHP web application is my day job. My own complaints of the language (which others have already voiced) are problems that I run into frequently enough to have flown into a wild rage at the office on more than one occasion.

PHP was incompetently designed by an incompetent bunch of programmers. And it shows. And it attracts even more incompetent programmers who don't know better.


What do you mean by "you choose the names" with regard to PHP's inconsistent naming conventions? I think most of the upset is due to the standard array functions which can be either array_action($array, $arg) or array_action($arg, $array).


Why is it that php, despise of being the most used server side language, (almost) never receives any love (i have noticed it too many times to ignore) whereas python and ruby, despite of getting alot of love, doesn't show usage numbers. i have seen alot of big sites using php, Facebook is the biggest i can think of right now, but python (.py extension) or ruby (i don't know file extension) is not that common (or at least i don't see it). i don't know either ruby or python so there might be some bias in what i see, but i strong feel there isn't.


Because Python and Ruby sites are built properly, and don't expose their filenames as extensions in the url (.py or .rb). In fact, their urls don't even map to actual files to begin with, which immediately avoids several large security holes in PHP-built sites. With PHP you have to do some clever url rewriting and redirecting all your traffic through one central "index.php"-like script.

PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it. That's why you see it so much.


> PHP is the training wheels of the server-side language world. You can pick it up and almost immediately see results on any number of popular hosting providers that provide support out of the box for it.

yes that makes sense. But i wonder, does that imply python or ruby are more difficult to understand than php? I believe they must be on the same level of sophistication and understandability.

And if python, (or ruby) for example, was "better" (as in gets more developer love) then shouldn't it's availability on hosting services increase? Its not like either of php or python is new and needs time to settle down. If availability on hosting providers were to increase, it would have increased long ago.

and as for file extensions, as i noted in another comment in this thread, file extension is just a part of my observation. It also includes tutorials, how-tos, questions/answers on stack overflow-like sites, etc. all of these are more for php than any other language.


Again, because PHP has such a low barrier of entry, more developers use it. So it's only logical that you'd see more tutorials and questions for it.


can you elaborate a little on how does it have low barrier of entry? as my current understanding stands, python has all the basic things like loops, conditional, functions, variables etc just like php. What makes python difficult to start learning? (or if put another way: what makes php easier to start learning?)


The languages themselves are pretty equivalent. But with PHP it's easier for newbies to grok things when you can just point a web server at a directory that has a "blog.php" file in it, and visit "myserver.com/blog.php" to execute that script and see results. With python you have to understand the basics of what WSGI is and how it works, which is pretty poorly documented for people just starting web development. The "visit a file from my browser's address bar" motif is easier to grasp than "my url gets interpreted as a string that I then parse and route to a function imported from some other file".


That makes sense. thanks for clearing it up. I didn't know it was necessary to have url formatting to write python. but then its not a language problem. its a framework problem. And php can have its framework too. But I guess it doesn't matter if its a language problem or a framework problem when we choose our favourite language :)


it's not a problem. it's a solution to a problem.


>Because Python and Ruby sites are built properly.

Are you implying that there's not a single bad Python or Ruby programmer?You can dislike PHP all you want, but don't pretend that a website can't be written poorly using Python or Ruby. The programmer is the one who makes it after all, not the language.

>In fact, their urls don't even map to actual files to begin with.

I take it you've never looked into Cakephp.


No, I'm not implying that. Of course it's possible for a poorly written site to be built with Python or Ruby. But I've never seen a single one expose its implementation details through filename extensions, or map urls directly to files on disk: both things that PHP does by default.

Yes, I've used Cakephp. It's a slight improvement.


Because not everyone is writing code for the web. And because this poll is about your favorite language, not the language you use the most.


> And because this poll is about your favorite language, not the language you use the most.

yes, that's what i am wondering, why isn't php Favorited more often.

> Because not everyone is writing code for the web.

php can also be used for native stuff (IIRC). And both ruby and python are as suited for native development as php is.


That's because python and ruby sites do the right thing: a page is not a script, the url should not point to a "file" ("index.php" and such). When using python or ruby, most of the time you use frameworks that let you define your urls, and not just put a script and let the url point to it. Urls should be readable and easy to remember, they are directions for the user. Wich script is running on the server is an implementation detail that shouldn't be part of the user interaction, he doesn't need to tell you wich script to run.

"mysite.com/add_user" is waaaaay better than "mysite.com/add_user.php"

This is one of many bad things php encourages you to do... and that's why most good programmers don't like php, because it makes easy to do bad things.

Some big sites using python: youtube.com, addons.mozilla.org, dropbox.com, disqus.com, ...

Big sites using ruby: twitter.com, jango.com, ...


Yes that's a valid point. But that alone is not enough for php to be disregarded. Because one who wants to not have urls point to files on disk will change this behaviour. .htaccess makes it possible.

This is a security problem, i agree. But not a major security problem. Because if it were, sites like Facebook would have been exploited long ago. It's certainly possible to do things right way. Which brings us back to "its developer's fault and not language's".

to which what you said suits.

> most good programmers don't like php, because it makes easy to do bad things


The question is "what is your favorite language", not the language that is used the most, or the most easy to learn.

Of course there are good PHP developers and good PHP code, but the language itself it's weak, full of flaws and promotes bad design (PHP encourages the coupling of processing with presentation).

If PHP is your favorite language this is just a sign that you don't know other languages, not at a good level at least.


Python and Ruby based websites use routing frameworks, not isolated files, so you don't see extensions.

PHP has routing frameworks too (Kohana, CakePHP, etc), but plenty of (most?) sites don't use them.


File extension is just a part of my observation. It also includes tutorials, how-tos, questions/answers on stack overflow-like sites, etc. all of these are more for php than any other language.

example http://stackoverflow.com/questions/tagged/php

http://stackoverflow.com/questions/tagged/python

http://stackoverflow.com/questions/tagged/ruby-on-rails

the difference is huge.


Sure, I was just explaining that particular observation.

I'd say the difference is that PHP, due to being easier to get into - you don't need a framework, understand OOP, etc - is used both by amateurs and professionals, while Ruby and Python tend to be mostly used by the latter. Hence, you get vocal opposition in communities composed of such professionals, while others don't really care enough about the languages and the craft to participate in them.

(Note: nowhere did I criticize PHP or all PHP developers)


> due to being easier to get into - you don't need a framework, understand OOP

what kind of framework? i was seeing khan academy videos that teach python and they did not use any framework and the basic things were same as in php (conditionals, loops, function, etc), no OOP. OOP might be used for some advanced stuff but that stands true for php too.

Also a note from me too, i am not against python or ruby. They are great. I am just trying to make sense of what i observe daily.


You need a framework and OOP if you want to use Python for the web. Without them you can't really move beyond simple terminal programs.

The thing is that many people don't really want to learn to program: they do it as a way to accomplish other goal (in this case, create a website for some purpose). So they aren't likely to have the patience to learn in a structured way - often start by copy-pasting snippets and examples and learning as they need.

PHP fits right into that mindset; in fact, it was originally designed for that: as a set of tools for people who just wanted to add some small feature to their mostly static personal site. And even if it has added a lot of advanced stuff, that quick-and-dirty approach is still easy.


Python websites made with Django don't have a fixed extension for the urls. I expect it's the same with ruby and many other more advanced frameworks.



I use Python the most but Higher Order Perl changed my life. Voted for Perl.


I prefer to think of it as a toolbox -- the right tool for the right job.


No Erlang?


AliceML and Mozart/Oz.


CoffeeScript


Go


APL?


In 1982, when I was 10, I was in a personal computer club, run by a guy called Alan Pearman, who had his own company, APL. He ran the club from the back of his office, games, programming, ZX Spectrum, Commodore 64, Dragon 32, BBC Micro, Oric. He had his own machines that he programmed using APL. It just looked like line noise. I was in awe.


J? K? q?


SQL

Didn't realize SQL was an option too.


It shouldn't be since it's not a programming language (i.e., not Turing complete). http://en.wikipedia.org/wiki/Programming_language#Definition...


Are you sure it isn't? http://stackoverflow.com/a/7580013


python

Wondering how the points are assigned to each language.


Where's Go? :)


Groovy!


F#?


PL/SQL




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

Search: