
Why programming is a good medium for expressing poorly understood ideas (1967) - andrelaszlo
http://web.media.mit.edu/~minsky/papers/Why%20programming%20is--.html
======
noir_lord
My programming lecturer used to say "programming is the process of breaking a
problem down so a high speed idiot can understand it, if you don't understand
the problem then you can't explain it".

He also said that a programmers most useful tool was a pencil and a 5mm square
A4 pad.

After years of solving thorny problems by getting away from the screen and
scribbling in a pad I can't say he was wrong.

~~~
dozzie
He was very wise on this matter. The best code I've written was thanks to
first designing it on paper.

~~~
noir_lord
He was an insanely smart guy, Type 2 Unixbeard (the skinny one with the pony
tail rather than Type 1, the portly one with the T-shirt of a bankrupt tech
company).

Back in the 80's he worked on the software that ran/runs digital switching for
(iirc) BT, high scale, high reliability stuff in C.

~~~
meowface
I had only one Unixbeard professor, and he was the best one I had in my
program. He was also a Type 2.

~~~
collyw
I wish I had had a Unixbeard prof.

------
eruditely
> Underlying our approach to this subject is our conviction that "computer
> science" is not a science and that its significance has little to do with
> computers. The computer revolution is a revolution in the way we think and
> in the way we express what we think. The essence of this change is the
> emergence of what might best be called procedural epistemology ­ the study
> of the structure of knowledge from an imperative point of view, as opposed
> to the more declarative point of view taken by classical mathematical
> subjects. Mathematics provides a framework for dealing precisely with
> notions of "what is." Computation provides a framework for dealing precisely
> with notions of "how to."

[https://mitpress.mit.edu/sicp/front/node3.html](https://mitpress.mit.edu/sicp/front/node3.html)

From SICP preface, which is the quote that actually matters, this is inspired
by Minsky's quote. I hate that the quote that went public were all the other
less inspired quotes from SICP.

~~~
jacobolus
Watch Hal Abelson explain this on video, right at the start of the first 1986
SICP lecture:
[https://www.youtube.com/watch?v=2Op3QLzMgSY](https://www.youtube.com/watch?v=2Op3QLzMgSY)

------
mrfusion
I'd love if all the formulas on Wikipedia were written as pseudo code with
meaningful variable names. I'd understand them so much faster.

~~~
moultano
Seriously! Any programmer would get pilloried for working solely in single
letter variable names. It's so tedious that this is the norm in math.

~~~
bitwize
And then they run out of Latin letters so they switch to Greek. Then they run
out of Greek letters so they switch to Hebrew...

You have to remember that math is written for the sake of mathematicians'
brains, not for the sake of dumb machines which accept only linear strings of
a limited character set through a teletype. A mathematician can look at a
formula and subconsciously break it down into constituent parts based on its
_shape_. Multi-letter (word? phrase?) variable names would only serve to add
unnecessary clutter and obscure the shape of the formula. Meaningfulness of
names is a secondary concern, if it is a concern at all; meaning can be
established in the text surrounding the formulas or equations; and if things
indeed get too complex for a set of a few formulas, the option is always there
to switch representations -- to computer code or pseudocode.

~~~
weinzierl
I think I've never seen Hebrew. Or maybe I've seen it and didn't recognize it
as Hebrew. Do you have an example?

~~~
vlasev
Quick one:
[https://en.wikipedia.org/wiki/Aleph_number](https://en.wikipedia.org/wiki/Aleph_number)

~~~
dagw
There are also Beth numbers
([https://en.wikipedia.org/wiki/Beth_number](https://en.wikipedia.org/wiki/Beth_number)),
closely related to Aleph numbers, but as far as I know that is the only place
hebrew letters show up in mathematics.

------
westoncb
It is a little tough to slog through now, though I'm sure it would've been
pretty enthralling in '67\. I liked this from the conclusion quite a bit,
though:

 _A computer is like a violin. You can imagine a novice trying first a
phonograph and then a violin. The latter, he says, sounds terrible. That is
the argument we have heard from our humanists and most of our computer
scientists. Computer programs are good, they say, for particular purposes, but
they aren 't flexible. Neither is a violin, or a typewriter, until you learn
how to use it._

I also liked what seems to be a pretty central point of the article (which I
admittedly only skimmed): just because some medium (e.g. computer programming)
has very precise requirements (e.g. in terms of syntax) for the _forms_
expressions can take on, does not imply that the content of what can be
expressed is similarly constrained.

~~~
TheOtherHobbes
I disagree. The content and expression become constrained because a
description of the problem domain has to be forced to fit inside them. Usually
you can only make this happen with a drastically over-simplified model.

One of the tragedies of AI and CS is that it's easy to delude yourself that
you've understood something because you can make a toy model of it - when in
fact non-toy models that are comprehensive enough to be useful to a domain
expert tend to be sprawling, irregular, complicated, and not very coherent.

The problem leads to a kind of paradox: _Most human behaviour can 't be
simulated with an algorithm that's simple enough for humans to understand._

Violins turn out to be a good example. It's trivially easy to sample a violin
sound. But sampling is _nowhere close_ to being able to model the musical data
bandwidth in a performance by a real string quartet.

~~~
skybrian
This isn't limited to CS. It's true of all science. And yet, building models
is better than not building them.

"All models are wrong but some are useful"
[https://en.wikipedia.org/wiki/All_models_are_wrong](https://en.wikipedia.org/wiki/All_models_are_wrong)

------
bobbylox
"We must not fall into anthropomorphic ways of thinking about machines; they
do only what their programs say; they can't be original or creative." In
debunking this fallacy, I would have thought that the "Computers Are More
Flexible Than You Think" argument wold only need to go halfway, and "Brains
Are Less Flexible Than We Think" could take us the rest of the way there. Of
course, in 1967 I imagine the support for the second argument was much thinner
than it is now.

------
whelp
I love ancient wisdoms.

------
dschiptsov
The beauty is in that a weighted graph of lambdas could be build out of conses
even back then. The idea that _code is data_ (and it could be generated by a
program itself) was already there, but they have dropped this right intuition
and turned back too early, and the dark ages of Java and packer's mindset
followed.

------
jbpetersen
Another page where I'm all too happy to use stylebot and make the CSS less
awful.

Couldn't figure out how to resize the text unfortunately.

