The Slow March of Progress in Programming Language Tooling

Interesting article that describes the importance of tooling:

Since using Go and Elm, I’ve concluded the following:

The programming style (procedural, functional, etc.) is important, but other factors such as simplicity/tooling/deployment are also important, especially for small teams who don’t have separate staff for backend/frontend/operations. Learning two simple languages (Go and Elm) is a small task compared to dealing with huge languages, fussy build tools, and complex deployment environments.

Tooling matters – you should not have to spend significant amounts of time fighting the compiler or build tools. Some quotes from the article:

The article covers the following areas:’

  • Batteries-Included Standard Library
  • Third-Party Package Repositories
  • Documentation Support
  • Write Once, Run Most Places
  • Package Managers
  • Code Formatters

But I would add additional things like:

  1. well integrated build tool (ex go build) so you don’t need external tools like Make, Maven, etc.
  2. well integrated testing (ex go test)
  3. helpful compile warning/error messages

And finally a few quotes from the article:

But the state of the art appears to be Zig, which can easily cross compile not just Zig programs but also anything that would normally be build with Clang or GCC.

The tooling that enables developers to get work done is a massive part of what makes a language useable. Tooling is also a changing landscape where standards keep rising.