Well, if all 300,000 members are looking at this thread, and no one is coming up with something, then that's pretty sad. But I think generally most members here don't even want to think about the future of computing ;-).
Let me do my best to gather up some interesting web links and discussions I have seen in the past 2 years about this topic. But before that, I will have to stop a moment and mention SQL again, because I think it has bearing on this topic.
>Mmmm - Never thought of SQL as a programming language.
This is exactly the point. Our perception of what a programming language
is will have to change somewhat in order to progress toward better abstractions in computing. Moving from procedural to object-oriented was a big step, in some ways, although there have been plenty of well-voiced debates about that also. But still, with OO programming, the language is a generalized programming environment having all the same operators and methods, with just a couple additions.
When I said SQL is the best example of a 4GL available at the moment, that is just what I mean. I don't mean that SQL is a wonderful language. I find much fault with it. It is, however, a programming language; it is just not a
generalized programming environment. And that is exactly the point. If we keep trying to make generalized languages, which cover every facet of development, we will always be mired in implementation details, instead of being able to simply and directly deal with the
logic of our software. SQL database systems are usually written in C/C++, using all of the implementation details of those languages, in order to shield the SQL user from those very details. That doesn't do away with C programming, but provides an elegant separation of responsibilities that we would do well to emulate in other areas. Imaging a GUI front-end language that shielded the programmer in the same way, concentrating only on the logical task at hand, allowing for the "back end" (the program that parses the languag) to be tweaked as a generalized system, without ever affecting the front end.
So, that brings me to a point about the supposed "progression", from 1GL to 4GL: every one of those levels is still in use even today. I mean, someone still has to make the physical chips, and deal with the ones and zeros. The progression should not be thought of as a measure of past->future, but a measure of low-level->high-level. So, the future will bring us more high-level abstractions, but there will always be a need for people to deal with the lower levels. The C compiler wasn't written in C, was it? Java wasn't written in Java, was it?
There are many ways to progress toward different types of abstraction and metaphor, each of which might be useful to one group, while irritating to another. For example the idea of a completely "visual" programming environment, where there is never any text represantation at all, seems to me a very frustrating concept, but it might be a wonderful concept for those developing certain sorts of projects.
Check out this comparison between Windows vs Apple scriptiability: (
Also, of course, there is the negative side to increased abstraction. Check out Joel Spolsky's "Law of Leaky Abstractions" --
and the ensuing Slashdot discussion at
There are all kinds of companies working on 4GL this and 5GL that, each claiming that they are pursuing the ultimate breakthrough, which will enable people to simply and easily tell the computer what they want, and receive clear responses. Let's face it, we can't even do that well when dealing with one
person to another!!! People are constantly misunderstanding each other, and having to repeat questions, rephrase them, asking for a rephrased response in order to make sure the person understood them, and even then, often find out that the request is being processed in exactly the way the requester did
not want.
Also, abstractions can actually bring greater complexity, if we are not careful. I consider Java to be a perfect example of that. C was a dangerous language for novice programmers, but it is also a fairly simple and straightforward language. Read Kernighan & Ritchie's "The C Programming Language", (about 270 pages) and try to imagine a Java book of the same size, and whether it could truly explain Java in that amount of space. And to properly use Java, you need to be familiar with mountain after mountain of APIs even to accomplish some of the simplest tasks.
I don't know... if I were forced to make a prediction, I would say that sooner or later, society will
have to find a simple, direct way for the general public to interface with computers. This is because computers will be a part of everything. But, it will involve training the human as much as programming the computers. It will probably be some sort of simple declarative language--NOT "natural language" processing; it will be more like a subset of our spoken language. An extremely simplified subset, kind of like a pidgin English, or a pidgin version of the speakers native language. People will be taught this language from kindergarten onward, so that overall, they will be able to tell computers what to do for the everyday aspects of their lives, such as "Display all phone calls from my friend George". Then, of course, those who get further into dealing with computers professionally will learn more advanced aspects of this language. It will be possible to speak this, or enter it into a keyboard.
Of course, sooner or later someone
will hook up the human brain to a computer (It's already being done, but not on a very sophisticated level yet). I think this will be a painful exercise at first, as our brains tend not to stay "on topic" too well. Again, this will involve "training the human" as much as training the computer. Maybe we will come up with some sort of mental viaualization system that allows us to manipulate higher abstractions. (Like the "ideoplasts" in David Zindell's
Neverness) By that point, we probably won't even be thinking of these machines as computers. -------------------------------------------
Big Brother: "War is Peace" -- Big Business: "Suspicion is Trust"
(