This is a rolling list of programming languages I want to learn. Many of them I have read about already to varying degrees, but haven't yet practiced or used for a complete piece of software.
So many languages, so little time!
Presented in no particular order and with no claims regarding accuracy.
Janet
- Highly embeddable Lisp; project reminds me of Lua in a good way
- Almost no setup required, and good Windows support
- Can compile to standalone executables
- Standard library and runtime include a lot of stuff not found in similarly-tiny scripting languages:
- Threads ("lightweight" / "green" threads)
- an event loop
- subprocess handling
- networking
- Parsing expression grammars
Repeat, PEGs are built right in to the language. Sweet.
Janet for Mortals - a real book by Ian Henry
Rust
- Compiled, native
- Ownership/borrow Checker
- Static
- Imperative
- Traits
The book: The Rust Programming Language
Ruby
- Dynamic
- Interpreted/JIT
- Web Apps
- Object-based, blend of functional and imperative
- stated influences: perl, smalltalk, eiffel, ada, lisp
OCaml
"Industrial strength functional programming"
- pitch: reliability, productivity, performance
- compile to either bytecode or native machine code
- garbage collected
- that ML type system
- direct ancestor of F#
CS 3110 "Data Structures and Functional Programming" at Cornell University: OCaml Programming: Correct + Efficient + Beautiful
Scala
- runtime: JVM, JS, LLVM
- java interop
- functional & object-oriented
- static types + type inference
- traits
- pattern matching
- higher order functions / function composition
- actors, futures, parallel collections
Elixir
- Dynamic
- Functional
- syntax conducive to DSLs
- runtime: Erlang VM
- thanks Erlang: lightweight threads, distributed communication, fault-tolerance
- web dev, embedded, data/multimedia pipelines
Has the
|>
operator so I'm already interested
Zig
- Competes w/ C ("robust, optimal, reusable")
- Explicit allocation / memory management
- Features focus on simplicity (no preprocessor, text macros, or hidden control flow)
- "Comptime" - compilation-time function execution and type manipulation
- ...zig compiler can compile C, so you can mix C/C++/Zig in one project
Kotlin
- object-oriented, functional
- async via coroutines
- runtime: bytecode, JVM
- apparently also now compiling to native!
- ...and also some kind of wild JS interop?
- static types w/ inference
- syntax conducive to DSLs
- Android, Gradle, JVM servers