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 previous decade as a boring enterprise language. It took the release of Java 8 (2014) to renew community interest and the language started including much-needed improvements, releasing on a regular schedule. Java has maintained momentum by borrowing features from its more concise and expressive competitors and gaining innovations like GraalVM. While other JVM languages (e.g. Scala, Kotlin, Clojure) have attempted to displace it, they haven’t had much success.
- Go (2009) initially appeared as a vaguely systems-oriented language without an obvious application. 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 “Little Four,” a counterpart to the Big Four’s commercial, trend-driven, and utilitarian nature. The “Little Four” might not lead to a job or open-source fame, but it helps develop a deeper appreciation of software and keeps programming interesting. For me, the Little Four includes C, Lisp, shell, and a wildcard. C is a small yet powerful bridge between language and machine. Lisp is also small and powerful, connecting theory and application. Shell is a must for command line work, but it’s also useful for sketching out applications (sometimes faster than “real” languages). Finally, the wildcard is any interesting language outside of the Big Four, like Erlang, Prolog, Red, or Smalltalk.