Fang's Developer Den


Introduction

"Everyone can be taught to sculpt: Michelangelo would have had to be taught how not to. So it is with the great programmers."

Alan Perlis

There once was a master programmer who wrote unstructured programs. A novice programmer, seeking to imitate him, also began to write unstructured programs. When the novice asked the master to evaluate his progress, the master criticized him for writing unstructured programs, saying: "What is appropriate for the master is not appropriate for the novice. You must understand the Tao before transcending structure."

Geoffrey James, "The Tao of Programming"

Top 20 replies by Programmers to Testers when their programs don't work 20. "That's weird..." 19. "It's never done that before." 18. "It worked yesterday." 17. "How is that possible?" 16. "It must be a hardware problem." 15. "What did you type in wrong to get it to crash?" 14. "There is something funky in your data." 13. "I haven't touched that module in weeks!" 12. "You must have the wrong version." 11. "It's just some unlucky coincidence." 10. "I can't test everything!" 9. "THIS can't be the source of THAT." 8. "It works, but it hasn't been tested." 7. "Somebody must have changed my code." 6. "Did you check for a virus on your system?" 5. "Even though it doesn't work, how does it feel? 4. "You can't use that version on your system." 3. "Why do you want to do it that way?" 2. "Where were you when the program blew up?" 1. "It works on my machine."

from http://underthesunz.blogspot.com/


Editors

vi vim

Languages and Compilers

C++ awk

UNIX Tools

sh sed (GNU version) awk grep lex, flex yacc, bison

Build Tools

GNU make automake autoconf libtool (NEW: 2.2 released March, 2008!) home of the GNU Autobook, online manual, download POSIX make standard specs

GNU Make

Tips (favorite options):  pass -j# to parallelize jobs, an absolute must for multiprocessors, have sufficient RAM ready though  pass -k to "keep going" continuing as far as possible with errors  pass -r to turn off implicit and built-in rules, speeding up make algorithm (15% to 35% from experience)  pass -d for debugging: detailed trace of algorithm execution  For maximal compatibility, avoid GNU-specific features: %-pattern rules, function macros  VPATH build: build in directory separate from source for   1) multiple configurations sharing same source   2) preventing accidental modifications polluting of source   3) simplifying cleaning build files, reduces source clutter   4) helps if makefile is configure-generated

Documentation

doxygen -- source documentation texinfo -- converts single .texi source to .info, DVI, PDF, PS, HTML

Revision Control

CVS Subversion (SVN) git Trac bugzilla

Compiler-writer tools

catalog.compilertools.net -- tons of stuff

Integrated Development Enviroments

vi vim -- vi improved

Articles

Teach Yourself Programming in Ten Years, by Peter Norvig

Links

The Graphing Calculator Story I will not throw paper airplanes in class The Commentator

Essays

Beware the GUI Builder
[back to Open Source]
[back to main]