๐ 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
Assorted linksโ
- https://www.programming-idioms.org/ - Programming Idioms in multiple languages