Some computing links...

This page contains a mixed bag of various computer projects or devices that may be useful or interesting.

Programming languages

Apart from Eiffel which is the main topic of this website, some other languages are worth a look.

BETA is a descendant of the first object language, Simula. It is a (mostly) statically typed language that unifies several concepts through the pattern construct. gbeta is a generalisation of the BETA language, probably one of the most innovative OO languages recently designed. In particular it features a remarkable form of run time type mutation, while remaining statically type safe.

Lua is a small and neat scripting language from Brazilian academics. It's a refreshing break from scripting monsters like Perl or Python. This one is quite elegant and nicely compact. Not that saving megabytes of hard disk space is more than an aesthetic pursuit nowadays...

Haskell and Standard ML are the two main statically typed functional languages with multiple implementations. Some compilers are said to produce code whose performance is comparable with imperative compiled languages. Functional programming allows concise programs at a higher level of abstraction thanks to referential transparency (all objects are constants) and functions as first order values (functions can be passed along with their context as arguments to other functions). Both languages use type inference to make type declarations optional. Haskell is pure and lazy, using the monad abstraction for IO, and lazy evaluation, which means function parameters are only evaluated when actually used. Standard ML is less ambitious with traditional strict evaluation, and a clean back door to imperative programming should it be needed. ML is a small, relatively consistent and precisely defined language, and seems more suitable than the more experimental and quirky Haskell for industrial use.

Erlang is the name of both a language and concurrency framework. The language is unfortunately weakly typed and usually interpreted, but well integrated with a message passing based concurrency framework allowing pervasive and safe multitasking. It is also the most visible success story of functional language use outside education.

Publishing

Lout is an elegant batch publishing system, like TeX without the sixties luggage though there is some level of path dependency in its design. While it can be used by anyone like Latex would be, it is actually also a functional programming language for typesetting that is said to be pleasant to program in once you get into it. The native output is Postscript.

Since this section on XML was first written, this simplified successor of SGML has become widespread. XML is relatively easy to parse and common tools for the processing of structured text (editors, parsers, validating tools) can be reused on any data structured using XML. XML does not give semantics though, only a framework for creating document types or schemas and processing against them. This page is a reasonably fair explanation (despite the title) why XML is useful despite the hype.

HTML started as an application of SGML so the syntax should be familiar to anyone who has played with HTML. It is a pity HTML lost the formality and correctness emphasis of SGML but for those wanting to write correct SGML the W3 Consortium has all the standard texts for HTML, HTTP, XML and other web standards. The up to date HTML standards are actually quite good, and probably a better reference than most of the crap (and heavy) books sold in bookshops, even for learning HTML.

XSL provides both a relatively general transformation language for XML (XSLT) and flow objects to handle display of a transformed XML document on screen or paper. James Clark who wrote excellent freeware SGML and then XML parsers is editor of the transformation language standard (XSLT).

System

VSTa is Andy Valencia's very interesting microkernel based operating system, written in amazingly readable C. It has only a small following but it does work (as opposed to abandoned University research projects), is free, and innovative. Now that Linux is popular there is a need for more refreshing ideas than just being compatible with antiquated Unix designs. Microkernels are not a new idea, but it is high time more systems appear where all the drivers, network code, etc are not all in a giant kernel they take down with them when they crash. User mode system software is also much easier to develop and test.

L4 and its clone Fiasco are interesting high performance microkernels.

It is amazing how few alternative OS projects the free software world has -- there is little between the large Unix clones, and numerous projects who only have a web page written by an undergraduate calling for volunteers... The GNU Hurd looks a bit like a joke.

GUI

The GUI world is probably as ossified as the operating system world with hardly anything new appearing to improve the usability of the traditional user interface model beyond the current Windows/ Macintosh model (and Unix imitations).

The Oberon project has a boring language to sell but some nice user interface stuff that is worth a look if somewhat odd at times. A similar user interface is implemented in the Wily text editor for X11, itself inspired by the Plan9 user interface.

The sort of window management seen in Oberon, Plan9 or Wily is available in ion, a X11 window manager. It is suprisingly usable even with applications designed for traditional window managers with overlapping windows.

VNC (Virtual Network Computing) is a nice set of clients and server allowing the remote display of desktops. It uses a simple remote frame buffer protocol which turns out amazingly usable and removes the complexity from the client and allows greater flexibility. The client is simple enough to be available virtually anywhere unlike more complex systems.


top | page author | last updated 20030628: updated functional languages, links ...