Playing with language documentation to get an overview of similarities and differences

16 Sep 2019

I am on holiday for a week, so thought it would be fun using the time off to go down a bunch of research rabbit holes that I have been putting off in favour of 'more important' things over the last few months.

Every time I learn a new programming language, I catch myself explaining concepts to myself in terms of how they relate to concepts I have been exposed to in other languages. For example, the other day I was learning Kotlin whilst pair programming, and said 'oh val variables are like const variables in JavaScript. They stay constant and can't be changed'. If I had learned Kotlin first, I might have said 'oh const variables are like val variables in JavaScript, they are read-only'.

This is also probably why it's easier to learn each new language, because you won't be starting completely from scratch anymore. You'll will already have a baseline of concepts that you don't have to expend mental energy on learning, you can jump right to the things that you don't understand. Oh this is a lightbulb moment for me. Start with the basics, then when you know those solidly, make the next pass through and dive a little deeper. Cool.

The languages I'm going to quickly read about will include some languages I have exposure to, and some languages I have not touched before. Will list my reasons for picking the ones I have chosen below, just for transparency.

I'm going to start with master list of concepts for one language. Then when I start the documentation for the next language will create two lists, one for comman concepts and one for distinct concepts and so on until all of the 10 documentation sources listed above have been covered.

I'm expecting many of my assumptions below to be wrong, this is a surface level exploratory exercise.

Upate: I decided against merging them into similar and different concept lists. It's more interesting to keep the lists seperate.

JavaScript Concepts

Javascript is an object-oriented scripting language used to make webpages interactive. JavaScript contains a standard library of objects such as Array, Date and Math, and a core set of language elements like operators, control structures, and statements.

JavaScript Syntax

Ruby Concepts

Ruby is "an interpreted scripting language for quick and easy object-oriented programming".

Ruby Syntax

Java Concepts

Java is a general-purpose programming language that is class-based, object-oriented (although not a pure object-oriented language, as it contains primitive types.

Java Syntax

Pharo concepts

Pharo: an Immersive Object-Oriented System based on Smalltalk.

Pharo Syntax

This is something to come back to, pretty tired after doing this for four languages. Also much harder to identify similarities and consistencies as all of the documentation styles are wildly different from one another.