Here is a note on Sussman's talk Programming for the Expression of Ideas.
Pseudo-code is employed.
A better summary is founded at here.
T.B.C.
People in Different Cultures
It's hard to communicate with Greek people, unless you have learned Greek language, which, however, is impossible.
Mathematicians have developed a culture, a whole terribly (see below) specified language to express (write down) their ideas. And if you want to impress in your mind what's the idea behind an expression, you have to work hard on learning their language. Whereas, this language is terribly designed, so that unnecessary obstacles lie along the path of you learning.
Newton's Law:
Traditionally, it's $- G M r^{-3} \vec{r} = \ddot{r}$. Whereas, it's not clear what physical quantities the notations represent. You have to say, $\vec{r}$ is the trajectory of a particle in gravitational field caused by a point-mass $M$, thus $\vec{r} (t)$. It would be somehow automatically declared if it is re-written as $$-\frac{G M \vec{r} (t)}{r^3 (t)} = \frac{\mathd^2 \vec{r}}{\mathd t^2} (t)$$.
Leibniz's Rule:
Let $e (x, y) = f (g (x, y), h (x, y))$. We want $\partial e / \partial x (x,y)$. Denote $u = g (x, y)$ and $v = h (x, y)$. Then we write. $$\frac{\partial f (g (x, y), h (x, y))}{\partial x} = \frac{\partial f (u, v)}{\partial u} \frac{\partial u}{\partial x} + \frac{\partial f (u, v)}{\partial v} \frac{\partial v}{\partial x}$$. Then shortly and terribly, $$\frac{\partial f}{\partial x} = \frac{\partial f}{\partial u} \frac{\partial u}{\partial x} + \frac{\partial f}{\partial v} \frac{\partial v}{\partial x}$$.
Note that $f$ means different things on the two sides!
The correct way of expressing is $$\frac{\partial f (g (x, y), h (x, y))}{\partial x} = \partial_1 f (u, v) \big|{u = g (x, y), v = h (x, y)} \partial_1 g (x, y) + \partial_2 f (u, v) \big|{u = g (x, y), v = h (x, y)} \partial_1 h (x, y)}$$.
Lagrangian Equation:
Traditionally, Lagrangian equation is expressed as $$\frac{d}{d t} \frac{\partial L}{\partial \dot{x}} - \frac{\partial L}{\partial x} = 0$$, which seems that $L: R \times R \times R \mapto R$, where one of the $R$ is for $t$. Thus, this expression has type violation! Indeed, the general expression of Lagrangian is $L(x, v) = (1/2) v^2 + V(x)$, for some $V$, which is $L: R^2 \mapto R$.
Gamma: path-space --> domain of Lagrangian
function on R --> (function on R)^2
(def ((Gamma path) t)
(up (path t) ((D path) t)))
lagrangian-eq: path-space --> domain of Lagrangian --> R
function on R --> R
(def ((lagrangian-eq lagrangian) path)
(minus (D (compose ((partial 2) lagrangian)
(Gamma path)))
(compose ((partial 1) lagrangian)
(Gamma path))))
where D
is the (Mathematica-l) derivative operation, such as
D (x^n) = n x^(n-1)
Thus we see, lagrangian-eq
is a functional. This is manifest in (def ((lagrangian-eq lagrangian) path) ...)
. For instance, harmonic oscillator:
lagrangian (x, v) = (1/2) v^2 - (1/2) x^2
Things become declared and clarified in these expressions via programme.
Expressing GR via Programme.
As expressing via programmes, the point is not making GR simple, but making it clear. It is manifest how things is manipulated, in each step.
And demanding that the code can run on computer forces the expression be correct.
The Reason Why Programming that Makes It Better
Originally, for convenience of manipulation by hand, formulae are written abbreviatedly. This abbreviation makes algebric calculation fast, freeing our time from doing dull algebra and then focus more attention unto the meaning of the expressions, and getting rid of any misleading on them. However, this abbreviation carries two sides. It blocks us reading off the meaning from the abbreviated, thus quite non-straight-forward, expressions.
Then, programming saves us, as Leibniz originally dreamed. Verily, it sweeps the dull algebric calculation out of our mind and leave the non-abbreviated expression understandable.
T.B.C.
PS: 以前知道“简书”对 Markdown 的支持很糟糕。比如:
This is a regular paragraph.
<table>
<tr>
<td>Foo</td>
</tr>
</table>
This is another regular paragraph.
(这段是从这里直接复制过来的。)现在看来它完全不支持 LaTeX,缩进也有问题。“简书”果然很简陋。
categories: programming