The Ideal Programming Language • Richard Feldman & Erik Doernenburg

Designing a perfect programming language is not the goal, but a language that balances testability, garbage collection, and type checking.

Key takeaways
  • Testability is crucial when designing a programming language.
  • The three major types of garbage collection are incremental, generational, and tracing garbage collection.
  • Tracing GCs have the highest throughput over a given period of time, but are least appealing.
  • Automatic reference counting has its own set of trade-offs.
  • Ergonomic type checking is important for a language.
  • Inspired by Lisp-like languages, allowing for concise and expressive code.
  • High-level abstractions for concurrency should be considered.
  • Low-level data parallelism on the CPU, such as SIMD, is also important.
  • Ideal language should have a good package manager and type checking.
  • Not trying to design a language for web frontend stuff, but rather for internal tools.
  • Sometimes, a language does not need to be perfect, just decent.
  • Ideal language should have an ergonomic type checking and fast compilation.
  • Inspired by Kotlin, having a good concurrency model for performance.
  • Some languages, like Rust and Kotlin, have good concurrency models.
  • Considered object-oriented programming, with interfaces and dependency injection.
  • Subtractive programming is a key part of functional programming.
  • Ideal language should support immutable data structures.
  • High-quality dev talks can be found on Gotopia.tech.