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 Machines that allow you to glitch them into turing-complete behavior — like CSS or truetype fonts; since finding these features is not really possible for new users, it doesn’t count toward learning curve.)

Minimizing time-to-ETBD means minimizing the amount of time, effort, and documentation to go from total non-programmer to minimum-viable-programmer.

I do not consider the web stack to be a meaningful improvement over other systems by this metric, unless you consider obtaining an environment part of time-to-ETBD and do not consider knowing that such an environment exists as part of it. Even then, home computers booting into BASIC and shipping with manuals starting with simple example programs are better time-to-ETBD in that sense than browsers — the time from first computer purchase to being able to write simple turing-complete programs reliably on 8-bit micros could be years (or could be negative, if the salesman at the computer store taught you to program on a demo machine). There are people who have been using web browsers for twenty years without ever suspecting that they could write a program that would run in one with a text editor.