Other Sources
C Related Languages Programming Languages
Questionable Utility Company

  C Resources

The netlib scientific computing repository (mirrors: TN, UK)
Holds software to compute just about any function, simulation, or other theoretically interesting algorithm you might care about.

Selected Technical Reports from Bell Labs.
The short and unassuming page offers pearls such as Kernighan's "Why Pascal is Not My Favorite Programming Language", Bjarne Stroustrup's meditation on data hiding "Sixteen Ways to Stack a Cat," and an early stage of Andrew Koenig's "C Traps and Pitfalls".

Metre Version 2.3, a rule­based ANSI C parser
The freely distributable, ftp­able archive comes with rule sets for a metrics tool and a call­tree tool.

SPLint, formerly LCLint, a lint­like tool for ANSI C
David Evans, Yang Meng Tan et al. based their C program checker on LCL, a member of the Larch family of specification languages. SPLint, about which David wrote his master's thesis, can either check whether ANSI C code conforms to specifications written in LCL, or function as a "plain" ANSI C lint.

dcc, a C checker from the Ecole Superieure d'Electricite
was described in the December 1995 issue of the ACM SIGPLAN Notices - and only there; the source code in their FTP directory comes without a manual page. (Their readme file offers some guidance, but only after you've scrolled past a description of their implementation modules.)

The lcc Retargetable Compiler for ANSI C
Christopher W. Fraser (formerly of AT&T Bell Labs, now at Microsoft) and David R. Hanson (formerly of Princeton University, now at Microsoft) plug their compiler and the book about it in a well­designed, informative subtree that lets you browse the lcc code and manual page before you ftp it, offers the book's preface and table of contents, and now also the (short) erata sheets for first and second printing.

LCC-Win32: a compiler system for Windows 95 - NT
Jacob Navia and others have ported the lcc compiler to win32 and are well on their way towards a free development environment - with debugger, dump tool, a make program, and an editor. The binaries are free; the system's source can be bought for 600 French Francs, that's about US $100.

EiC: An extensible interactive C interpreter/compiler
Ed Breen is developing this free, byte-code based C interpreter/compiler system. EiC runs single translation units in modern C (but no un-prototyped functions or internationalization) with new "safe" and "unsafe" pointer qualifiers. It has been widely ported, including to PalmOS, various flavors of Unix, and Windows.

Bounds checking extension to GCC
Patches that convince various versions of GCC to generate code that checks pointer validity at runtime. The result catches accesses to free()'d pointers, out-of-bounds array elements, and to automatic variables past their duration, based on the original 1995 paper by Richard Jones and Paul Kelly.

DJGPP is a 32-bit C/C++ development system for Intel 80386 (and higher) PCs running DOS, based on ports of many GNU development utilities. DJ (first name, not initials) Delorie's site collects pointers to the newest release, history, documentation, the FAQ, and archives of the mailing list.

Digital Mars C/C++
While the full Digital Mars C/C++ environment is sold on a CD for a nominal free, many of the pieces can be downloaded for free, among them the compiler binary, DOS libraries, basic command line utilities, and ports of the STL and of Hans Boehm's garbage collector.

C and C++ style guides
Christopher Lott maintains this short, plain page with links to style guides, coding rules, and discussions from USENET.

A tutorial on pointers and arrays in C
Ted Jensen wrote ten chapters about this difficult aspect of C, drawing on his experience discussing pointers and arrays in forums like FidoNet's C Echo and USENET's comp.lang.c newsgroup. He knows his subject and the writing is consistent; if your books and Steve Summit's comp.lang.c FAQ didn't help, perhaps Ted can. (The tutorial's welcome page also offers archived HTML and ASCII versions for download.)

Eddie's Basic Guide to C + HTML
Eddie Wong wrote this set of about 30 short tutorial units for beginners. The original site shut down in 2005; this is a replica.

Learn C/C++ Today
Vinit Carpenter has moved the list of tutorials and books from his Linux PC to cyberdiem.com.

1. Int'l Kaiserslautern Shortest C Contest
375 participants tried to write the shortest (and some the most obfuscated) C program that counts from its first argument to its second. Nils Magnus' and Peter Conrad's subtree has all the submissions and the rules; their evaluation was posted to comp.lang.c in early March 1995.

The C Standard Library and Selected Help on ANSI C
Ross Richardson from the University of Tasmania, Australia has collected this brief Standard C quickreference. It's not what you want as a first introduction, but mostly correct - and the library quickreference is great for refreshing one's memory of what the order of parameters for qsort() was, or wheter it's CHAR_BITS or CHAR_BIT.

C Programming Reference
Looking for an online C programmer's reference, Martin Leslie found only tutorials; consequently, he attempted to fill this gap in online C documentation himself. By now, Gary M. Greenberg has stepped in to help maintain the material.

ANSI C Programming
Phil J Willis' introductory ANSI C tutorial. Parts of it are not yet fleshed out, parts of it are wrong; but the writing is above average.

C in the Free On-line Dictionary of Computing
Both the general dictionary and the entries on C and neighboring topics are excellent. It's a place to get lost in while browsing, make new connections, and pass on some of one's own knowledge to others.

U of Toronto
The Computer Science department of the University of Toronto, Canada, keeps an original collection of texts on Unix programming, among them the classic "Can't Happen or /* NOTREACHED */ or Real Programs Dump Core" by Ian Darwin and Geoff Collyer, an up­to­date copy of the Indian Hill style guide, and Henry Spencer's "How To Steal Code or Inventing The Wheel Only Once."

The Association of C and C++ Users (ACCU)
This UK­based non­profit user­ and vendor­organization reviews software and books on C and C++, publishes newsletters, and generally lobbies the British Standards Institute.

FAQ in de.comp.lang.c
About a dozen German USENET readers have taken the trouble to translate Steve Summit's C FAQ into German; apart from the fancy hypertext version, there's also a copy as plain text.

The C/C++ Users Journal
Sorted by year and month, CUJ's site serves compressed tar files with the source listings for the corresponding issues, from 1990 to the current one.

C Programming Language References at UWO
Mixed with a good selection of site and book references, James Blustein's Scholarly Resources for CompSci Undergrads present short notes on K&R II, on debugging, and a longer example of how to encapsulate a data type in C.

Tower Floor -- C Programming
One location in Anthony Thyssen's charming maze of towers and floors is dedicated to a loose collection of ASCII documents on (frequently Unix-specific) C programming.

The EE Compendium: Embedded C Code Cache and C Cross-Compilers
Randy Rasa lists cross-compilers to 8051, PIC, and 68HC11 environments, both commercial and free. He's used many of them and comments in terse, factual paragraphs that read well; some link to longer, more detailed reviews. The "Embedded C Code" archive mixes some unspectacular utility functions ("convert a long to a string") with more arcane knowledge about how to talk to particular hardware.

Peter Seebach's Useless C Page
Another comp.lang.c.moderated co-moderator showcases his original documents: the "Infrequently Asked Questions," a few libraries, and errata for K&R II and a Schildt book.

Steven Pemberton's enquire.c
Striving to determine arithmetic properties of a platform at compile time in a pre-ANSI C world, Pemberton resorted to an investigative program that tests language properties and can reconstruct the <limits.h> and <float.h> header files from them. Even if you're not into floating point intrinsics, the code is worth reading for its quaint use of the preprocessor alone.

If you already have "gcc" and a shell installed, Jens Schweikhardt's small C program lists missing C Standard header files and a subset of any nonstandard macros #defined in the system headers.

c2ib - a Perl/STL-like library of basics for C
Richard Jones offers a collection of well-documented functions to make life easier for C programmers that miss the versatility and comfort of Perls string functions and C++'s STL collection types.

Collection of Jörg Schön's C-programs
ANSI C utilities, with Unix-style Makefiles. You'll find a few simple header file generators, message tables, inlined quicksort and heapsort routines, B-trees, Wirth's "bigsort", yet another ANSI C testsuite, and a curses version of tetris!

God vs. K&R
Luis Fernandez presents Alan Morgan's follow-up to "Clarence L. Thomas IV"s USENET posting from 1994. In his hilarious comment on this "the world is ending, repent!" spam, Alan puts a hacker spin on old religious ideas and concludes with his ten commandments of K&R.

Top 10 Ways to get screwed by the "C" programming language
Dave Dyer has been bitten once too many, and now fights back by presententing this angry list of bugs that, aggravated "by the poor design of the "C" language," caused him at least half a day of bother.

The Case Against C
P.J. Moylan's technical report for the University of Newcastle, Australia, complains about C's conciseness, its age, pointers, appeal to BASIC programmers, and lack of support for modules. (This paper is one source of the historically inaccurate claim that *p++ was in C because of a PDP-11 instruction.)

Programmiersprache C
The materials for the C language class at the University Gießen include German-language lecture notes on K&R C by Dr. Kurt Ackermann and copies of some documents from the Lysator site.

  Related Languages

The C++ draft standard of December 2 1996
WG21 has made the Working Paper available to the C++ community to give them the chance to comment on both the draft itself and the language and library it describes.

Standard Template Library Programmer's Guide
Browsable documentation for the SGI Standard Template Library, and a 3.3 release for download.

Introduction to Object-Oriented Programming using C++
Peter Müller's course materials for the Globewide Network Academy (GNA) focus strongly on object-oriented pogramming concepts. C or C++ knowledge is not strictly necessary; the course includes a short introduction to both.

Mumit's STL Newbie guide
"STL Newbie" in the title refers as much to the writer as to the reader; most of these notes were written while comp.lang.c++ regular Mumit Khan learned STL himself. The writing style reflects that; the document is full of gotcha's and slightly sarcastic references to problems the author encountered.

Short C++ tutorial for C users
From Belgium, Eric Brasseur walks the reader through the first hours of a C programmer's fresh acquaintance with C++, introducing features like references, operators overload, new and delete ("they are much more sweet than ... malloc and free") up to multiple inheritance.

Bruce Eckel: Objectives
The author has written books about, and is teaching classes on, Java and C++. His most recent book on Java programming is online as one huge text file; you'll also find lots of blurbs, descriptions, and source code from most others. Daniel Will-Harris has designed the site, but apparently stopped short of the text portions.

Understanding C++: An Accelerated Introduction
In eight well-paced lessons, Marshall Brain and Kelly Campbell treat single inheritance, pointers, operator overloading, and virtual functions. Some familiarity with C is assumed.

Tom Cargill: A False Sense of Security
A restored copy of Tom Cargill's 1994 explanation of why programming with exceptions is harder than you think.

Softintegration's Ch Language
An interpreter for C-with-classes with lots of interpreter-y extensions, such as first-class string types. Freeware binary versions of the basic interpreter are available for Windows, MacOS, Linux-x86, Linux-ppc, FreeBSD, Solaris, HP-UX, and QNX. Between the unpronouncable name, the four-line copyright notice the binary prints at every invocation, the Windows-style error messages and self-congratulatory presentation, it has a certain boastful charm. (Maybe you'll have more luck than I had in getting it to find include files.)

Cyclone - A Safe Dialect of C
This collaboration between Cornell University and AT&T Labs Research adds special flavors of pointers to C99 to allow for checks against dangling, null, and bogus pointers. Combined with a few other features the implementors wanted (tagged unions, language support for polymorphism, exceptions, new for arrays, type inference, templates) this is one entry in the race for a "better C" that stays refreshingly clear of object-oriented concepts.

Java(tm): Programming for the Internet
is Sun's reference point for all things Java. Through the occasionally outdated documentation shimmers a gleeful anti-C-bias; the directory in the programmer's guide that contains a comparison between Java and C/C++ is called "noMoreC."

pC++/Sage++ Information Home Page
pC++ is a language extension to C++ that allows invoking member functions of an entire collection of elements in parallel. It is implemented as a combination of run-time library and pC++ to C++ preprocessor, and is part of a larger system developed at the University of Indiana around the object­oriented preprocessor toolkit Sage++.

Index to Objective C information
Since Swarm, the project Nelson Minar was working on at the Santa Fe Institute, is written in Objective C, he has started an index page for the language. These days, Alex Lancaster maintains it as part of the Swarm project; Nelson has moved on to the MediaLab.

UC Berkeley's parallel extension of C implements a shared global address space on distributed memory multiprocessors. With its small set of global access primitives and parallel storage layout declarations, the language was intended to be as simple and predictable as its ancestor.

The D Programming Language
C++ compiler hacker Walter Bright's "Digital Mars" has turned out a language heavily influenced by C++ and Java that Walter and a growing group of afficionados are convinced will be "the next C."

  Programming Languages In General

Programming Language Research
Mark Leone's extensive and well­kept subtree provides pointers to ongoing programming language research projects and technical reports, language overviews, researchers' home pages, conference information, bibliographies, and a list of other general programming language pages.  It's a great place to start browsing.

The Retrocomputing Museum
Are you curious about INTERCAL? Do you want to renew your acquaintance with algol­60, the teco editor, or the jcl shell?  Need a PDP-8 emulator? Eric S. Raymond (of New Hacker's Dictionary/Jargon File fame) and John Cowan have set out to save eccentric languages, games and systems from extinction - or at least to preserve a few specimen in formaldehyde.

Computing Languages
From "ABC" to "Z" runs Daniel LaLiberte's non-exhaustive list of programming languages, linked to their FAQs or home pages.

Free Compilers and Interpreters
A searchable version of the Free Compilers List currently maintained by David Muir Sharnoff (free-compilers@idiom.com).  It might be slightly out of date with respect to its ftp'able original.

<- Programming in C             Comments, corrections, suggestions: jutta@pobox.com.