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:
- 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?)
-
Be itself understandable, as an explorable explanation of computing.
-
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.)