logoalt Hacker News

nobleachtoday at 12:41 PM8 repliesview on HN

The perfect programming language has:

  - The compile speed of Go
  - The performance of Go
  - The single binary compilation of Go
  - The type system of Kotlin
  - The ecosystem of JVM (packages for anything I could dream of)
  - The document sytem/tests of Elixir
  - The ability to go "unsafe" and opt for ARC instead of GC
  - The result monad/option monad and match statements from OCaml/Gleam
  - A REPL like Kotlin or even better, OCaml
  - A GREAT LSP for NeoVim
  - A package/module system that minimizes transient dependencies
  - No reliance on a VM like BEAM or JVM
I still dream about this "one size fits all" language.

Replies

ux266478today at 2:27 PM

Common Lisp through SBCL fits this for everything but changing GC strategies. I'm not sure why you'd do that, though. SBCL's generational GC is faster in all cases, easy to reason about, and trivial to pause.

In many of these other categories, clisp exceeds requirements. The REPL and Doc situation is so good it's honestly worth it for those alone. People put up with `):'(,@ soup for good reason.

show 2 replies
tizzytoday at 12:45 PM

I believe there are tradeoffs which is why this doesn't exist. Isn't the compile speed of Go so good because it's type system is much simpler?

show 4 replies
never_inlinetoday at 5:15 PM

What do you like so much about Kotlin type system, and document / testing of elixir?

jolt42today at 4:11 PM

performance of Go - why not Fortran? type system of Kotlin - why not Scala/Haskell? Repl like Kotlin, why not Clojure?

matt_kantortoday at 3:57 PM

> The result monad/option monad and match statements from OCaml/Gleam

Do you mean actual monads or just the specific result/option containers? If you mean a fully-fledged monad abstraction then you need a more sophisticated type system than what Kotlin provides (i.e. higher-kinded types).

show 1 reply
unnouinceputtoday at 3:16 PM

"The compile speed of Go" - Delphi starts laughing

utopiahtoday at 4:10 PM

- The reach of JavaScript