Skip to content

Latest commit

 

History

History
62 lines (38 loc) · 1.6 KB

system-goals.md

File metadata and controls

62 lines (38 loc) · 1.6 KB

OK, but can't you list some vague aspirations and utopian priorities?

I want hacking in this system to make me happy, so that I'm itching to get back to the computer. What makes me happy?

  • Clear understanding.

  • Pretty code.

  • Rapid feedback.

  • Simple design -- feeling like a know-it-all.

  • Code that works the first time. (This is in tension with "rapid feedback", yeah.)

  • Feeling like an augmented intellect. Getting out seemingly more than I put in.

What makes me unhappy?

  • Filling out forms.

  • Needing permission.

  • Unpleasant surprises.

  • Feeling puzzled without good reason.

Priorities. Cant should:

  1. Help you to understand the behavior of programs. This might be for explorable explanations, or for debugging and development. Understanding can include what changes when you change the code.

Thus:

  • Determinism. (Cf. the importance of replication in science.)

  • Time travel.

  • Easy prettyprinting of everything.

  • Live update of code.

  • Halp.

  • (what else?)

  1. Be itself understandable, as an explorable explanation of computing.

  2. Run some useful programs well. This is only the third priority; most systems don't elevate the first two priorities above it. OTOH there are educational systems like Little Smalltalk (a good one!) which I'm not sure have ever run a program for actual use.

A goal that emerged: everyday tasks should go naturally in clear concise code. Since this quality comes mainly from library design, the language should enable a stdlib which supports it. (But vastly complicated external standards like HTML are out of scope, however 'everyday' they are in our fallen world.)