Multics was an early
mainframe time-sharing operating system, with many advanced features.
The HURD
is the planned future kernel of the GNU project. It will support
sophisticated features in the form of servers for various
services, such as the filesystem, which will make it easier to
users to adapt their working environment to their needs.
The FreeBSD project
maintains a free Unix-like kernel. It differs from Linux mainly in its
development philosophy, which is more cathedral-like
than bazaar-like. This means it has fewer developers, and trails Linux
in many aspects, particularly in the areas of drivers for new hardware
components and peripherals, but also gives it a reputation for solidity
and reliability which make it a favorite for large web servers and
ISPs. See also TrustedBSD
(focussed on supporting the Information Technology Security Evaluation
Common Criteria), OpenBSD
(aiming out-of-the-box cracker resistence) , NetBSD (aiming at maximal portability).
Amoeba is a distributed
operating system developed at the University of Utrecht, in the
Netherlands. It requires several machines connected to a
high-performance network. The operating system allocated processes
to local or distant processors, transparently to the user. There
is a Unix interface layer.
Plan9 is an
operating system developed at the former Bell Labs (inventors of Unix,
C and C++, now renamed Lucent).
It is not freely available. It includes a very simple windowing system
named 8 1/2. Nowadays Lucent seem to be focussing on Inferno, their network
operating system for embedded computing.
VSTa is an operating system
core which runs on several x86 configurations. It takes ideas from
several research operating systems and is mainly POSIX-like. It
supports SMP. See also Operating
Systems Project Information.
Linux is the kernel of a
Unix-like operating system, written by Linus Torvalds and a cast of
thousands of hackers across the Internet. It is moving towards POSIX
compliance, and runs on several different architectures, including
multi-processors (the x86 version
is the most stable).
Linux is distributed under the terms of the GNU General Public Licence,
which means that it can be copied free of charge, and that all further
developments based on it come under the same rules.
Escape the Gates of Hell Use Linux!
No Bill, No Bugs!
The Linux Documentation
Project maintains a large amount of useful information about
Linux, including the HOWTOs and a list of Linux-related projects.
Debian is a non-commercial Linux
distribution which is developed openly, in the spririt of Linux and
GNU, by hundreds of developers across the world. It emphasises very
high quality and interoperability of packages. Thanks to the large
number of volunteer packages developers, it can offer a far larger
choice of packages than other distributions.
The Linux Gazette is a
non-commercial online WWW publication, and member of the Linux
Documentation Project, that is dedicated to two pretty simple ideas :
making Linux just a little more fun, and sharing ideas and
discoveries.
Q: How do you recognize an experienced Emacs user? A: He wishes the terminal had pedals.
Emacs is an extremely powerful,
extensible editor. It is a flagship of the free software movement,
since it was the success of an early version of the editor which
convinced Richard Stallman that users were interested in the concept of
free software.
XEmacs is an alternative
development branch from the GNU Emacs group.
Gnus is a very powerful news and
email reader integrated with emacs. It allows you to split mail
into groups, which is indispensible if you're on a few mailing
lists, and has offline newsreading capabilities.
Information on language
research : theory, design and implementation of programming
languages.
Haskell is a very beautiful
non-strict (lazy/call by need) strongly-typed functional language
quite similar to Miranda. It features an innovative use of monads to
reconcile I/O with pure functional behaviour. Like SML, it uses a
Bird-Milner type inference system. A particularly elegant feature of
the syntax is its list comprehensions, which let you write the
(infinite) list of pythagorean triples as
[ (x, y, z) | x <- [1..], y <- [1..], z <- [1..], x*x + y*y = z*z]
SML
(Standard ML of New Jersey) is a strict strongly-typed functional
programming language. SML/NJ is a free programming environment (optimizing
native code compiler for many platforms) for SML.
Concurrent Clean is another
functional programming language based on graph rewriting. It is not
free.
Two implementations of the Dylan programming language: Gwydian under a BSD-like licence, and
Functional Objects from
Apple/Harlequin.
Erlang is a concurrent
programming language with very lightweight processes and integrated
support for distribution.
Mercury is a
new logic/functional programming language developed at the University
of Melbourne. It combines the clarity and expressiveness of
declarative programming with advanced compilation techniques, making
it better suited for large-scale program development than Prolog.
Squeak is an excellent
portable, public-domain implementation of the Smalltalk programming
language and development environment. It is a genuine, complete,
compact, efficient Smalltalk-80 environment.
Sisal is an attempt to bring
high performance to numerical programming in a functional style.
Lcc is a
small compiler for C which targets several platforms.
Modula
3 is a Pascal-like language, adding exception handling,
concurrency, object-oriented features and garbage collection to
Pascal. It can be used for large software projects. There are free
compilers for Linux.
Oberon System 3 is an
operating system based on Nicklas Wirth's Oberon programming language.
The system is very compact, being based around the idea of components
or reusable modules. There are implementations which work atop Linux,
Windows and MacOS, as well as a native version for the x86
architecture (with weak device driver support). The language (not the
most appealing aspect of Oberon) is Pascal-like, with static typing,
garbage collection, single-process multitasking, dynamic loading, fast
compilation and "slim binaries" which are compiled to native
code on loading.
Eiffel is based on Programming by Contract. SmallEiffel is a
GPL implementation which can generate Java bytecode.
The Languages
List maintained by Bill Kinnersley, and the searchable Free Compilers
list maintained by David Muir Sharnoff. The 99 Bottles on
the Wall page provides examples printing the lyrics for this
famous song in 227 languages: sendmail, Turing machine, vi macros.
The original scripting language in the Unix world is the shell, and the
Unix philosophy is based on using the shell as a glue to hook together
many small, specialized tools. More recently scripting languages have
gained popularity for rapid prototyping, especially for GUI building.
Another important use is as an extension language for complex
applications, allowing the user to customize and extend the behaviour
of the application. The best example is Emacs, which incorporates a
Lisp interpreter.
Scsh is a Scheme
interpreter with many extensions for real-life programming: POSIX
functionality, sockets, tty access. The author, Olin Shivers,
describes it as a broad-spectrum systems-programming environment for
Unix embedded in Scheme. The underlying implementation is Scheme 48.
The most popular scripting language is probably Perl, a mixture of shell idioms and C-like
syntax concocted by Larry Wall. It provides very powerful text
manipulation commands, in particular for regular expressions, and
allows very concise (unreadable) programs. Perl is widely used for CGI
programming.
Python is an object-oriented,
clean scripting language.
In 1992 Richard Stallman started the Tcl War by asking
programmers not to use Tcl, which he criticised for its weaknesses as
a language. He encouraged people to use STk (a Scheme interpreter which permits
access to the Tk toolkit). His
annoucement in 1994 of the Guile project (a Scheme
interpreter with many extensions for systems programming and GUI
programming), which is to be the recommended scripting language for
the GNU project, started the Second Tcl War.
Scheme is
a small and clean programming language from the Lisp family. It has
very clear and simple semantics, and a small number of ways of forming
expressions. Scheme is the language chosen by the GNU project for
embedded scripting ; the GIMP (the
Gnu Image Manipulation Program, or Photoshop beater) includes the SIOD
interpreter, the Bash shell will soon include one, and the next major
Emacs version will be based around Scheme rather than Emacs Lisp, which
is showing its age.
Several Scheme implementations exist (a more complete list is at
dmoz.org) :
SCM is a
small, standard and portable implementation with many extensions.
MzScheme is a
nice implementation which includes a large library of support code. It
provides a module system, threads. Rice University have also developed
a sophisticated editing environment (DrScheme) which
helps learn the language.
Gambit runs on the
Macintosh and other systems, and includes a compiler to C.
Elk is a Scheme-based Extension Language Kit, which is designed
specifically for embedding in C or C++ programs. It includes
extensions for accessing Unix functions, regexp parsing and Xlib
programming.
STk is a small Scheme
interpreter linked to the Tk widget library. Thus you can enjoy the
ease with which graphical interfaces can be created, without having to
suffer from the poverty of Tcl.
SIOD
by George Carrette (Scheme In One Defun) is a tiny implentation
(8 kB binary!) with interesting addons for network programming.
Not fully R4RS compliant.
RScheme adds several
object-oriented notions to Scheme.
Guile is the GNU
project's Ubiquitous Intelligent Extension Language, in fact the scm
interpreter with a large library of systems and GUI extensions.
SLIB
is the Scheme Library, which contains a wealth of code code for
sorting, building relational database, different types of macros,
object-oriented extension and much much more.
There are also compilers for Scheme which improve runtime
performance :
Gambit includes an
optimizing compiler which generates C code.
Bigloo is another
compiler with emphasis in C/Scheme integration, and also features a
backend for the JVM.
Stalin
is a very highly optimizing compiler for Scheme. Unlike the previous
compilers, it eliminates from the binary all elements of the runtime
library which are unused in the program, leading to very small
executables. Stalin requires about 30Mb to run on the x86
architecture.
The other main dialect of Lisp currently in use is Common Lisp,
whose emphasis is more on the practical building of large, complex
programs than on the simplicity and orthogonality attained in Scheme.
It has two namespaces, one for variables and one for functions (unlike
Scheme), and many different declarative forms (compared with Scheme's
define and define-syntax). Several
implementation of Common Lisp offer very good performance (they can
compile to native code on several platforms), rivalling that of
languages such as C and Fortran.
Franz Inc market Allegro Common
Lisp, a professional development environment with CLOS and CLIM. They
are offering a free full version of their product for Linux users
(without CLIM, unfortunately).
Forth is an interactive stack-oriented programming language and
development environment. It is atypical in using postfix notation
(like HP calculators) and in being extensible. Forth systems
provide a dictionary of predefined words (which correspond to
functions in other languages). Programming consists of adding new
words, each defined in terms of existing words, to the dictionary,
building up a vocabulary which solves the problem at hand.
As a language Forth is deceptively simple. There are only a few
general purpose building blocks to learn before being able to
write programs. The minimal syntax (words are defined as sequences
of letters separated by spaces) eliminates the need for a parser.
Nevertheless, Forth is a very powerful language, letting the
programmer define intelligent data structures and even custom
control structures. It allows rapid, interactive, modular software
development. It has been said that learning Forth changes your
attitude to programming.
Forth is a small, efficient language which is widely used in
resource-constrained embedded systems. Implementations are
available for just about every computer under the sun. And indeed
Forth is used in the boot subsystem of Sun workstations.
The Forth FAQs are available online, in six sections:
The Taygeta archives, also
accessible by ftp.
The Forth archive, where you can find a Forth system for pretty
much any processor or operating system in existence. Read about Forth
in the days of BBSes, download archives of comp.lang.forth. Mirrored
at ftp.cdrom.com and
(partially) at the
University of Bremen.
The
GForth site. As well as the latest version of GForth, you'll find
technical papers about writing Forth compilers and the Forth Online
Resources list (which is a more comprehensive version of this
page).
Forth Inc.'s site includes
an excellent history of the development of Forth.
PostScript is a page description language developed by Adobe which is used in most
high-end laser printers. It differs from other page description
languages such as HPGL in being a programming language, heavily
inspired by Forth.
Privacy on the web: the Muffin
filtering proxy (written in Java) allows you to trash banner ads,
cookies, javascript and animated GIFs. Junkbuster is a filtering proxy with
better performance and fewer features. The Crowds system at ATT
allows anonymous browsing.
James Gleick, author of
Chaos, an excellent book about the development of chaos theory,
fractals and nonlinear dynamics. Now writes columns for the New York
Times magazine, and is fairly critical of Microsoft.
A description of the ISO
8601 standard for external time representation. Please don't write
things like 03/02/97; that could mean (depending on whether you're in
the US or in Europe) the third of February 1997 (or 97!) or the second
of March 1997. Write it as 1997-03-02 and things will be clear.