Programming languages as tools for thought and rigorous engineering.

Programming languages are the fundamental tool of software engineers. A good language for serious work should have at least the following properties:

The language should be statically typed with programs as compiled binaries. This prevents simple errors, encourages rigorous thinking, and simplifies distribution.
A good language and its compiler should be simple enough that the developer using them can (with some work) understand and modify them if needed.
Garbage collection introduces non-determinism into applications and prevents the satisfaction of hard real-time requirements. It also obscure memory usage from programmers leading to wasteful designs. This is antithetical to the principle of budgeting.
High-quality software often requires skirting around wasteful abstractions. A good language should allow efficient access to low-level constructs related to the machine and the operating system.

Last update on 7E4B17, edited 1 times. 1/1thh