September 06, 2019

The raise and fall of computer programming


On the first look, the domain of computer programming is booming. Lots of new language were developed like Golang and C#, online forums like Stackoverflow are providing online based ressources, and thanks to the development of opensource, everybody gets the latest compilers at the lowest possible costs. Compared to the situation in the 1980s, it's easier than ever to learn programming and write working code. At the same time, there is something wrong with most programming languages and in the following blog post I'd like to explain the reason why.
Instead of describing computer programming by it's self-description it make sense to go a step backward and analyze the domain from an academic perspective on a timescale. The need for programming the newly invented computer machinery was obvious since the early 1950s. The late 1970s the object oriented paradigm was invented to improve the code efficiency. In the 1990s programming was transformed into a business and the famous Microsoft company has made a business model around it. From an academic perspective, programming is a solved problem. That means, it was researched in the past and doesn't provide open questions.
Before the advent of the Small talk programming language it was an interesting problem how to create larger programs which are working interactively. The problem is, that OOP can only be invented once. The smalltalk specification is available since the 1980s and it was the answer to the mentioned problem. But what comes after smalltalk, Just-in-time-compilers and opensource operating systems? Right, there is nothing on the horizon. Programming was the answer to the problem of how to use the computer in a certain way. It's not enough to put electric current into the CPU, but before the computer can do useful things he needs a program. If the computer is equipped with software, and if the software was designed well, then the computer can do anything.
The problem with the current mainstream programming languages like C++, Java, Python and Golang is, that they have no problem, but they are the answer to the issue of computer program. If a computer programming problem is there, C++ and all the other languages are the answer. The open question is, if programming in general is something which has an academic impact. In the 1970's and the 1980s the answer was yes. In that time, it was not clear what a compiler is, or what object oriented software development is. There was a need to research the topic in depth and put a lot of manpower into programming research. Unfortunately, the situation has changed. That means, the wheel was invented, the programmers are happy and now it's time to cancel these kind of projects to make room for something new.
What does it mean? It means, that computer programming hast lost his academic impact. It is not the leading discpiine in computer science but something which is located in a museum. Programming in general is not a future technology, or a here-to-stay, but what can be described by historians. For example it make sense to publish a book about the advent of the Turbo Pascal language in the 1980s. Such books doesn't have an impact to the computer science, but they are located within the social sciences. It's a look back into the past, similar to describe the emerging technology of the first steam engine in the 19th century.
It's important to frame existing attempt in computer programming with the correct academic background. Online forums like Stackoverflow, modern compilers like the LLVM suite or software repositories at github are not examples for computer science, but they are part of the retrocommunity who are imitating the past. Stackoverflow gives an outlook what computer science was 20 years ago. That means, the forum doesn't provide current problems of computer science, but pseudo problems which are part of computer history.
To analyze the situation right we have to imagine a situation in which a museum with old radios from the 1950s has the self-understanding to promote future technology. It looks very funny if an outdated technology is not presented in their past setting, but as a current technology. The same situation is obviously in computer programming. The self-understanding of most programmers is, that they are leading the computer revolution. Does this description make sense? Has the future something to do with converting C sourcecode into a binary file? Is computer science on an academic level the same like programming something in the C# dialect?
If we are going back the past the answer is yes. Using a C# like programming in the 1980s can be called an advanced example of computer science. In that period it was state of the state and a bit ahead of the time. The problem is, that the time has changed. The 1980s are gone since a while and they will never come back. It's important to declare all programming paradigm as obsolete and try to build a museum around them.
Somebody would argue, that programming is needed in the future more than ever and that it's not possible to program a computer without write source code. This is true and false at the same time. It's correct, that in the future the people will eat something, and they will use pen and paper. And for sure, they will use the C++ language as well. But his is not equal that these things are invented in the future, but they are tools from the past. They have transformed from an innovation into a household tool. They are normal, everywhere and standardized.