I'm using this blog as a vehicle for my musings, ramblings and information gathering about future technologies, especially in the software field. I'm nothing close to a developer, so take my opinions with a salt dome, but as an interested layman I realize there's a lot of room for improvement in operating systems, programming languages and user interfaces. In each of these fields there are several projects to improve the situation, but they tend to fall below the radar, either because they are small, or because they are too long-term.
All too often, interesting ideas are dismissed as "vaporware" if they lack a working implementation. Obviously, I prefer to have a prototype to play with, but those visions will also have a place here, hence the title of this blog.
An interesting aspect of all these trends is that sometimes they seem to conflict with each other, and one has to decide whether to pick one over the other or make them somehow compatible.
For instance, in programming languages and operating systems one trend is high performance and predictability of performance (real-time behavior), which seems to favor languages like C and C++, with explicit pointer manipulation, while another trend is toward higher levels of abstraction, which calls for garbage collection and pure object orientation (Smalltalk, Ruby), functional programming (Haskell, some Scheme variants), logic programming (Prolog, OWL, Powerloom), metaprogramming (Lisp-like languages).
Besides, I mentioned programming languages and operating systems in the same sentence. What should their relationship be? If you ask Dan Ingalls:
An operating system is a collection of things that don't fit into a language. There shouldn't be one.Indeed, if all the components of a computing environment speak the same language, making them talk to each other is easiest. This is usually called "integration". But then, one expects of an operating system to support programming in whatever language one prefers, so there's arguably a trend toward more language-agnostic operating systems. Besides, there are interesting OS concept which could be implemented in different languages. Some examples are virtualization, microkernels, exokernels, orthogonal persistence and capability-based security. The guys at the TUNES project have some interesting ideas on this topic.
Regarding user interfaces, I'm interested in the apparent conflict between visual appeal ("eyecandy") and usefulness. A dream computing environment should be as visually appealing as, say, SecondLife, and as practically useful as a command-line interface or an IDE.
Enough for now, see you in my next post ;)
