Remix.run Logo
▲ cookiengineer an hour ago

This is written by a person who never used LLMs.

LLMs need a language that:

- has opinions about how to write standard code

- has opinions about one way of formatting and codestyle

- has opinions about linting and integrated debugging

- has predictable strong types

- has opinions about integrated unit testing and a standard way to write them

- has an integrated toolchain

- has a strong stdlib and an upstreamed way to unify libraries

- (recommended) has a standard project layout _where_ to put its code (types, structs, helpers, utils, etc)

Go and Rust fit all these checkmarks except the last one. That's why those languages don't need kilometer long prompts to tell the LLM how to write code. Most of the prompting in those languages focuses around architecture and design, and not about style, tooling, or other artificially vague decisions.

Lisp is the most unopinionated language there is, therefore it is the worst in terms of lack of decisions encoded in its tooling.

And I'm not writing that as an opponent of the language, I've written scheme bindings for a couple of years in (academic) robotics.

The point that I am making here is that you _need_ an opinionated language for an LLM to make sense. Write linters and tools before code [1].

[1] https://cookie.engineer/weblog/articles/write-linters-and-to...