Ada

Ada is a programming language developed by the U.S. Department of Defense in the mid-1970s. The purpose of Ada was to create a standardized language that would be robust, dependable, and could be used efficiently by programmers to develop reliable programs that were easy to read and maintain. At the time, I was a computer science graduate student and I remember that four different proposals were circulated in the computer science community. Eventually one of these proposals was adopted and became Ada. In the last two decades, Ada has been updated into a modern programming language and is still used widely.


Web:

http://lglwww.epfl.ch/ada/home_page.html
http://www.acm.org/sigada/
http://www.adapower.com/

Usenet:

Google Newsreader comp.lang.ada


C++ and C

The C language is old, dating back to the early development of Unix. C++ is an object-oriented language based on C, but with significant differences. Both C and C++ are difficult to learn, and to program well in them takes a great deal of talent and experience. However, they are powerful tools, widely used throughout the world.


Web:

http://www.cera2.com/c-plus.htm
http://www.cprogramming.com/
http://www.cs.umd.edu/users/cml/cstyle/
http://www.icce.rug.nl/documents/cplusplus/
http://www.lysator.liu.se/c/c-www.html

Usenet:

Google Newsreader comp.lang.c
Google Newsreader comp.lang.c++
Google Newsreader comp.lang.c++.leda
Google Newsreader comp.lang.c++.moderated
Google Newsreader comp.lang.c.moderated
Google Newsreader comp.std.c++

IRC:

#c (Undernet)

#c++ (Undernet)


Cathedral and the Bazaar, The

"The Cathedral and the Bazaar" is the most widely cited essay that discusses the philosophical underpinnings of the Open Source Movement ("the evolution of software in the presence of a large and active community of users and co-developers"). The original version of this paper was written in 1997 by Eric Raymond, an accomplished programmer, who has modified the essay somewhat over the years.

According to the essay, Raymond used to believe that the most complex, important programs, such as operating systems and very large tools, "needed to be built like cathedrals, carefully crafted by individual wizards or small bands of mages working in splendid isolation, with no beta [test version] to be released before its time."

What changed his mind? Linux.

The original version of Linux (an operating system) was initiated and managed by Linus Torvalds, a hacker who wanted to build his own version of Unix. Torvalds learned how to harness the power of programmers around the world, developing a style of "release early and often, delegate everything you can, be open to the point of promiscuity". To Raymond, Torvalds and his followers eschewed the venerable cathedral for "a great babbling bazaar".

Raymond elaborates on this type of software development by discussing the evolution of a project he himself guided using the same principles. The project was the creation of fetchmail, an open-source email program. Within the essay, Raymond summarizes what he learned in the form of 19 short insights. (My favorite is #4: "If you have the right attitude, interesting problems will find you.")

If you are a programmer, you will find this essay stimulating, but there are problems. Raymond has excellent ideas but, like many great programmers, he's not a great writer. The text wanders like a blind man in a bazaar (if you can forgive the metaphor), and the writing could do with a thorough editing job, sentence by sentence. (I wonder what would have happened if Raymond had allowed other people to change his prose in the same way he let them change his programming.)

Moreover, the examples are difficult to appreciate because, like most programmers or engineers, Raymond has difficulty putting himself in the place of an ignorant reader. Technical details age quickly, and what might have been a great example in 1997 has long outlived its power to illuminate.

Still, the paper is a classic and -- because it is a classic -- it will be studied and cited for many years to come. As recursive as that might sound, the essay is worth reading at least once.


Web:

http://en.wikipedia.org/wiki/The_Cathedral_and_the_Baza...
http://www.catb.org/~esr/writings/cathedral-bazaar/cath...
http://www.firstmonday.org/issues/issue3_3/raymond/
http://www.firstmonday.org/issues/issue4_12/bezroukov/i...


Demoscene

A "demo" is a complex combination of programming, graphics and music, put together to create a multimedia presentation. The demoscene refers to activities of the people, all over the world, who work to create demos. Every now and then, members of the scene gather at a demoparty (such as The Party) in order to show their work and compete. If you are a programmer with imagination, and you like to work with other programmers, you owe it to yourself to find out about demos. If you are not a programmer, download some of the demos and take a look, just for fun. I promise you will be impressed.


Web:

http://www.cfxweb.net/categories.php?op=newindex&catid=...
http://www.demoscene.ru/english/news/
http://www.ojuice.net/
http://www.scene.org/
http://www.theparty.dk/

Usenet:

Google Newsreader alt.trebel
Google Newsreader alt.trebel.country
Google Newsreader alt.trebel.country.france
Google Newsreader alt.trebel.country.netherlands
Google Newsreader alt.trebel.demos
Google Newsreader alt.trebel.diskmag
Google Newsreader alt.trebel.music
Google Newsreader alt.trebel.party

IRC:

#coders (EFnet)


DOS Programming Talk and General Discussion

DOS may be well along the way to a well-deserved final resting place, but it is still alive and well on Usenet. Here are the groups devoted to general discussion of DOS programming. If you are a DOS person, these are good places to look for tips, questions and answers. If you are not a DOS person, do not pass "Go" and, definitely, do not collect $200.


Usenet:

Google Newsreader alt.msdos.programmer
Google Newsreader comp.archives.msdos.announce
Google Newsreader comp.msdos.programmer
Google Newsreader comp.os.msdos.programmer
Google Newsreader comp.os.msdos.programmer.turbovision


Free Compilers and Interpreters

You can pay a lot of money for a language translator, or you can check this site and find many, many free compilers and interpreters. If you ever find yourself with some free time and nothing to do, why not download a free compiler and teach yourself a new language? (Actually, I tried to teach myself French that way, but I kept getting parsing mistakes.)


Web:

http://www.idiom.com/free-compilers/

Usenet:

Google Newsreader comp.compilers
Google Newsreader comp.compilers.tools.pccts


Free Programming Tools

To say that these resources are extensive is like saying that the Queen of England insists on getting her own way: it doesn't even begin to describe the reality of the situation. What we have here is page after page after page of serious tools for serious programmers doing serious things (seriously). If you have even the least bit of interest in being a programming nerd, these sites are a must-have for your personal list of favorites.


Web:

http://www.codeproject.com/tools/
http://www.freebyte.com/programming/
http://www.thefreecountry.com/developercity/programming...


Hello, World

It is said that when you learn a new computer language the first thing you do is write a program to display the words "Hello, world". Well, I have been programming for years, in a variety of languages, and I have never, ever written a program that says "Hello, world". (But then, I have never seen a Rocky movie, watched an episode of Ally McBeal, or had tiramisu for dessert.) However, if you happen to be a programmer who is at home in popular culture and likes exploring strange new languages, here is a site that will amuse and entertain you endlessly. But wait, there's more! I have also included another site, where you can see how to program the song "99 Bottles of Beer on the Wall" in many different programming languages. (This is actually a better programming example because you can see some control flow.)


Web:

http://www.cuillin.demon.co.uk/nazz/trivia/hw/hello_wor...
http://www.roesler-ac.de/wolfram/hello.htm
http://www2.latech.edu/~acm/HelloWorld.shtml


IEEE Computer Society

The IEEE Computer Society is a world-renowned source of information relating to all aspects of computer science, electronics and engineering, including the publication of periodicals and newsletters, sponsoring conferences, workshops and symposia, and the development of standards. Computer Society Online now offers an electronic source of this information, in many cases before the information is published in hard copy.


Web:

http://www.computer.org/


Macintosh Programming

Are you a Macintosh programmer? Well, you belong to a select club, a club with members all over the world. Here are Web sites that will help you find all kinds of valuable programming resources. And when you're not busy programming, there are many Usenet discussion groups for you. As a Mac programmer, you may be lonely, but you never have to be alone.


Web:

http://www.apple.com/developer/
http://www.mactech.com/

Usenet:

Google Newsreader comp.sys.apple2.programmer
Google Newsreader comp.sys.mac.programmer
Google Newsreader comp.sys.mac.programmer.codewarrior
Google Newsreader comp.sys.mac.programmer.games
Google Newsreader comp.sys.mac.programmer.help
Google Newsreader comp.sys.mac.programmer.info
Google Newsreader comp.sys.mac.programmer.misc
Google Newsreader comp.sys.mac.programmer.tools


Obfuscated C Code

Here are the entries and winners for the International Obfuscated C Code Contest, in which programmers compete to create the most artistic, beautiful and obscure C program. The program must be small (less than a specified number of bytes), and it must work.


Web:

http://www.ioccc.org/


Object-Oriented Programming

Object-oriented programming is just like regular programming except that you look at everything differently, write your programs differently, maintain them differently, and think with a different part of your temporal lobe. Join the discussion and talk about object-oriented tools, techniques and problems. The .misc group is for general discussion of Macintosh object-oriented programming. The .macapp3 group is devoted to Version 3 of the MacApp system. The .tcl group is for discussion of the Think Class Libraries.


Usenet:

Google Newsreader comp.sys.mac.oop.macapp3
Google Newsreader comp.sys.mac.oop.misc
Google Newsreader comp.sys.mac.oop.tcl


Operating Systems Talk and General Discussion

An operating system is the master control program that runs a computer: for example, Windows 95/98, Windows NT, DOS, MacOS and Unix are all operating systems. If you are interested in issues relating to the design and implementation of operating systems, here is a Usenet group in which you can talk with people working in this area. This group is for general operating system discussion. For issues relating to specific systems, there are more specific Usenet groups.


Usenet:

Google Newsreader comp.os.misc


OS/2 Programming Talk and General Discussion

Here are a few good places where you can ask questions, get answers or talk all night about anything relating to programming under OS/2. In addition, there are groups devoted to tools, porting and object-oriented programming.


Usenet:

Google Newsreader bit.listserv.os2-l
Google Newsreader comp.os.os2.programmer.misc
Google Newsreader comp.os.os2.programmer.oop
Google Newsreader comp.os.os2.programmer.porting
Google Newsreader comp.os.os2.programmer.tools


Perl

It would be difficult to exaggerate the importance of Perl. It is the scripting language of choice in many situations, and is used widely on the Internet. Perl was created in 1986 by Larry Wall, a Unix and Internet programmer of renown. The name Perl stands for "Practical Extraction and Report Language" (although, as with most such acronyms, the meaning was made up after the name was chosen). Here are enough Perl resources to keep you satisfied forever (or until you die, whichever comes first).


Web:

http://perl.plover.com/
http://www.cpan.org/
http://www.perl.com/

Usenet:

Google Newsreader alt.perl
Google Newsreader comp.lang.perl
Google Newsreader comp.lang.perl.announce
Google Newsreader comp.lang.perl.misc
Google Newsreader comp.lang.perl.moderated
Google Newsreader comp.lang.perl.modules
Google Newsreader comp.lang.perl.tk


Programming Humor

Some types of jokes -- called canonical jokes -- are repeated, with small variations, over and over again. Here are lists of programming jokes. If you are a programmer, my prescription is to pause every time you find a bug and read two jokes.


Web:

http://www.elsop.com/wrc/humor/progwack.htm
http://www.gnu.org/fun/
http://www.klawitter.de/enhumor.html
http://www.rinkworks.com/stupid/cs_programming.shtml


Programming Languages

I remember, when I first started programming, the language PL/I was still new. It was supposed to be the language to replace all other languages. I started with Fortran, and, during my early life as a programmer, worked with a variety of different languages, such as C, APL, Basic, Lisp, 360 Assembler (for which I wrote a book), PC Assembler (for which I wrote a couple of books), Pascal, and on and on. There are literally hundreds of programming languages, and no one knows them all. (In fact, no one even knows the names of them all.) Here are some Web sites that are starting places for investigating any of a large list of different languages. For discussion, well, there are enough Usenet programming groups to keep you occupied from now to St. Swithin's Day.


Web:

http://home.nvg.org/~sk/lang/lang.html
http://www.cs.waikato.ac.nz/~marku/languages.html
http://www.csci.csusb.edu/dick/languages.html
http://www.tunes.org/doc/Review/Languages.html

Usenet:

Google Newsreader comp.lang.apl
Google Newsreader comp.lang.asm.x86
Google Newsreader comp.lang.asm370
Google Newsreader comp.lang.awk
Google Newsreader comp.lang.beta
Google Newsreader comp.lang.clarion
Google Newsreader comp.lang.clipper
Google Newsreader comp.lang.clos
Google Newsreader comp.lang.cobol
Google Newsreader comp.lang.dylan
Google Newsreader comp.lang.eiffel
Google Newsreader comp.lang.forth
Google Newsreader comp.lang.forth.mac
Google Newsreader comp.lang.fortran
Google Newsreader comp.lang.functional
Google Newsreader comp.lang.icon
Google Newsreader comp.lang.idl
Google Newsreader comp.lang.idl-pvwave
Google Newsreader comp.lang.lisp
Google Newsreader comp.lang.lisp.franz
Google Newsreader comp.lang.lisp.mcl
Google Newsreader comp.lang.lisp.x
Google Newsreader comp.lang.logo
Google Newsreader comp.lang.misc
Google Newsreader comp.lang.ml
Google Newsreader comp.lang.modula2
Google Newsreader comp.lang.modula3
Google Newsreader comp.lang.mumps
Google Newsreader comp.lang.oberon
Google Newsreader comp.lang.objective-c
Google Newsreader comp.lang.pascal
Google Newsreader comp.lang.pascal.ansi-iso
Google Newsreader comp.lang.pascal.borland
Google Newsreader comp.lang.pascal.delphi.advocacy
Google Newsreader comp.lang.pascal.delphi.components.misc
Google Newsreader comp.lang.pascal.delphi.components.usage
Google Newsreader comp.lang.pascal.delphi.components.writing
Google Newsreader comp.lang.pascal.delphi.databases
Google Newsreader comp.lang.pascal.delphi.misc
Google Newsreader comp.lang.pascal.mac
Google Newsreader comp.lang.pascal.misc
Google Newsreader comp.lang.perl
Google Newsreader comp.lang.perl.announce
Google Newsreader comp.lang.perl.misc
Google Newsreader comp.lang.perl.modules
Google Newsreader comp.lang.perl.tk
Google Newsreader comp.lang.pl1
Google Newsreader comp.lang.pop
Google Newsreader comp.lang.prograph
Google Newsreader comp.lang.prolog
Google Newsreader comp.lang.python
Google Newsreader comp.lang.rexx
Google Newsreader comp.lang.sather
Google Newsreader comp.lang.scheme
Google Newsreader comp.lang.scheme.scsh
Google Newsreader comp.lang.smalltalk
Google Newsreader comp.lang.tcl
Google Newsreader comp.lang.tcl.announce
Google Newsreader comp.lang.verilog
Google Newsreader comp.lang.vhdl


Programming Talk and General Discussion

while (not sleeping) if (question=="not answered") post (Usenet (query)) else read (Usenet (other-people's-articles));


Usenet:

Google Newsreader comp.programming
Google Newsreader comp.programming.contests


Tao of Programming

Here is a humorous guide to programming and otherwise living with computers in the modern age. "Something mysterious is formed, born in the silent void. Waiting alone and unmoving, it is at once still and yet in constant motion. It is the source of all programs. I do not know its name, so I will call it the Tao of Programming."


Web:

http://www.dnaco.net/~kragen/tao-of-programming.html
http://www.topsail.org/tao.html


Visual Basic

Visual Basic, a product of Microsoft, is the most modern incarnation of the Basic programming language. However, Visual Basic is a powerful tool that bears little resemblance to the original Basic. For many people, Visual Basic is the programming tool of choice, offering a total environment devoted to rapid program development, especially for client-server systems (including Internet programs) and database applications.


Web:

http://searchvb.techtarget.com/
http://www.faqs.org/faqs/visual-basic-faq/
http://www.msdn.microsoft.com/vbasic/
http://www.mvps.org/vbnet/
http://www.vbwire.com/

Usenet:

Google Newsreader comp.lang.basic.visual
Google Newsreader comp.lang.basic.visual.3rdparty
Google Newsreader comp.lang.basic.visual.database
Google Newsreader comp.lang.basic.visual.misc
Google Newsreader comp.lang.visual

IRC:

#visualbasic (Undernet)


Windows Programming Talk and General Discussion

These Usenet groups are for questions and answers relating to general programming in the Microsoft Windows environment as well as more specific topics such as controls, dialogs, graphics and printing, memory management, multimedia and network programming, and so on.


Usenet:

Google Newsreader comp.os.ms-windows.programmer
Google Newsreader comp.os.ms-windows.programmer.controls
Google Newsreader comp.os.ms-windows.programmer.drivers
Google Newsreader comp.os.ms-windows.programmer.graphics
Google Newsreader comp.os.ms-windows.programmer.misc
Google Newsreader comp.os.ms-windows.programmer.multimedia
Google Newsreader comp.os.ms-windows.programmer.networks
Google Newsreader comp.os.ms-windows.programmer.nt.kernel-mode
Google Newsreader comp.os.ms-windows.programmer.ole
Google Newsreader comp.os.ms-windows.programmer.tools
Google Newsreader comp.os.ms-windows.programmer.vxd
Google Newsreader comp.os.ms-windows.programmer.win32
Google Newsreader comp.os.ms-windows.programmer.winhelp


X Window

Here is information about the X Consortium (the X Window people) as well as links to many X-related sites. Find out what you need to work with X today, and what you need to understand to work with the newest version known as Broadway (X11R6.3): a system for creating and accessing interactive applications over the Web.


Web:

http://www.rahul.net/kenton/xsites.html
http://www.x.org/