100 programming languages in one post
Now that I've finished writing code in 100 different programming languages, here is a summary of the (mostly lesser-known) languages I used, along with links to my code and notes, unscientifically grouped into categories. (Obviously, some languages could fit into more than one category, but I decided to list each language only once.)
The languages I enjoyed the most were the following (in alphabetical order):
- 8080 assembly: the language of the first home computer kit, the Altair 8800
- Common Lisp: a pragmatic Lisp, with numerous compatible implementations
- Factor: a modern concatenative/stack-oriented language
- Futhark: data-parallel language that's easy to write
- J: open source array-oriented language
- Nim: honestly, the language I'm most excited to try again
- Piet: 2D, pixel-based, stack-oriented esoteric language
- Prolog: the most popular language for logic programming
- Rebol: a tiny but powerful scripting language that didn't quite catch on
- Tcl: a scripting language that is beautiful in its simplicity
- Turbo Pascal: the world's tiniest integrated development environment
- Unison: pioneering content-addressable code management/sharing
Now, without further ado, here is The List:
Array
| Language | Code | Notes |
|---|---|---|
| APL | p29.apl | notes |
| J | p4.ijs | notes |
| K (oK) | p53.k | notes |
| MATLAB (GNU Octave) | p59.m | notes |
Assembly
| Language | Code | Notes |
|---|---|---|
| 8080 assembly (Altair 8800) | p97.asm | notes |
| EXA (TEC Redshift) | p19.exa | notes |
| Uxntal | p28.tal | notes |
| WebAssembly (Text Format) | p14.wat | notes |
| x86 assembly (BIOS) | p26.asm | notes |
Block-based
| Language | Code | Notes |
|---|---|---|
| Scratch | p15.sb3 | notes |
Concatenative
| Language | Code | Notes |
|---|---|---|
| Blazin' Forth | p55.forth | notes |
| Factor | p30.factor | notes |
| Gforth | p5.fth | notes |
| Kitten | p83.ktn | notes |
| Min | p48.min | notes |
| PostScript | p24.ps | notes |
| Quackery | p90.qky | notes |
| RetroForth | p27.forth | notes |
Data-oriented
| Language | Code | Notes |
|---|---|---|
| Futhark | p94.fut | notes |
| WebGPU Shading Language | p12.wgsl | notes |
Declarative
| Language | Code | Notes |
|---|---|---|
| Prolog (SWI-Prolog) | p96.pro | notes |
| SQL (SQLite) | p8.sql | notes |
| XSLT | p9.xsl | notes |
Esoteric
| Language | Code | Notes |
|---|---|---|
| SIC-1 Assembly Language | p1.sic1 | notes |
| Piet | p34.png | notes |
| قلب | p39.qlb | notes |
| 文言 | p45.wy | notes |
Functional
| Language | Code | Notes |
|---|---|---|
| F# | p50.fs | notes |
| Haskell | p44.hs | notes |
| Hazel | p77.hazel | notes |
| Idris | p46.idr | notes |
| Pkl | p38.pkl | notes |
| PureScript | p64.purs | notes |
| Reason | p66.re | notes |
| Roc | p40.roc | notes |
| Standard ML (SOSML) | p6.sml | notes |
| Unison | p21.u | notes |
Hardware description
| Language | Code | Notes |
|---|---|---|
| Verilog | p17.v | notes |
| XOD | p18.xodball | notes |
Homoiconic
Lisp-inspired
| Language | Code | Notes |
|---|---|---|
| Cakelisp | p49.cake | notes |
| Clojure | p71.clj | notes |
| Common Lisp | p84.lisp | notes |
| fe | p25.fe | notes |
| Fennel | p61.fnl | notes |
| Hy | p63.hy | |
| Janet | p89.janet | notes |
| PreScheme | p81.scm | notes |
| Scheme | p57.scm | notes |
| SectorLISP | p2.lisp | notes |
| Shen | p79.shen | notes |
Rebol-inspired
| Language | Code | Notes |
|---|---|---|
| Boron | p42.b | notes |
| Rebol | p31.r | notes |
| Rye | p98.rye | notes |
Imperative
Scripting
| Language | Code | Notes |
|---|---|---|
| AWK | p13.awk | notes |
| Bash | p32.sh | notes |
| Cyber | p93.cy | notes |
| Erde | p62.erde | notes |
| Lil | p23.lil | notes |
| MoonScript | p60.moon | notes |
| Perl | p11.pl | notes |
| Raku | p73.raku | notes |
| Tcl | p22.tcl | |
| Wren | p37.wren | notes |
High-level
| Language | Code | Notes |
|---|---|---|
| Dylan | p88.dylan | notes |
| Haxe | p51.hx | notes |
| Julia | p33.jl | notes |
| Lobster | p87.lobster | notes |
| Nim | p47.nim | notes |
| Python | p80.py | notes |
| Ruby | p65.rb | notes |
| TypeScript (type system only) | p54.ts | notes |
| V | p86.v | notes |
| Vala | p74.vala | notes |
| Varyx | p95.vx | notes |
Low-level
| Language | Code | Notes |
|---|---|---|
| Ada | p78.adb | notes |
| AssemblyScript | p68.ts | notes |
| ATS | p91.dats | notes |
| Bend | p85.bend | notes |
| C (C99) | p70.c | notes |
| Hare | p36.ha | notes |
| LO | p82.lo | notes |
| MiniLang | p69.ml | notes |
| Nelua | p100.nelua | notes |
| Odin | p75.odin | notes |
| T3X/0 | p67.t | notes |
| wax | p41.wax | notes |
| Zig | p72.zig | notes |
Historical
| Language | Code | Notes |
|---|---|---|
| Amiga Basic | p52.bas | notes |
| BBC BASIC | p20.bas | notes |
| BCPL | p58.b | notes |
| COBOL-85 | p10.cbl | notes |
| Commodore BASIC (2.0) | p16.bas | notes |
| Fortran | p3.f90 | notes |
| G-Pascal | p56.pas | notes |
| Mouse-83 | p92.mou | notes |
| QBasic | p76.bas | notes |
| Rexx | p99.rex | notes |
| Turbo Pascal (7.0) | p35.pas | notes |
Object-oriented
| Language | Code | Notes |
|---|---|---|
| Self | p43.self | notes |
| Squeak (2.2) | p7.st | notes |