Skip to main content

๐Ÿ“œ Computer Languages

Formalized sets of instructions and syntax rules intended to facilite building computer programs (applications).

Computer languages can be:

  • interpreted - code is evaluated and executed at the very moment computer reads it
  • compiled - computer transforms code into a form it understands, links it with external libraries and produces a binary blob that is then executed

Another classification of computer languages I like:

  • high-level - code is relatively easy to read, write and understand by human but it needs to be processed by a computer before it can be ran
  • low-level - code is more similar to a real code used by a computer - instead of operating on abstractions, it involves manual operations on memory structures and locations directly on computer chips. A side effect is that low-level code is not easy to read or write by hand

We usually call a language a programming language if a machine employing it can resolve any computational problem regardless of its complexity. We also call these languages Turing-complete, i.e. capable of creating so-called universal Turing machine. A Turing machine can resolve any problem regardless of the amount of effort needed to build one.

Additional remarksโ€‹

  • HTML is not a programming language. It's a format that represents certain data structure (usually a website) with a set of predefined syntax rules
  • certain elements of CSS can make it look like a Turing complete language, but the language itself is not 1
  • certain features of SQL make it undeniably Turing complete2 and hence it's considered a programming language

Languages I use productivelyโ€‹

Languages that are my usual my tool of choice for getting things done, mostly in a commercial setting. I also include subsets of existing languages because for an untrained eye they may look like a separate language.

  • JavaScript
  • TypeScript

Languages I'm familiar withโ€‹

Languages I'm capable of reading but I don't use them at the moment. I am capable of picking them up and use productively in short time. I may even have built things with them.

  • Python
  • Java

Languages I recognizeโ€‹

Languages I may have learnt from online tutorials, but I don't consider myself knowledgeable at them. I recognize their syntax when I see it. I consider them less familiar to me than ones mentioned above.

  • PHP
  • Ruby
  • SQL

Languages I used to knowโ€‹

Languages that, at some point, I was learning and building things with but I no longer use them in any capacity. I may still be able to recognize their syntax. Picking them up again would require effort or may not be possible at all.

  • Atari BASIC
  • C++
  • C#
  • Pascal

Languages I never usedโ€‹

Languages I never wrote a single line of but I recognize their names. I may not be able to recognize their syntax though.

  • assembly
  • Brainfuck
  • C
  • Cobol
  • F#
  • Fortran
  • Go
  • Haskell
  • Kotlin
  • Lisp
  • Objective-C
  • Rust
  • Swift
  • Perl