Notes from reading Up and Down the Ladder of Abstraction by Bret Victor.
the purpose of abstraction is to bring out high-level patterns
We stepped up a level of abstraction to see a high-level pattern, and then stepped down to discover the explanation for that pattern. I believe that this dance is where the deepest insights are born - not at any one level of abstraction, but in the transitions between them. This is why it is crucial that our representations provide both a step up and a step back down.
function f() {
const t = 100;
const r = 2;
const [x, y] = calculate(t, r);
return [x, y];
}
function f(t) {
const r = 2;
const [x, y] = calculate(t, r);
return [x, y];
}
function f(t, r) {
const [x, y] = calculate(t, r);
return [x, y];
}
r
is currying:
const f_of_2 = t => f(t, 2);
the author sees and manipulates indirect symbolic representations, and must imagine how they give rise to dynamic behavior
- this could be improved by (Future Of Coding):
- seeing the dynamic behaviour that is being created (Simulator)
- exploring multiple representations of that behaviour (Ladder of Abstraction)
- directly manipulating representations and data