This commit is contained in:
Miloslav Ciz 2024-08-06 22:19:44 +02:00
parent 793eff5870
commit 8dbbd1acb0
14 changed files with 1972 additions and 1867 deletions

View file

@ -112,48 +112,48 @@ Judging languages may further be complicated by the question of what the languag
Here is a table of notable programming languages in chronological order (keep in mind a language usually has several versions/standards/implementations, this is just an overview).
| language | minimalist/good? | since | speed | mem. | ~min. selfhos. impl. LOC |spec. (~no stdlib pages)| notes |
| ----------------------- | ---------------- | ----- | ------- | -------- | ------------------------ | ---------------------- | ----------------------------------------------------------------------- |
|"[assembly](assembly.md)"| **yes but...** | 1947? | | | | | NOT a single language, non-[portable](portability.md) |
| [Fortran](fortran.md) | **kind of** | 1957 | 1.95 (G)| 7.15 (G) | | 300, proprietary (ISO) | similar to Pascal, compiled, fast, was used by scientists a lot |
| [Lisp](list.md) | **yes** | 1958 | 3.29 (G)| 18 (G) | 100 (judg. by jmc lisp) | 1 | elegant, KISS, functional, many variants (Common Lisp, Closure, ...) |
| [Basic](basic.md) | kind of? | 1964 | | | | | mean both for beginners and professionals, probably efficient |
| [Forth](forth.md) | **yes** | 1970 | | | 100 (judg. by milliforth)| 1 | [stack](stack.md)-based, elegant, very KISS, interpreted and compiled |
| [Pascal](pascal.md) | **kind of** | 1970 | 5.26 (G)| 2.11 (G) | | 80, proprietary (ISO) | like "educational C", compiled, not so bad actually |
| **[C](c.md)** | **kind of** | 1972 | 1.0 | 1.0 | 10K? (judg. by chibicc) | 160, proprietary (ISO) | compiled, fastest, efficient, established, suckless, low-level, #1 lang.|
| [Prolog](prolog.md) | maybe? | 1972 | | | | | [logic](logic.md) paradigm, hard to learn/use |
|[Smalltalk](smalltalk.md)| **quite yes** | 1972 | 47 (G) | 41 (G) | | 40, proprietary (ANSI) | PURE (bearable kind of) [OOP](oop.md) language, pretty minimal |
| [C++](cpp.md) | no, bearable | 1982 | 1.18 (G)| 1.27 (G) | | 500, proprietary | bastard child of C, only adds [bloat](bloat.md) ([OOP](oop.md)), "games"|
| [Ada](ada.md) | ??? | 1983 | | | | | { No idea about this, sorry. ~drummyfish } |
| Object Pascal | no | 1986 | | | | | Pascal with OOP (like what C++ is to C), i.e. only adds bloat |
| Objective-C | probably not | 1986 | | | | | kind of C with Smalltalk-style "pure" objects? |
| [Oberon](oberon.md) | kind of? | 1987 | | | | | simplicity as goal, part of project Oberon |
| [Perl](perl.md) | rather not | 1987 | 77 (G) | 8.64 (G) | | | interpreted, focused on strings, has kinda cult following |
| [Bash](bash.md) | well | 1989 | | | | | Unix scripting shell, very ugly syntax, not so elegant but bearable |
| [Haskell](haskell.md) | **kind of** | 1990 | 5.02 (G)| 8.71 (G) | | 150, proprietary | [functional](functional.md), compiled, acceptable |
| [Python](python.md) | NO | 1991 | 45 (G) | 7.74 (G) | | 200? (p. lang. ref.) | interpreted, huge bloat, slow, lightweight OOP, artificial obsolescence |
| POSIX [shell](shell.md) | well, "kind of" | 1992 | | | | 50, proprietary (paid) | standardized (std 1003.2-1992) Unix shell, commonly e.g. [Bash](bash.md)|
|[Brainfuck](brainfuck.md)| **yes** | 1993 | | | 100 (judg. by dbfi) | 1 | extremely minimal (8 commands), hard to use, [esolang](esolang.md) |
| [FALSE](false.md) | **yes** | 1993 | | | | 1 | very small yet powerful, Forth-like, similar to Brainfuck |
| [Lua](lua.md) | **quite yes** | 1993 | 91 (G) | 5.17 (G) | 7K (LuaInLua) | 40, free | small, interpreted, mainly for scripting (used a lot in games) |
| [Java](java.md) | NO | 1995 | 2.75 (G)| 21.48 (G)| | 800, proprietary | forced [OOP](oop.md), "platform independent" (bytecode), slow, bloat |
| [JavaScript](js.md) | NO | 1995 | 8.30 (G)| 105 (G) | 50K (est. from QuickJS) | 500, proprietary? | interpreted, the [web](web.md) lang., bloated, classless [OOP](oop.md) |
| [PHP](php.md) | no | 1995 | 23 (G) | 6.73 (G) | | 120 (by Google), CC0 | server-side web lang., OOP |
| [Ruby](ruby.md) | no | 1995 | 122 (G) | 8.57 (G) | | | similar to Python |
| [C#](c_sharp.md) | NO | 2000 | 4.04 (G)| 26 (G) | | | proprietary (yes it is), extremely bad lang. owned by Micro$oft, AVOID |
| [D](d.md) | no | 2001 | | | | | some expansion/rework of C++? OOP, generics etcetc. |
| [Rust](rust.md) | NO! lol | 2006 | 1.64 (G)| 3.33 (G) | | 0 :D | extremely bad, slow, freedom issues, toxic community, no standard, AVOID|
| [Go](go.md) | **kind of** | 2009 | 4.71 (G)| 5.20 (G) | | 130, proprietary? | "successor to C" but not well executed, bearable but rather avoid |
| [LIL](lil.md) | **yes** | 2010? | | | | | not known too much but nice, "everything's a string" |
| [uxntal](uxn.md) | **yes** but SJW | 2021 | | | 400 (official) | 2? (est.), proprietary | assembly lang. for a minimalist virtual machine, PROPRIETARY SPEC. |
| **[comun](comun.md)** | **yes** | 2022 | | | < 3K? | 2, CC0 | "official" [LRS](lrs.md) language, WIP, similar to Forth |
| language | minimalist/good? | since | speed | mem. | ~min. selfhos. impl. LOC |DT LOC|spec. (~no stdlib pages)| notes |
| ----------------------- | ---------------- | ----- | ------- | -------- | ------------------------ | ---- | ---------------------- | ----------------------------------------------------------------------- |
|"[assembly](assembly.md)"| **yes but...** | 1947? | | | | | | NOT a single language, non-[portable](portability.md) |
| [Fortran](fortran.md) | **kind of** | 1957 | 1.95 (G)| 7.15 (G) | | | 300, proprietary (ISO) | similar to Pascal, compiled, fast, was used by scientists a lot |
| [Lisp](list.md) | **yes** | 1958 | 3.29 (G)| 18 (G) | 100 (judg. by jmc lisp) | | 1? | elegant, KISS, functional, many variants (Common Lisp, Closure, ...) |
| [Basic](basic.md) | kind of? | 1964 | | | | | | mean both for beginners and professionals, probably efficient |
| [Forth](forth.md) | **yes** | 1970 | | | 100 (judg. by milliforth)| 74 | 200 (ANS Forth) | [stack](stack.md)-based, elegant, very KISS, interpreted and compiled |
| [Pascal](pascal.md) | **kind of** | 1970 | 5.26 (G)| 2.11 (G) | | | 80, proprietary (ISO) | like "educational C", compiled, not so bad actually |
| **[C](c.md)** | **kind of** | 1972 | 1.0 | 1.0 | 10K? (judg. by chibicc) | 49 | 160, proprietary (ISO) | compiled, fastest, efficient, established, suckless, low-level, #1 lang.|
| [Prolog](prolog.md) | maybe? | 1972 | | | | | | [logic](logic.md) paradigm, hard to learn/use |
|[Smalltalk](smalltalk.md)| **quite yes** | 1972 | 47 (G) | 41 (G) | | | 40, proprietary (ANSI) | PURE (bearable kind of) [OOP](oop.md) language, pretty minimal |
| [C++](cpp.md) | no, bearable | 1982 | 1.18 (G)| 1.27 (G) | | | 500, proprietary | bastard child of C, only adds [bloat](bloat.md) ([OOP](oop.md)), "games"|
| [Ada](ada.md) | ??? | 1983 | | | | | | { No idea about this, sorry. ~drummyfish } |
| Object Pascal | no | 1986 | | | | | | Pascal with OOP (like what C++ is to C), i.e. only adds bloat |
| Objective-C | probably not | 1986 | | | | | | kind of C with Smalltalk-style "pure" objects? |
| [Oberon](oberon.md) | kind of? | 1987 | | | | | | simplicity as goal, part of project Oberon |
| [Perl](perl.md) | rather not | 1987 | 77 (G) | 8.64 (G) | | | | interpreted, focused on strings, has kinda cult following |
| [Bash](bash.md) | well | 1989 | | | | | | Unix scripting shell, very ugly syntax, not so elegant but bearable |
| [Haskell](haskell.md) | **kind of** | 1990 | 5.02 (G)| 8.71 (G) | | | 150, proprietary | [functional](functional.md), compiled, acceptable |
| [Python](python.md) | NO | 1991 | 45 (G) | 7.74 (G) | | | 200? (p. lang. ref.) | interpreted, huge bloat, slow, lightweight OOP, artificial obsolescence |
| POSIX [shell](shell.md) | well, "kind of" | 1992 | | | | 32 | 50, proprietary (paid) | standardized (std 1003.2-1992) Unix shell, commonly e.g. [Bash](bash.md)|
|[Brainfuck](brainfuck.md)| **yes** | 1993 | | | 100 (judg. by dbfi) | | 1 | extremely minimal (8 commands), hard to use, [esolang](esolang.md) |
| [FALSE](false.md) | **yes** | 1993 | | | | | 1 | very small yet powerful, Forth-like, similar to Brainfuck |
| [Lua](lua.md) | **quite yes** | 1993 | 91 (G) | 5.17 (G) | 7K (LuaInLua) | | 40, free | small, interpreted, mainly for scripting (used a lot in games) |
| [Java](java.md) | NO | 1995 | 2.75 (G)| 21.48 (G)| | | 800, proprietary | forced [OOP](oop.md), "platform independent" (bytecode), slow, bloat |
| [JavaScript](js.md) | NO | 1995 | 8.30 (G)| 105 (G) | 50K (est. from QuickJS) | 34 | 500, proprietary? | interpreted, the [web](web.md) lang., bloated, classless [OOP](oop.md) |
| [PHP](php.md) | no | 1995 | 23 (G) | 6.73 (G) | | | 120 (by Google), CC0 | server-side web lang., OOP |
| [Ruby](ruby.md) | no | 1995 | 122 (G) | 8.57 (G) | | | | similar to Python |
| [C#](c_sharp.md) | NO | 2000 | 4.04 (G)| 26 (G) | | | | proprietary (yes it is), extremely bad lang. owned by Micro$oft, AVOID |
| [D](d.md) | no | 2001 | | | | | | some expansion/rework of C++? OOP, generics etcetc. |
| [Rust](rust.md) | NO! lol | 2006 | 1.64 (G)| 3.33 (G) | | | 0 :D | extremely bad, slow, freedom issues, toxic community, no standard, AVOID|
| [Go](go.md) | **kind of** | 2009 | 4.71 (G)| 5.20 (G) | | | 130, proprietary? | "successor to C" but not well executed, bearable but rather avoid |
| [LIL](lil.md) | **yes** | 2010? | | | | | | not known too much but nice, "everything's a string" |
| [uxntal](uxn.md) | **yes** but SJW | 2021 | | | 400 (official) | | 2? (est.), proprietary | assembly lang. for a minimalist virtual machine, PROPRIETARY SPEC. |
| **[comun](comun.md)** | **yes** | 2022 | | | 4K | 76 | 2, CC0 | "official" [LRS](lrs.md) language, WIP, similar to Forth |
NOTE on performance data: the `speed`/`mem.` column says a benchmarked estimate running time/memory consumption of the best case (best compiler, best run, ...) relateive to C (i.e. "how many times the language is worse than C"). The data may come from various sources, for example the *[The Computer Language Benchmark Game](https://sschakraborty.github.io/benchmark/task-descriptions.html)* (G), own measurement (O) etc.
NOTE on implementation size: this is just very rough estimate based on the smallest implementation found, sometimes guessed and rounded to some near value (for example finding a small implementation whose main goal isn't small size we may conclude it could be written yet a bit smaller).
TODO: add "relative speed" column, make some kinda benchmark program and say how many times each languages is slower than C
NOTES on the table above:
- performance data: the `speed`/`mem.` column says a benchmarked estimate running time/memory consumption of the best case (best compiler, best run, ...) relateive to C (i.e. "how many times the language is worse than C"). The data may come from various sources, for example the *[The Computer Language Benchmark Game](https://sschakraborty.github.io/benchmark/task-descriptions.html)* (G), own measurement (O) etc.
- implementation size: this is just very rough estimate based on the smallest implementation found, sometimes guessed and rounded to some near value (for example finding a small implementation whose main goal isn't small size we may conclude it could be written yet a bit smaller).
- DT LOC is the number of [lines of code](loc.md) of our standardized [divisor tree](divisor_tree.md) program at the time of writing this
TODO: Tcl, Rebol
## Interesting Languages