Saturday, January 20, 2007

Who's more important: the programmer or the machine?

This is a very important question you have to put to yourself before doing anything, because this will have a great influence on the way we program and think. Most of today's people are focusing on the machine: run faster, optimize, performance. This was a good idea back in the 60's-70's when machines were slow and the price of hardware was bigger than the price of programmers, but today (and from a long time ago) the proportion was reversed, people are way more expensive than hardware. So way always think at the machine, think at the programmers: what is better for them, how is more convenient for them. Thinking at the machine makes us lower the way we think and think like the machines, and this is by no means a good thing.

Donald Knuth: "Let us change our traditional attitude to the construction of programs. Instead of imagining that our main task is to instruct a computer what to do, let us concentrate rather on explaining to human beings what we want a computer to do."

Yukihiro "Matz" Matsumoro: "Often people, especially computer engineers, focus on the machines. They think, "By doing this, the machine will run faster. By doing this, the machine will run more effectively. By doing this, the machine will something something something." They are focusing on machines. But in fact we need to focus on humans, on how humans care about doing programming or operating the application of the machines. We are the masters. They are the slaves."

John Backus: "While it is perhaps natural and inevitable that languages like Fortran and its successors should have developed out of the concept of the von Neumann computer as they did, the fact that such languages have dominated our thinking for twenty years is unfortunate. It is unfortunate because their long-standing familiarity will make it hard for us to understand and adopt new programming styles which one day will offer far greater intellectual and computational power."

Allen Newell: "Millions for compilers but hardly a penny for understanding human programming language use. Now, programming languages are obviously symmetrical, the computer on one side, the programmer on the other. In an appropriate science of computer languages, one would expect that half the effort would be on the computer side, understanding how to translate the languages into executable form, and half on the human side, understanding how to design languages that are easy or productive to use.... The human and computer parts of programming languages have developed in radical asymmetry."

No comments: