Spooky. I just re-read my ramblings on programming languages. Then decided to check out slashdot to see what was new. Right at the top of the page was a pointer to an essay by Paul Graham on future programming languages. Its well-worth a read. I particularly like (and agree with) his observation that languages such as COBOL, lacking descendant languages, will probably die-out in the long-term.
I do disagree with some of the things he says, though. I’m not at all confident making hundred-year predictions, but I think that over the next two or three decades, virtualised execution environments will be prevalent. I also disagree with some of his comments on object-orientation:
Object-oriented programming offers a sustainable way to write spaghetti code. It lets you accrete programs as a series of patches. Large organizations always tend to develop software this way, and I expect this to be as true in a hundred years as it is today.
Re-use is also going to be increasingly important, as we accumulate more and more software, and become dependant on it. Data becomes increasingly valuable, and so the software to process it will have to live longer and longer: As someone who, fifteen years ago, fell for the whole “object-oriented = reusable” thing, I do agree with Paul that reuse won’t come from object-orientation:
Somehow the idea of reusability got attached to object-oriented programming in the 1980’s, and no amount of evidence to the contrary seems to be able to shake it free. But although some object-oriented software is reusable, what makes it reusable is its bottom-upness, not its object-orientedness.
By 2103, I don’t think that many people will actually program computers as we currently understand the term. The size and complexity of the systems that will be needed by societies in that time will take the task out of our reach. Instead, I think that AIs will create the software we’ll need. I just hope that ask us what we want.