It’s clearly secondary to correctness: A program that is well-written but doesn’t work right is worthless. Many hairy balls of mud have shipped to great acclaim.
Human readability & comprehension is nice for maintenance, but you don’t get to maintain something that never worked right to begin with.
… Of course, Windows is existence proof that you can be successful with neither.
I have two.
Scheme. It’s a fantastic language, you can cleanly switch from functional, procedural, or weird time machines (macros & continuations) solutions to any problem. Most Schemes (esp. Chez, CHICKEN, Gambit, Gerbil) compile to very fast binaries, close enough to C even with dynamic typing and garbage collection. C FFI depends on impl, but usually it’s pretty simple; in CHICKEN you can just write inline C code. SRFI vary from essential libraries to angels-on-pinheads nonsense, but there’s something to pick from.
Down side is the fractured, infighting community. R6RS was a practical batteries-included spec, which pissed off the teaching-only fans, so they made an inferior R7RS, and now committees are trying to make R7RS-large which is just bad R6RS. But if you pick one, and mostly stick to the spec language, it’s not a problem for the developer.
BASIC. I know, ridiculous, right? And I mean line-numbered, Atari or TRS-80 BASIC. But there was never a better language for teaching programming, or for banging out a small interactive program. Turn on any 8-bit computer (or start an emulator), it prompts
READY
, and you can write something small & interesting. Your modern 64-bit giant machine is notREADY
.