(Edit: So many people seem to be reading the first paragraph and completely missing the point so I’ll just say it very explicitly. Talking about a programming language dying is pointless. Now let’s get back to the interesting part of the question.)
Next, are we assuming that PHP was the best choice for making Facebook to begin with? I’d argue it was not. It was so much not, that they don’t *really* use PHP currently, instead having a custom dialect named Hack. PHP was simply the language that Zuck and the other initial engineers happened to be productive in at the time.
That being said, PHP was also not a terrible choice. PHP has a huge community which really emphasizes Rapid Application Development. That is key for a startup and it showed! Also, since PHP was originally just a rough collection of scripts, it makes it reasonably easy to drop down to a lower level of abstraction and code in C when you really need to optimize. This also, ended up being super important. But then again, these are all lessons that modern languages have learned and have been incorporating.
Finally, please forget the notion that social networks require anything special from a programming language. Most of the code will be very straightforward. Yes, there’s some complex areas such as potential friend-matching, but you’re likely solving those with dedicated software such as graph databases. Yes, you’ll need to carefully architect your system (software and hard) and be awesome at devops, but you’ll have to do that in any language. What you will need far more than the shiniest language, is good, experienced engineers.
Which brings me to the crux of the issue. The big appeal of PHP is that so many people already know it. You probably don’t want any of those people at your startup. You want people who know many languages, who have strong well-founded opinions. These people – with many, many exceptions – tend to not prefer PHP.
So. I’m sitting in the boardroom of my brand new barely-incorporated startup, eyeing the table piled high with VC cash and wondering what programming language to base my stack on. I start with the understanding that this is like #250 on the list of things that will determine my success or failure, and that it should really be a team decision.
But what’s the fun in that? So I survey my options for a language that has a solid community, one with excellent concurrency primitives, one that enables developers to drop down to a lower level of abstraction with ease, and most importantly – one that that best engineers that I know want to work with.
At the moment, that language is Elixir. It is based on the Beam VM and is a close cousin of Erlang which has proven itself over dozens of years in amazing systems. Just as important, it has captured a large chunk of the most exuberant of the Ruby and Node communities. This means the ecosystem – which was already quite decent – is rapidly filling out. Also, it’s benchmarks are just bananas. Yes, to some degree all benchmarks are nonsense but what Phoenix is doing really cannot be ignored.
Another good choice would be Go. Tons of the really good engineers are old-school C-heads and I can’t think of a single one that doesn’t prefer Go. Primarily a low level language, that can do most of the high level things and puts concurrency first. I don’t like some of the design decisions but high marks!
How about Clojure? Another great choice. Maybe a bit harder to find excited devs in, but as a direct descendant from LISP it tends to be incredibly powerful and expressive and the folks using it tend to be very very good.
A few notable mentions
- F# on the .Net framework or even its ever-present me-too, C#. Just if you go with latter, prepare to sift through a lot more resumes until you find The One.
- Scala does some impressive things. I haven’t been too crazy about it as it seems like a lamer F# but the JVM is also not my thing.
But also…it doesn’t matter all that much.
LUAN NGUYEN – LINPIZ.COM