Make your own free website on


General | Movings | My favourite sites | My Background | My Latest Stuff | Black scientists | Greatings .. | Languages | Distributing | Designing | Telecommunication | Peoples | Research | Publications

Object-Oriented Languages

An nice language is Dylan.  Dylan is a safe, strongly-typed, pure object-oriented language that supports multiple dispatch, modules, first-class functions etc. Dylan was originally designed by Andrew Shalit at Apple. There is a commercial implementation of it available from Harlequin (for Windows 95/NT platforms), with a personal version available via free download. Free versions of Dylan for various UNIX machines are available from the Gywdion group. Other useful Dylan sites include: Python is another favourite. Interpreted, and ideal for knocking up quick prototypes, but with a nice module system, lots of handy libraries, and almost purely object-oriented. 

Apart from Simula-67, Smalltalk started the OO craze. Implementations are becoming more easily available now. (See also ObjectShare's non-commercial VisualWorks Smalltalk, available for Linux and Windows) A lot of Smalltalk-related information and projects are accessible from the Panasoft Smalltalk Links. Here is a Smalltalk tutorial from IBM. 

Some other clean OOLs are:

  • Blue, a clean OOL especially designed for teaching first-year students. 
  • Modula-3 
  • Oberon 
  • Sather 
  • Eiffel (see also here
  • TOM is a new object-oriented programming language that advocates unplanned reuse of code (classes can be extended in very flexible ways, even without source code for them).
Then we have the less clean C extensions: Objective-CC++ (Readings, FAQS, ANSI Standardor here)
A recommended book on the design of C++ is
"The Design and Evolution of C++", by Bjarne Stroustrup, Addison-Wesley, 1995. 
There seem to be two major contenders for the "best GUI toolkit" title at the moment. GTK+ (the GIMP toolkit) is more C oriented, but does slots and signals without a preprocessor, whereas Qt uses a preprocessor (MOC) but has the dis/advantage of being a complete solution for porting to Windows 95/NT. The GTK+ toolkit has bindings for several languages, including a C++ wrapper for GTK+ called gtk-- (or FTP). 

Of course, there is the cleaner C++ derivative, Java (see also the Java white paper, a Java tutorial, Java Games and Java Puzzles). Some problems with Java that I've heard about include: hard to format a floating point number, integers etc. are not objects so cannot be subtyped or subranged, non-portable thread semantics, text I/O difficult for beginners. 

Also check out Pizza, which is Java extended with parametric polymorphism, first-class functions and pattern matching. There are also quite a few other languages being implemented on top of the Java Virtual Machine, see here, here and here

Rational Software Corporation have done an interesting comparison between development in C and Ada. 

Rational Software Corporation also sell Purify (a heap-memory checker) and are responsible for the OO Unified Modelling Language, which is now the industry standard for specifying the structure of OO systems. 

Here are some Software Engineering methods/tools for object-oriented programming: 

Functional Programming Languages

Haskell is the one that I've used the most. It is an elegant high-level language, with fast compiled implementations plus a interpreter (HUGS) that is good for development. Haskore (an extension of Haskell for writing MIDI tunes) comes with it too! 

It is not too hard to interface Haskell to arbitrary C procedures, and I have interfaced it to mSQL (a freely available mini-SQL database system). Contact me for details. 

Logic Programming Languages

There is a WWW virtual library for logic programming. Michael Ley has a database/logic programming bibliography

Prolog is the most commonly known logic programming language, albeit impure. A few well-known implementations are: Quintus Prolog, SICStus Prolog, Eclipse Prolog, SWI Prolog (free!). Qu-Prolog is Prolog customised for formal methods (it handles quantifiers, object-variables and substitutions as primitives). 

The Prolog at VIP is free for non-commercial use. Another free one is TRINC-Prolog. Michael D. Kersey recommends Amzi! Logic Explorer and the "Adventures in Prolog" (with a "very nice and complete tutorial"). See here for other free Prologs. [,, and; comp.lang.prolog, 12Mar99.] 

Roman Bartak's Interactive Prolog Guide includes FAQs, program samples, implementations, and references. 

The BURKS project provides documentation and free Prolog implementations for DOS, Windows etc. 

LPA Prolog for Windows -- with an IDE and single-step debugger -- offers a free 30-day trial. [Nov98] 

Amzi! Logic Explorer is free for personal use. It comes with a full tutorial and sample programs, plus a GUI development environment. Amzi! inc. also offers a Prolog compiler and embeddable libraries (for C/C++, Java, Delphi, VB, etc) for a 90-day trial. [Dec98] 

Mercury is an elegant, pure, logic programming language from Melbourne University. The fastest logic programming language around... 

The Cetus Links OO Prolog page has links to object-oriented logic programming languages. 

Text Formatting Languages

LaTeX is the defacto text formatting system for academic papers containing mathematics. There is lots of online reference material for it. See also the Comprehensive TeX Archive Network (CTAN). 

For HTML (the web markup language):

Free Implementations

The best programming languages are free, so try the free compilers list to find an implementation for your machine. 

Garbage collection is an important aspect of modern programming languages. Harlequin's Memory Management Reference is a good resource for everyone interested in memory management and garbage collection. 

Poplog is an open source, extendable, portable, multilanguage software development environment providing incremental compilers for several interactive programming languages: Pop-11, Prolog, Common Lisp, and Standard ML. It comes with documentation, libraries, and teaching materials for AI and Computer science (and more general programming). 

Language Design 

Here are a few interesting papers about language design:

The Intro ..

C++ tutorials for Windows 32, how to do without MFC, getting the compiler
to do the hard work of avoiding memory leaks, games, frequency analysis etc
DJGPP Setup Guide and Graphics Coding Guide
... interactive guide to C++ ... written with Pascal users in mind
C++ Language Tutorial (Gordon Dodrill - shareware)
Mashall Brain's (of Interface Technologies) tutorial
...a new OOP/C++ course on the network (uses PowerPoint)
Yosef Cohen's course in C/C++. This is a course given over the
internet. I don't know if you have to pay.
Guru of the week - ie discussion papers on using C++
The Essence of Object-Oriented Programming
A FREE On-line Tutorial by Dr. Bruce E. Wampler
Tutorials etc on Borland's CBuilder
Tutorial on the STL by Phil Ottewell.
Very simple C under DOS or MS-windows. Not much C++; possibly useful to someone interested in programming MS-windows without MFC etc.

Frequently asked questions

Joe Buck's G++ (Gnu C++) FAQ list:
(look in this to see where to find G++ compiler files)
Visual C++/MFC FAQ list
Watcom C++ FAQ
Vinit Carpenter's list of C and C++ tutorials (old)
Standard template Library FAQ
C++ standardisation and comp.std.c++
Steve Summit's C FAQ list:
Numerical analysis FAQ list
Ross McKay and Wade Guthrie's FAQ list on "Platform Independent GUIs"
"TeamB Borland C++ 5.0 FAQ Page"
comp.object FAQ
alt.comp.lang.learn.c-c++ FAQ list
de.comp.lang.c++ FAQ (in German)
Object orientation
He has also got a tutorial on C for Fortran users
Notes for a university lecture course, but
maybe there is enough here for independent study.
Note on pointers - perhaps more oriented towards C than C++.

C++ standards and documentation

C++ Standard in pdf format -
Draft C++ standard - January 1997 version - lots of formats
Draft C++ standard - same as above? - ps and pdf formats
Updated appendix to ARM describing new features
Review, errata, extracts from Stroustrup's
"The C++ programming language, 2nd ed."
Errata for Stroustrup's "The C++ programming language, 2nd ed."
Ian Joyner's 1996 critique of C++ (3rd edition)
Quick reference to STL
Object oriented standard discussion
C9X draft standard (pdf and ascii)
Notes on smart pointers
Extensions introduced by standard
C++ standard problem list
Notes about various aspects of C++, site list, book list etc
Incompatibiities between ANSI standard and C++ described in ARM

C++  Compilers

Gnu win32 related projects
ECGS home page (experimental Gnu C++ compiler)
DJGPP compiler
Free, public domain C/C++ compiler and checker technology (with source)

C++ Environment

OSE class library (error management, memory management, date/time etc),
environment and documentation tools
emacs mode
"ABC++" preprocessor - converts a more friendly
variant of C++ to C++.
Software dev tools purchased or considered by Fermilab
Freeware UML class diagram drawing tool with C++ code generation
(runs under MS windows)

C++ User and special interest groups

C++ and C SIG (New York)
C++ SIG of Object Developers Group (ODG), New York City
C++ SIG (San Francisco/Bay Area)
Association of C & C++ users
C/C++ users' group

C++ Source Codes

HP standard template library*
D.R. Musser and Atul Saini, STL Tutorial and Reference
Guide: C++ Programming with the Standard Template Library
Addison-Wesley, Reading, MA, 1996.
Includes stl and ANSI-like string class (now out of date)
SGI version of standard template library (PCs or unix)
Code, documentation, links
SGI version of STL for various platforms, links to STL sites
Standard C++ library (Integrated with SGI STL 3.2, templatized
IOStreams and locales, wrappers for C headers putting the symbols
into namespace std)
ObjectSpace STL
ANSI-like string class (almost same as Musser/Saini string class)
... string class tested under Unix, DOS, and MacOS.  It's at:
A non-template portable emulation of the standard string class
Cay Horstmann's "Safe STL".
Johathan Lundquist's non-standard library covering the same kind of facilities
as the standard library
Regular expression editor (portable), OLE automation examples (MS Windows) etc
John J. Barton and Lee R. Nackman: Scientific and Engineering C++
Edward M. Reingold's Calendar Papers and Code
Todd Knarr's date and time classes
The files Date.C and Date.h contain a date class capable of handling
dates from 1 Jan 4713BC to 31 Dec 9999AD. Time.C and Time.h contain
a time class capable of to-the-second time resolution. This seems to
have vanished; anyone have an update?
"DS++", a data structures library written in C++
Oracle Call Interface Template Library
M. A. Sridhar: Building Portable C++ Applications with YACL
Newmat09 matrix library
Random number library (random numbers from a variety of distributions)
Daveed Vandevod's valarray (array manipulation) programs
Roldan Pozo's sparselib++ and mv++ (& lecture notes on numerical C++)
Roldan Pozo's TNT matrix package
Dan Quinlan's A++/P++ (description only at this stage, also 
a pretty comprehensive set of numerical links).
The Matrix Template Library - includes sparse matrices, iterative
methods etc
Keith Briggs' double double (quad) precision package
apfloat: C++ High Performance Arbitrary Precision Arithmetic Package
The Blitz++ Numerical Library Project
(techniques which will enable C++ to rival the speed of Fortran for
numerical computing, while preserving an object-oriented interface)
Linear algebra package
    (Mac archive)
GNUSSL Scientific Software Library.  Linear algebra and arrays.
Rlab: Matlab "semi-clone" written in C++
rmatrix - matrix library and associated classes
Ed Tisdale's multidimensional array package
Templated library for complex numbers, dynamic vectors, static vectors, full
matrices, band matrices, sparse matrices, etc. and a representation for Tensors
including contraction, direct product and multiplication.
Multidimensional array library using expression templates
Numerical Toolbox for Verified Computing
Numerical optimisation (local and global)
Interval arithmetic
Parallel Object-oriented Methods and Applications (POOMA) framework
Portable Expression Template Engine
Diffpack finite element library
Generic Ordinary Differential Equation Solver System
"vs.lib" integrable/differentiable objects in C++, and "fe.lib", 
an object-oriented finite element library fe.lib has free source
code, however, it is written with vs.lib which is not free.
Finite elements and partial differential equations
Modelling 3D fluid flow and other 3D diff. eq. modelling
Class Library for Accelerator System Simulation and Control
(includes a matrix package amongst other things)
Digital signal processing library
Informatique CDC www page (Bison++, flex++, remote procedure
   call library) (This link seems to be broken)
Bruce Wampler's cross-platform C++ GUI Framework
Zinc cross-platform GUI
(A commercial product available free for personal use)
wxWindows cross-platform GUI
Code guru (lots of MFC stuff & notes on how to do things)
MFC, win32, COM and some general C++ stuff
COOOL optimisation (ie finding numerical maxima and minima) library
ADAPTIVE Communication Environment (ACE): An Object-Oriented
Network Programming Toolkit in C++
Mumit Khan's fftpack++
C++ interface to the netCDF portable binary data format:
(for atmospheric scientists and geophysicists)
Snippets collection - computer science and mathematics functions, mostly
C, some C++
Data mining and analysis
Object Oriented MPI (OOMPI): A full-featured class library for MPI.
What's MPI? Message passing interface (for parallel processors)
C++-Wrapper for MPI (parallel programming)
Physics and parallel processing software (and articles) 
... a collection of C++ string, array, and matrix 
classes in the public domain
Kevin Copps' valarray
Genetic Algorithms (GA) class library called TOLKIEN.
PDP++ neural network software
Callback library:
Paul Lucas's finite state machine
... a collection of C++ algebraic objects, allowing equation 
representation+edit under windows environment.
Image compression using wavelets
Wavelets package
Crypto++ is a free C++ class library of cryptographic primitives
C++ wrapper for Peter Gutmann's cryptlib
Multiple integer and rational arithmetic c/c++ library
Extend range of exponents of floating point numbers
(Same precision as double, exponent range is increased)
Matlab to C++ Compiler and C++ Math Matrix Library - MATCOM V2
Now is commercial, but you can download a 30 day trial version
Mark Von Tress's matrix package: large matrices on small PCs
Rich Hickey's library "Callbacks in C++ Using Template Functors"
Computational number theory (LiDIA)
LEDA: data structures, graph algorithms and geometric algorithms etc
Shareware database system - registered version includes source code;
also links to other database sites relevant to C++ & databases
George Barwood's cryptographic software
The fastest FFT in the West
(UNIX; in C but maybe you can put a C++ wrapper on it)
2x2,3x3,4x4 inline matrix manipulation
Sage++ translater for parallel C++
Data aquisition, storage, analysis and presentation of
large bodies of scientific (particularly physics) data
Assertion checking (forall, x/x',time) & logging - parts require gcc
FFT (Fast Fourier Transform) for Borland C++Builder (shareware)
Numerical recipes in C, F* etc
CIDLib: general purpose C++ development framework, 300+ classes.
Source, documentation & tutorial. Release is for NT/VC++, but portable
to other platforms. Expect Linux version soon. Includes environment, collection
classes, numerous core data types, encryption, error message and exception
management, file system support, TCP/IP, regular expressions, windows and
graphics support, etc. etc.
Brighton University Resource Kit for students
Some code examples
Nonlinear statistical modelling using automatic differentiation
(main product is commercial but there is a demonstration version
for download)
Perl-like C++ classes for string manipulation
RE-Lib - C++ Regular Expression Library