| 1940sThe Wired Age |
|---|
| Plankalkül1945 | absent — types | absent — inference | absent — garbage collection | partial — memory safety | absent — objects | partial — functions as values | partial — laziness | absent — closures | absent — concurrency | absent — exceptions | partial — modules | absent — metaprogramming | absent — expressions | absent — scripting |
|---|
| Short Code1949 | absent — types | absent — inference | absent — garbage collection | absent — memory safety | absent — objects | absent — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | absent — modules | absent — metaprogramming | canonical — expressions | partial — scripting |
|---|
| Autocode1952 | partial — types | absent — inference | absent — garbage collection | absent — memory safety | absent — objects | absent — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | absent — modules | absent — metaprogramming | present — expressions | partial — scripting |
|---|
| A-01952 | partial — types | absent — inference | absent — garbage collection | absent — memory safety | absent — objects | partial — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | present — modules | absent — metaprogramming | absent — expressions | partial — scripting |
|---|
| 1950sThe Compiler Age |
|---|
| FORTRAN1957 | canonical — types | absent — inference | absent — garbage collection | partial — memory safety | partial — objects | partial — functions as values | absent — laziness | absent — closures | partial — concurrency | partial — exceptions | canonical — modules | present — metaprogramming | present — expressions | partial — scripting |
|---|
| LISP1958 | absent — types | absent — inference | canonical — garbage collection | present — memory safety | present — objects | canonical — functions as values | partial — laziness | canonical — closures | partial — concurrency | present — exceptions | present — modules | canonical — metaprogramming | present — expressions | canonical — scripting |
|---|
| COBOL1959 | canonical — types | absent — inference | absent — garbage collection | partial — memory safety | partial — objects | absent — functions as values | absent — laziness | absent — closures | absent — concurrency | partial — exceptions | partial — modules | present — metaprogramming | absent — expressions | partial — scripting |
|---|
| ALGOL 601960 | present — types | absent — inference | absent — garbage collection | partial — memory safety | absent — objects | present — functions as values | present — laziness | partial — closures | partial — concurrency | absent — exceptions | partial — modules | absent — metaprogramming | present — expressions | partial — scripting |
|---|
| 1970sThe Systems Age |
|---|
| Simula 671967 | canonical — types | absent — inference | present — garbage collection | partial — memory safety | canonical — objects | partial — functions as values | absent — laziness | absent — closures | present — concurrency | absent — exceptions | partial — modules | absent — metaprogramming | partial — expressions | absent — scripting |
|---|
| Pascal1970 | canonical — types | absent — inference | absent — garbage collection | partial — memory safety | partial — objects | partial — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | present — modules | absent — metaprogramming | partial — expressions | partial — scripting |
|---|
| C1972 | canonical — types | absent — inference | absent — garbage collection | absent — memory safety | partial — objects | partial — functions as values | absent — laziness | absent — closures | partial — concurrency | absent — exceptions | partial — modules | present — metaprogramming | present — expressions | present — scripting |
|---|
| Prolog1972 | partial — types | absent — inference | present — garbage collection | present — memory safety | absent — objects | present — functions as values | absent — laziness | partial — closures | present — concurrency | present — exceptions | partial — modules | present — metaprogramming | partial — expressions | present — scripting |
|---|
| ML1973 | canonical — types | canonical — inference | present — garbage collection | canonical — memory safety | partial — objects | canonical — functions as values | absent — laziness | canonical — closures | partial — concurrency | present — exceptions | canonical — modules | present — metaprogramming | present — expressions | present — scripting |
|---|
| Scheme1975 | absent — types | absent — inference | canonical — garbage collection | present — memory safety | partial — objects | canonical — functions as values | partial — laziness | canonical — closures | partial — concurrency | partial — exceptions | present — modules | canonical — metaprogramming | present — expressions | canonical — scripting |
|---|
| SQL1974 | present — types | absent — inference | absent — garbage collection | absent — memory safety | absent — objects | partial — functions as values | absent — laziness | absent — closures | partial — concurrency | partial — exceptions | absent — modules | absent — metaprogramming | partial — expressions | present — scripting |
|---|
| 1980sObjects Ascendant |
|---|
| Smalltalk-801980 | present — types | absent — inference | canonical — garbage collection | present — memory safety | canonical — objects | present — functions as values | absent — laziness | canonical — closures | partial — concurrency | present — exceptions | present — modules | canonical — metaprogramming | partial — expressions | canonical — scripting |
|---|
| Ada1983 | canonical — types | absent — inference | present — garbage collection | canonical — memory safety | present — objects | partial — functions as values | absent — laziness | absent — closures | canonical — concurrency | canonical — exceptions | canonical — modules | present — metaprogramming | partial — expressions | absent — scripting |
|---|
| Objective-C1984 | present — types | absent — inference | present — garbage collection | partial — memory safety | canonical — objects | present — functions as values | absent — laziness | present — closures | present — concurrency | present — exceptions | partial — modules | canonical — metaprogramming | partial — expressions | present — scripting |
|---|
| C++1985 | canonical — types | absent — inference | present — garbage collection | present — memory safety | canonical — objects | present — functions as values | absent — laziness | canonical — closures | present — concurrency | present — exceptions | present — modules | canonical — metaprogramming | present — expressions | partial — scripting |
|---|
| Erlang1986 | present — types | absent — inference | canonical — garbage collection | canonical — memory safety | absent — objects | canonical — functions as values | absent — laziness | canonical — closures | canonical — concurrency | present — exceptions | present — modules | present — metaprogramming | present — expressions | present — scripting |
|---|
| Perl1987 | partial — types | absent — inference | canonical — garbage collection | present — memory safety | present — objects | present — functions as values | absent — laziness | canonical — closures | partial — concurrency | present — exceptions | present — modules | canonical — metaprogramming | canonical — expressions | canonical — scripting |
|---|
| 1990sThe Web Opens |
|---|
| Haskell1990 | canonical — types | canonical — inference | present — garbage collection | canonical — memory safety | partial — objects | canonical — functions as values | canonical — laziness | canonical — closures | present — concurrency | present — exceptions | canonical — modules | canonical — metaprogramming | present — expressions | partial — scripting |
|---|
| Python1991 | present — types | absent — inference | canonical — garbage collection | present — memory safety | present — objects | present — functions as values | partial — laziness | canonical — closures | present — concurrency | canonical — exceptions | canonical — modules | canonical — metaprogramming | present — expressions | canonical — scripting |
|---|
| Ruby1995 | partial — types | absent — inference | canonical — garbage collection | present — memory safety | canonical — objects | present — functions as values | absent — laziness | canonical — closures | present — concurrency | present — exceptions | canonical — modules | canonical — metaprogramming | canonical — expressions | canonical — scripting |
|---|
| Java1995 | canonical — types | absent — inference | canonical — garbage collection | canonical — memory safety | canonical — objects | present — functions as values | absent — laziness | canonical — closures | canonical — concurrency | canonical — exceptions | canonical — modules | present — metaprogramming | partial — expressions | present — scripting |
|---|
| JavaScript1995 | partial — types | absent — inference | canonical — garbage collection | present — memory safety | present — objects | canonical — functions as values | absent — laziness | canonical — closures | present — concurrency | present — exceptions | canonical — modules | canonical — metaprogramming | canonical — expressions | canonical — scripting |
|---|
| PHP1995 | present — types | absent — inference | canonical — garbage collection | present — memory safety | present — objects | present — functions as values | present — laziness | canonical — closures | present — concurrency | canonical — exceptions | canonical — modules | present — metaprogramming | present — expressions | canonical — scripting |
|---|
| 2000sMulticore & Missions |
|---|
| Scala2004 | canonical — types | present — inference | canonical — garbage collection | canonical — memory safety | canonical — objects | canonical — functions as values | present — laziness | canonical — closures | canonical — concurrency | present — exceptions | canonical — modules | canonical — metaprogramming | canonical — expressions | present — scripting |
|---|
| Go2009 | canonical — types | absent — inference | present — garbage collection | present — memory safety | partial — objects | partial — functions as values | absent — laziness | present — closures | canonical — concurrency | partial — exceptions | canonical — modules | partial — metaprogramming | partial — expressions | canonical — scripting |
|---|
| TypeScript2012 | canonical — types | canonical — inference | canonical — garbage collection | canonical — memory safety | present — objects | present — functions as values | absent — laziness | canonical — closures | present — concurrency | present — exceptions | canonical — modules | present — metaprogramming | canonical — expressions | canonical — scripting |
|---|
| Swift2014 | canonical — types | present — inference | canonical — garbage collection | canonical — memory safety | canonical — objects | present — functions as values | absent — laziness | canonical — closures | canonical — concurrency | canonical — exceptions | canonical — modules | present — metaprogramming | present — expressions | present — scripting |
|---|
| Rust2015 | canonical — types | canonical — inference | absent — garbage collection | canonical — memory safety | present — objects | present — functions as values | absent — laziness | canonical — closures | canonical — concurrency | canonical — exceptions | canonical — modules | canonical — metaprogramming | partial — expressions | present — scripting |
|---|
| 2020sThe Fluent Age |
|---|
| Copilot2021 | partial — types | absent — inference | canonical — garbage collection | partial — memory safety | partial — objects | partial — functions as values | partial — laziness | partial — closures | partial — concurrency | partial — exceptions | partial — modules | canonical — metaprogramming | partial — expressions | canonical — scripting |
|---|
| Mojo2023 | canonical — types | present — inference | absent — garbage collection | canonical — memory safety | present — objects | canonical — functions as values | absent — laziness | present — closures | canonical — concurrency | partial — exceptions | present — modules | partial — metaprogramming | canonical — expressions | present — scripting |
|---|
| Prompts2023→ | absent — types | absent — inference | partial — garbage collection | absent — memory safety | absent — objects | partial — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | absent — modules | canonical — metaprogramming | partial — expressions | canonical — scripting |
|---|
| What’s next∞ | absent — types | absent — inference | absent — garbage collection | absent — memory safety | absent — objects | absent — functions as values | absent — laziness | absent — closures | absent — concurrency | absent — exceptions | absent — modules | absent — metaprogramming | absent — expressions | absent — scripting |
|---|