One of my favorite tweets is by Ben Deane:
One of my favorite tweets. https://t.co/ToHq1coTqb
— Conor Hoekstra (@code_report) February 18, 2021
This tweet restates a point that Ben asserts in a blog post of his from 2007 called Six Languages Worth Knowing. The blog lists seven (6 + 1 that was added later) programming languages that he considers worth learning. Combining the tweet and the blog results in eight programming languages that represent different programming paradigms.
- ALGOL: (1958) The original imperative programming language
- Forth: (1970) The original stack-based programming language
- Lisp: (1958) The original Lisp
- Haskell: (1990) A pure functional language
- Smalltalk: (1972) The original object-oriented programming language
- Erlang: (1986) The original actor-based/concurrent programming language
- Prolog: (1972) The original logic programming language
- APL: (1966) The original array programming language
I think these eight programming languages can be considered Galaxy Brain Programming Languages.
I borrow the term “galaxy brain language” from a fantastic talk by Scott Wlaschin: Four Languages from Forty Years Ago.
This talk focuses on four programming languages: SQL, Prolog, ML and Smalltalk. They come from a list of programming languages that get introduced at then beginning of the talk that appeared between 1955 and 1980. Scott argues the following programming languages are all “galaxy brain” because they all did something novel at the time.
- FORTRAN (1957) - “first high-level language”
- LISP (1959) - “the perfect language”
- APL (1966) - “notation as an aid to thought, won a turing award”
- Simula 67 (1967) - “first language with classes, inheritance”
- FORTH (1970) - “first use of concatenative programming, read Thinking Forth”
- Prolog (1972) - “introduced new paradigm, logic pragramming”
- ML (1973) - “introduced new paradigm: functional programming”
- SQL (1974) - “introduced new paradigm: relational databases”
- Smalltalk (1976) - “interactice IDE, VM, GC, real OO”
Note that five (six if you count ML ~ Haskell), show up identically on each list (LISP, APL, Prolog, Forth & Smalltalk).
The point of this article:
If you are going to learn a second language, learn a programming language from a different paradigm.
I was motivated to write this article after watching a YouTube video entitled Programming Languages DON’T MATTER where the creator says at one point:
I have courses on … C, C++, Python, Java, Ruby, PHP, Dart, JavaScript, all these different languages … teaching these different languages, I’m literally doing the same thing.
You are “literally doing the same thing” because all of those langauges are from the same family, the ALGOL/C family (it could be argued Ruby is in the Smalltalk family). Learning Python or Java after learning C++ isn’t going to change the way you think about solving problems. However, learning Haskell or APL definitely will. Borrowing a quote that Ben Deane used in his article:
A language that doesn’t affect the way you think about programming, is not worth knowing – Alan Perlis.
So next time you choose to learn a new language - choose one that will teach you a new way to solve problems. And note, there are many “modern” languages in the less familiar paradigms. Elixir is a modern Erlang (+ Ruby). Clojure is a modern Lisp. Pharo is a modern Smalltalk. You can learn a modern language while exploring these different paradigms.
Feel free to leave a comment on the reddit thread.
If you enjoyed this article, feel free to check out the Algorithms + Data Structures = Programs Podcast episode on Galaxy Brain Programming Languages.