The Big Four languages
The Big Four pattern comes up in several industries: banking, accounting, even tech1. It seems to arise in mature markets after waves of consolidation. Perhaps it indicates an equilibrium, where the options cover sufficiently broad and distinct parts of the market. I wonder if software development has reached such an equilibrium.
Why these particular languages? I think it’s due to several developments that occurred over the last decade or so.
- Python’s ecosystem built on an existing server-side and scientific computing foundation with Flask (2010) and scikit-learn (2010), enabling rapid prototyping of applications. Utilities like pip (2011) and requests (2011) helped make package management and HTTP requests easy. With the release of TensorFlow (2015), Keras (2015), and PyTorch (2016), Python quickly became the default choice for machine learning.
- Java entered the decade as a dominant, though unsexy, enterprise language. It took the release of Java 8 (2014) to renew interest and the language started including much-needed improvements, releasing on a regular schedule.
- As for Go (2009), it initially appeared as a vaguely systems-oriented language without an obvious application, but it took Docker (2013) to establish Go as a viable language for infrastructure software. Terraform (2014) and Kubernetes (2015) helped further secure Go’s credibility and the language continued improving significantly while maintaining stability.
Thinking about the Big Four led me to consider whether there is a “Small Four,” a counterpart to the Big Four’s commercial, trend-driven, and utilitarian origins. Familiarity with the “Small Four” may not lead to a job or open-source notoriety, but it would help develop a deeper appreciation of software and keep programming interesting. From my point of view, the Small Four includes C, Lisp, shell, and a wildcard. C is a small yet powerful connector between language and machine. Lisp is also small and powerful, bridging the gap between theory and practice. Shell is a must for command line operations, but it’s also useful for sketching out applications (sometimes faster than “real” languages). Finally, the wildcard is any language outside of the Big Four that one finds interesting, like Erlang, Prolog, Red, or Smalltalk.
Big Tech typically includes Google, Amazon, Facebook, and Apple. Microsoft or Netflix are sometimes added to the list, but the GAFA core remains rather stable. ↩︎