Programming Languages

Software Engineering 2389 views

Update Jul 27 2022

Meta, formerly known as Facebook, announced Rust is the latest addition to their list of supported server-side languages.

Company Languages
Meta Primary supported server-side languages: Hack, C++, Rust, Python
Specific use cases: Java, Erlang, Haskell, Go

Over the years, I've utilized several programming languages in my software solutions, systems, and deliverables. Here's a snap-shot:

ActionScript, Assembly, Awk, BASIC, BBx, C, C++, C#, Clojure, COBOL, CoffeeScript, Crystal, CSS, Delphi, Eiffel, Elixir, Elm, Erlang, F#, Go, Haskell, HTML, IronPython, IronRuby, J#, Java, JavaScript, JRuby, Julia, Jython, Logo, Lua, M, Objective-C, Octave, Pascal, Perl, PowerBuilder, Python, QuickBASIC, R, Rexx, Ruby, Rust, Scala, Shell, SQL, Swift, Visual Basic, Visual C++, VRML, WML, XSLT.

Contemplating my own programming language choices, it's compelling to compare myself to other well known companies. Below is a sample:

At Other Companies

Company Languages
Airbnb Ruby
Amazon Java, C++, Erlang, Perl, Ruby
Disqus Python
Dropbox Python, Go, Rust
Facebook Ocaml, PHP, Python, C++, Java, Lua, Erlang, D, Haskell
GitHub Ruby
Google C / C++, Go, Java, Python
LinkedIn Java, JRuby, JavaScript, Scala
Mozilla C / C++, JavaScript, Rust
Netflix Java, Groovy, Python, Ruby, Scala
PayPal JavaScript, Go, Python
Pinterest Python, Elixir
reddit Python
Salesforce Java, Scala
Twitter C++, Java, Scala, Ruby
Uber JavaScript, Python
Yahoo Erlang, JavaScript, PHP
JavaScriptPythonJavaC++RubyScalaErlangGoRustPHPCPerlOcamlLuaDHaskellJRubyGroovyElixir

The languages listed can be categorized into the following groups:

Static languages

C, C++, D, Go, Java, Haskell, Rust, Scala

Dynamic languages

Erlang, Elixir, Groovy, JavaScript, JRuby, Ocaml, Perl, PHP, Python, Ruby

Object-oriented languages

C++, D, Java, JRuby, Python, Ruby, Scala

Functional languages

Erlang, Elixir, Haskell, Ocaml

System languages

C, C++, Go, Rust

It is apparent that most companies utilize several programming languages. Some companies start out with one language and eventually migrate to another. For example, Twitter started out with Ruby but eventually migrated to Scala. Likewise, both Google and Dropbox moved from Python to Go. PayPal moved from Java to JavaScript and then to Python and Go. Pinterest moved from Java to Elixir.

Many companies adopt the “best tool for the job” philosophy. Facebook uses Haskell for Spam detection, D in lieu of C++, and Erlang for concurrency (Messenger Chat). Netflix allows developers to use their language of choice; this is alleviated by their Microservices architecture with REST interfaces.

Platform ServicesJavaPythonNode.jsRRoRGo

At Startups

Startups initially adopt programming languages geared towards developer productivity and agility. This is driven by the desire to release a minimum viable product as soon as possible. Typically, Ruby on Rails has been the dominating trend. In the last few years server-side JavaScript (Node.js) has become a favorite due to performance enhancements over Ruby on Rails.

Startups are also known for adopting more niche programming languages to solve specific problems they have. Functional programming languages such as Haskell and Erlang have seen an increase in use. As well has system languages like Google’s Go.

When a Startup becomes a success they usually spend time optimizing their products, sometimes migrating to programming languages known for more speed or concurrency.

Which Technologies Do Startups Use?

An Exploration of AngelList Data.

  1. JavaScript / Node.js
  2. Ruby / Ruby on Rails
  3. PHP
  4. Java
  5. Python / Django
  6. Scala
  7. Clojure / Haskell / Erlang
  8. C / C++
  9. Go
  10. Perl

Indexes

When considering programming languages in the wild, it is also helpful to review the various language indexes. These indexes reflect what is popular today, and reveal trends on tomorrow’s languages.

TIOBE Index for April 2016 The 9 Most In-Demand Programming Languages of 2016 Language Trends on GitHub
  1. Java
  2. C
  3. C++
  4. C#
  5. Python
  6. PHP
  7. JavaScript
  8. Perl
  9. Ruby
  10. Visual Basic .NET
  1. SQL
  2. Java
  3. JavaScript
  4. C#
  5. Python
  6. C++
  7. PHP
  8. IOS
  9. Ruby/Rails
  1. JavaScript
  2. Java
  3. Ruby
  4. PHP
  5. Python
  6. CSS
  7. C++
  8. C#
  9. C
  10. HTML

Conclusion

Most companies utilize several programming languages, and the languages they use evolve as the company’s needs change over time.

I’m a fan of using the “right tool for the job” and being agile. Many companies, such as Facebook and Netfilx operate this way. Companies like Amazon and Netflix also employ a Microservices architecture which exposes an internal API; obviating many of the concerns of a polyglot environment.

Related Articles

More on Microservices
  1. Microservices: a definition of this new architectural term
  2. Microservices in action, Part 1: Introduction to microservices
  3. From a monolith to microservices + REST: The evolution of LinkedIn's architecture
  4. Codemania 2015: Adrian Cockroft
  5. Migrating to Microservices by Adrian Cockroft (Part 1)
  6. Adopting Microservices at Netflix: Lessons for Architectural Design
  7. Adopting Microservices at Netflix: Lessons for Team and Process Design