Why I tried 50 programming languages

It’s around the year 2000. I enter the university library in Amsterdam where I just had started my studies. I smell the books and put my Compaq laptop on a table. Then I look around. No one else has a notebook. Everyone is writing or reading. There are multiple books beside them. They take notes with pen and paper.

A university library in 2020

My first lines

This was only 20 years ago. Computers and the internet were already commonplace then. However, they were not yet ubiquitous. Because of that we needed to take an obligatory course “Computer Skills”. To me, the course didn’t seem worthy at the university. We learned things like “How to write an MS Word document” or “How to browse the internet”.

I remember one assignment in particular: “Find the website of the Rijksmuseum”. I entered “www.rijksmuseum.nl" in the address bar of my browser. Finish. That’s why the teacher gave me a new assignment to create a simple website with HTML and JavaScript. This was the first introduction to programming.

Not all agree that HTML is programming

The basic(s)

During the rest of my studies, I did not do much with these acquired programming skills. However, at work I quickly had a second encounter with programming. The task that I needed to do, was to transform XML documents with XSLT. This programming language uses a declarative way of programming. In this programming paradigm you write how you want to accomplish something, instead of what you want to accomplish. The latter is much more common, so I felt I entered programming through the side door (again).

This changed when I wanted to automate repetitive tasks. For this I started scripting with AutoIt. This was a good choice, because it had a simple Basic-like syntax and an executable example for every available function. AutoIt allows you to automate stuff either by the dirty way (for example by simulating mouse clicks) or the neat way by for example calling an API.

Thus, the first three languages I learned, were JavaScript, XSLT and AutoIt. I wouldn’t say that these are the best languages, or the best language to learn programming, but they are so different from each other that I saw the strengths and weaknesses of each.

Java is also an island

With these basics I started to write bigger programs in the object-oriented language Java. At first, I had no clue about what object-orientated programming really was. I kept reading the theory around classes and objects and looked long at pictures like this:

It was as if I understood it somehow, but on the other hand I didn’t. And what was this main method all about:

public static void main(String args[]){System.out.println("Hello, World");}

Why couldn’t I just say println("Hello, World"). It seemed so complicated compared to JavaScript and Basic. But when my program grew I started to appreciate Java. The structure with classes makes it easier to enhance and keep the overview. The main method makes it clear what the starting point of the program is.

99 Bottles of beer

Now I knew a few programming paradigms. Object-orientated programming with Java, procedural programming with AutoIt, declarative with XSLT and event-driven and functional programming with JavaScript. This is I think the key to learn new languages. Once you understand the paradigm you can switch to other languages which use the same paradigm.

It’s like learning Italian and then Spanish. As they both belong to the same language group, it’s easy to get started. When you then switch to German or Russian things are much harder. Nein, danke. Once you know one language in the Germanic, Slavic and Romance language groups you can almost learn all European languages.

Thus, I wrote in languages like XSLT, Basic, JavaScript and Java, but I still had some questions:

  • Are there any better programming languages than these four?
  • What are the real differences and advantages of programming paradigms?
  • How to find out which languages can be used best for which kind of programs?
  • How to understand how programming languages evolve and what the future of programming will be?

I soon noticed that I didn’t bring me a lot to compare the syntax of all kinds of programming languages. I really needed to start programming in those languages.

Of course, I didn’t have the time to do courses and write extensive programs for a dozen of programming languages. I also didn’t want to become an expert in those languages. So I had a plan inspired by the website Rosetta Code and 99 bottles of Beer. These websites have a specific solution which is then written in as many programming languages as possible. Such solutions go a bit beyond the “hello world” languages. That’s when I decided to write one program in 50 languages.

50 ways to write a quiz

The program I made was a quiz program which read a CSV file with all the countries and their capitals. Then the user is randomly asked a capital for a country (or the other way around). The program must check if this was correct or not. At the end it gives a score from one to ten after ten questions.

Once this idea was settled, I started with a list of programming languages by type. Languages that were dominant in the past (like Pascal, FORTRAN or Cobol), or very popular now (like Java, C or Python) or were emerging (like Kotlin and Julia). This was the final list:

  1. AutoHotkey
  2. AWK
  3. Bash
  4. Basic (AutoIt)
  5. Batch
  6. C
  7. C++
  8. C#
  9. Ceylon
  10. Clojure
  11. Cobol
  12. D
  13. Dart
  14. Elixir
  15. Fortran
  16. Go
  17. Gosu
  18. Groovy
  19. Haskell
  20. Haxe
  21. IO
  22. Java
  23. Javascript
  24. Julia
  25. Kotlin
  26. Lisp
  27. Lua
  28. Nim
  29. ObjectScript
  30. OCaml
  31. Pascal
  32. Perl
  33. PHP
  34. Powershell
  35. Progress 4GL/OpenEdge ABL
  36. Prolog
  37. Python
  38. Racket
  39. Rebol
  40. Ruby
  41. Rust
  42. Scala
  43. Scheme
  44. Smalltalk
  45. Tcl
  46. Visual Basic
  47. Wolfram
  48. X10
  49. XSLT
  50. XTend

Today I would have put all of those programming on one of my GitHub accounts (1 and 2), but I didn’t have one at the time, so I wrote everything locally with a text editor.

Lessons learned

It took me around 3 months to finish. Finishing a program in a specific language really depended on the type of language. For example, I really had a hard time with Haskell, C and PROLOG, whether Kotlin, C# or Python took me just a couple of minutes. Here’s what I learned:

  • The initial setup (downloading, installing and compiling) often took the most time. Sometimes even longer than to write the quiz program. In this respect the cloud IDE’s and lambda editors in the cloud without setup are attractive.
  • There were languages you write very fast and other take much more time. It tends to be slower when the languages were more domain-specific. Even when they claimed to be for general purpose, every language had it use cases. Sometimes you can take “General Purpose” with a grain of salt and first look in what areas a language are used. Even when the Syntax is very general purpose like for example Kotlin it for example shines especially in Mobile Development.
  • Shifting programming paradigm is for sure the most difficult thing to do. When shifting to functional programming it took a little while before I got the hang of it (but I like it). With logic programming like PROLOG I struggled quite a bit. Still at the end I got it working with all languages.
  • Writing a real program gives you a good taste, but to really understand the ins and out of every language, you really need to be an expert. It helps when you are an expert in language in shift to another language in the same paradigm, but you can also make some silly mistakes (like a word in Italian means something different in Spanish).
  • When comparing older languages like C or Fortran with modern languages like Kotlin and Julia there is huge progress in syntax and constructions. When you want a pleasant experience one should really take something modern.
  • Emerging languages have also a downside. Limited documentation, code shares and articles on StackOverflow. A good ecosystem with IDE and API’s is what is so attractive about languages like Java, C# and Python.
  • All in all the popularity of languages does not simply come out of the blue. A very solid constructed language, well-defined syntax, fast compilation, lots of libraries, lots of samples and StackOverflow articles, an extensive ecosystem and big companies behind it. That’s why it’s so hard to beat established languages.

In any established language whether it is Java, C#, C++, JavaScript or Python it was easy to write (Except for C, it was very fast, but a little too low-level to my taste). In Python, it was even possible to write the quiz as a one-liner. No wonder a lot of universities use it for learning how to program.

My top 3

As a last note I want to point out three languages. With these three it was a pleasure to write the quiz:

  1. Kotlin

When I wrote the quiz, Kotlin was still in its earlier stages. It wasn’t as big as it is nowadays. I even get some help from Andrey Breslav, the lead designer of the language. My primary base was Java and going from Java to Kotlin was like changing my Volkswagen Beetle to an ID.3.

2. Elixir

Functional programming is often chosen with scalability in mind. This wasn’t an issue for my program, of course. But still I really liked functional programming. I must admit, I did have some issues writing in Haskell, but Erlang and Clojure were really nice. Elixir was the top functional language for me. It was fast to write and fast to run.

3. Julia

Julia felt like the concise syntax of Python with the performance of C. And the fun thing is you call Python and C libraries when you need them. It is very tolerant and intelligent in handling types. This is a true general purpose language. It is mostly placed in the field of data science, but I felt it could easily be used for machine learning, business applications or web backend.

Do we really need all those languages? Of course, why do you still ask?

Try it yourself:

--

--

--

Blogs on tech & society.

Love podcasts or audiobooks? Learn on the go with our new app.

Recommended from Medium

New Airdrop: Lord Santa Fe

#EdTech: How we designed a new login system for kids

A Simple Guide to Create Your First Flask Web App

Use Space Rather than Tabs

How to Setup and Configure Your Own GitLab Server on Ubuntu 20.04

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store
ski n

ski n

Blogs on tech & society.

More from Medium

The Worst Programming Habit

The Worst Programming Habit

Forthcoming Programming Languages

How should I make work fun?

A SOLID Foundation