Enough to be Dangerous

John Ohno on 2018-06-15

A really important idea in programming-language-design-as-UI-design is time-to-ETBD.

How much time does it take to go from zero to Enough To Be Dangerous (i.e., enough knowledge to be able to reliably make turing-complete constructs with conditionals and simple math). If you’ve got ETBD in some language, then you can write anything in it (barring IO), given enough effort, even without learning any more features.

Some languages have a really fast ETBD — prolog, forth, basic, python. Esolangs often don’t even have features beyond the ETBD level (brainfuck and unlambda for instance).

A non-programmer can learn all of brainfuck in ten minutes. They are now a minimum-viable-programmer. Nevertheless, actually doing anything in it is a turing tarpit, and this is true of any language when you get to ETBD status in it.

Having a fast time-to-ETBD is important for a language because you need to get there before the user is ready to learn anything else. Optimizing documentation for time-to-ETBD is important for the same reason.

The amount of effort it takes to get to ETBD in Java, C, or C++ & the number of new concepts that need to be paid tribute to (if not actually understood) is a barrier to new programmers.

(Modern GUIs never reach an ETBD point except ones intended as languages. As a result, modern GUIs, as framed as programming languages, are essentially dysfunctional. Likewise, lots of systems are ostensibly non-turing-complete but have Weird…