A good programming language comes with tooling that makes it easy to use and hard to mis-use.
Code quality tooling comes in various forms:
Formatters: There ideally is only one canonical style guide for the programming language, and a formatter is available to verify adherence to the style guide. Ideally, the formatter has an auto-correct option as well. See
prettier, and others.
Static code analysis tooling: This includes detecting common bugs, but also performing security analysis.
Upgrader: A programming language that is still in active development will change, and having a tool that can automatically upgrade to newer syntax will be helpful.
To do: everything about this
To do: security analyser for dependencies. e.g. bundle audit, yarn audit, etc. Ideally also an auto-fixer.
A good programming language comes with a testing framework built-in.
To do: Rely on convention to find a place to store specs, or integrate it into the language? For example, Go’s approach to putting tests in-line, with the
_test file name suffix, is integrated into the language
A good programming language needs the ability to generate and consume documentation:
Be able to document code, with documentation being a first-class concept. See Python’s docstrings for example.
Integrate with IDEs, perhaps through the Language Server Protocol (LSP). This would enable traversing code, across modules and across packages, and provide inline documentation where and when it is needed.
Be able to generate documentation as HTML.
Possibly not related to tooling around the programming language itself, but being able to install it easily, without having to deal with dependencies manually, would be ideal. A simple
brew install would be perfect, even if a
brew tap is needed (and similar for other OSes).