David Neto's computer programming page
Updated October 1, 1998
October 1, 1998: Better reference to CTAN; more on CVS, and now
Perforce
May 9, 1998: Added Wotsit's Format site under Reference
February 13, 1998: Added xpdf under Tools
January 29, 1998: Added omniORB, a free CORBA 2 ORB
December 18, 1997: Updated link to Pizza
December 5, 1997: Added link SGML-Tools when 1.0 was announced.
I use CWEB
for most of my programming. It's a literate programming tool
for C, C++, and Java. If you don't know what that means, scan
comp.programming.literate.
Here are some programming-related links that aren't anywhere else on
my web site. Ok, so there's some overlap...
You may want to visit these other pages on my site:
Contents
Quote of the page (1):
I have to report reluctantly that nearly every program
that I have examined closely during the past thirty years has contained at
least one bug.
Donald Knuth, in
THEORY and PRACTICE
Quote of the page (2):
You know what your problem is?
You like programming too much!
David Mitchell,
to me, early 1997
- Interesting languages and paradigms
- Functional programming,
especially the pure and lazy kind. For more
information, see the
comp.lang.functional FAQ maintained by Graham M. Hutton.
For those who already know a bit about functional programming,
but want to know why I am particularly impressed by it, see
John Hughes' Why Functional Programming Matters. It describes and
demonstrates the versatile
glue --higher order functions and lazy evaluation---
that allows more modularity in programs.
- Haskell
(See also
the Haskell portion of the
comp.lang.functional FAQ.)
Haskell is a lazy pure functional programming language, now
at version 1.4. A tutorial and definition for Haskell 1.2 was
published in the ACM SIGPLAN Notices 27(5), May 1992.
Updated versions are availabe at http://www.haskell.org.
- Java, of course. Visit my Java page.
-
Pizza: ``A substantial companion to Java''. Pizza adds
the following to Java:
parametric polymorphism, first-class functions, and class cases
and pattern matching. The language compiles down to Java virtual
machine byte codes, and is compatible with Java code and Java libraries.
Martin Odersky and
Philip Wadler
are the main forces behind Pizza.
I'm more familiar with Wadler's work. By his track record
and the positioning of Pizza, all I can say is
``Awesome!''
- ML. This is an industrial strength mostly-functional language.
It is strict (not lazy). It has a very powerful type system:
programs passing the type checker are guaranteed to be type safe;
the type system allows and encourages parametric polymorphism.
Standard ML of New Jersey is an ``industrial strength''
and freely available implementation of Standard ML.
For further fun, you might want to poke around
Andrew Appel's web pages.
- Scheme. Scheme is a simple and powerful dialect of LISP.
Among other things, it is lexically scoped and supports many
programming styles, though it is naturally an eager functional language.
It still has too many parentheses for my taste. Also, it
is dynamically typed.
- Smalltalk -- a wholly
object-oriented language developed at Xerox PARC in the 1970s.
- Languages I've used and can recommend (in alphabetical order, and incomplete)
- AWK.
If you don't know AWK, then you may want to plunge into Perl instead.
- C and CWEB. Well, duh.
- Java. Good for Web applets and standalone GUI thingies. Sure beats
straight X for convenience. Thank God for garbage collection.
- MetaPost.
Fabulous for technical drawings, if you can get past learning
yet another Knuthish language.
- Perl.
Great for quick hacks. Thank God for regular expressions and
associative arrays.
- PostScript. An excellent language for debugging output -- honest!
- Reference
- Tools
- Libraries
- C and C++ (See the FAQs as well)
- Custom Innovative Solutions Corp. --
you can find source code here.
- software.net's Reusable Software Component Market
-- partly sponsored by IBM.
- Willows -- makers of TWIN,
a source- and binary-level compatibility
library and environment for
the Windows API.
In their words, ``Software Tools and Services
Enabling your Windows® Applications to Run on UNIX®,
Macintosh® and Other Systems.''
Willows is now distributed under the GNU public license.
They're hoping for a good interaction with the WINE project.
Back to David Neto's home page