I feel that it is time for an exploration of the philosophy of computing. I believe that stored program computers represent a significant event in the history of civilization. I have always assumed that someday computer/software systems would reach a level where one could say that they were "intelligent". Not just that they could pass a Turing test, but that we could understand how it was that they could pass such a test. Thus we would understand how to make them better, and more useful as Intelligence Amplifiers (IA). I view all software work in this light.
Let's step back for a minute...
The invention of writing externalized memory. We don't have to remember if we know where to look it up.
The invention of the computer externalized procedure. Does anyone under 25 know how to do long division? Thank you TI and HP(reverse polish aside).
The analogy is striking but is NOT meant to be an isomorphic mapping, just a loose analogy.
When the printing press was invented in the late 15th century, it paved the way for universal education. It also created the mess that is English language spelling (other natural languages as well). Everyone who had something to say, could and did, and different accents produced a spelling marketing war. The dictionary is the resulting standards group document. (I wonder if anyone tried to copyright the spelling of 'through'? ... or charge money for it?)
Since programmers started hand switching programs into a mainframe in the 1950's, we have assumed that we would write ourselves out of a job because we would build a system that was usable by everyone and then they would not need us anymore. Remember when computers were going to be 'intelligent' within 5 years? (10 at most). All we had to do was figure out what intelligence was... And we got COBOL and FORTRAN.
Within this century everyone will be a programmer. Not in the bit switching, C/C++, Macro 4GL (insert acronyms as required) way it is now, but at a "higher level". Everyone will learn knowledge engineering in the same way that "everyone" can read and write today. They will understand how to string procedures(components) together to do what they want to do with the computers they wear. The ones who do it well will get paid for that activity alone. Other people will use their component capabilities to do other things.
In this sense software will be as 'free' and as 'open' as books and newspapers are today. People will have long forgotten the old days when programming was a black art practiced by priests and heretics who fought it out on the pages of a quaint on-line magazine known by the curiously spelled name of BYTE. And Linux vs. Windows will rate a paragraph in the Encyclopedia Galactica, ending with Mostly harmless
The primitive elements of the 'language' are being developed in the form of built in functions in Operating systems, spreadsheets, word processors, Email, Chat and all the other applications that we 'use' rather than 'tinker with'.
When we can string these functions together to express a thought as we do with writing. When we can deal with computers without having to think about them. When simulating forward a 3,000 variable economic model at one second intervals for a year becomes as easy as using a calculator to find the square root of 42... Then things will change and we will experience IA.
I don't know what it will feel like, but I think it will be fun.