Steven Pemberton: The future of programming
Steven Pemberton gives the second keynote at PyGrunn, about the future of programming.
See the PyGrunn website for more info about this one-day Python conference in Groningen, The Netherlands.
I am from the CWI, Center for Mathematics and Informatics, at Amsterdam, where Python was born, and where I worked on ABC, the basis for Python. I wrote parts of gcc. I ended up chairing the w3c html working group.
I will talk about Moore's switch and the future of programming.
We were developing ABC in the beginning of the eighties, when computers were really slow. However, we knew about Moore's law, that computers would become faster.
In the fifties, computers were really expensive. You could hire an hour of computer time for the amount of money you pay a developer in a year. What I call Moore's switch: this has gone the other way around. Earlier programming languages were geared towards making it the computer easier, not the programmer.
Moore's law: computing power doubles every 18 months. In 1977 was the first time I heard say that Moore's law was soon over. In 1988 my laptop had a power of 500, now it has doubled fifteen times.
By the 1970's, computers had become cheaper, but programmers not: software crisis. Ninety percent of the cost was in debugging. Fred Brookes wrote about this in The Mythical Man Month. The larger the program, the more expensive it becomes.
An order of magnitude improvement would help a lot. What takes one week, would take a morning instead.
A declarative approach is much shorter, and therefor faster to write. Can this help? What does declarative programming mean? I wrote a declarative clock program in the beginning of the 1990s of twelve lines, instead of 1000 for a procedural clock program.
Declarative: you specify what needs to be and remain true. This also means there can be no while loops.
Look at XForms for a declarative language. A certain company went from five years and thirty people to finish a project to one year and ten people, by using XForms. It shows that declarative programming is feasible, usable, for real world projects.
I believe that eventually everyone will switch to declarative programming.
"Some programmers move from Python to lower level languages to get more performance out of computers." They may not have done the numbers. Programmers need to learn a new technique, which may make them not want to do this. Countries have held back the use of the Arab numerals that we now all use.
In ABC we saw that people were mostly busy with sorting and searching. So we made this very fast.
"Do big companies use this?" Yes, various, like Yahoo, IBM. Usually in small groups, not company wide.
"What will then happen with Python?" What happened to Pascal?
"Where should I start?" Look at Xforms. That is the only standardised version that I know of that does this stuff.
Strictly speaking, spreadsheets are declarative.
"What books do you recommend?" There are no books on XForms yet.
"Do you consider Prolog a declarative language?" Not really, though I see what you mean.
[For more information, see the XForms article on wikipedia, Maurits.]