Here are links to various web resources mentioned in book The Pragmatic Programmer, broken out into several categories:
Editors
- The Emacs Editor
- The ultimate in big editors, containing every feature that any
editor has ever had, Emacs has a near-vertical learning curve, but
repays handsomely once you’ve mastered it. It also makes a great
mail and news reader, address book, calendar and diary, adventure
game, ...
- The XEmacs Editor
- Spawned from the original Emacs some years ago, XEmacs
is reputed to have cleaner internals and a better-looking interface.
- The Vim Editor
- From the
documentation: ``There are a lot of enhancements above vi: multi
level undo, multi windows and buffers, syntax highlighting,
command line editing, filename completion, on-line help, visual
selection, etc…’‘
- The elvis Editor
- An enhanced vi clone with support for X.
- Emacs Viper Mode
- Viper
is a set of macros that make Emacs look like vi. Some may
doubt the wisdom of taking the world’s largest editor and
extending it to emulate an editor whose strength is its
compactness. Others claim it combines the best of both worlds.
Compilers, Languages, and Development Tools
- The GNU C/C++ Compiler
- One of the most popular C
and C++ compilers on the planet. It also does Objective-C.
(At the time of writing, the egcs project, which previously
splintered from gcc, is in the process of merging back into the fold.)
- The Java Language from Sun
- Home of Java, including downloadable SDKs, documentation,
tutorials, news, and more.
- Perl Language Home Page
- O’Reilly hosts this set of Perl-related resources.
- The Python Language
- The Python object-oriented programming language
is interpreted and interactive, with a slightly quirky syntax and
a wide and loyal following.
- SmallEiffel
- The GNU Eiffel compiler runs on any machine
that has an ANSI C compiler and a Posix runtime
environment.
- ISE Eiffel
- Interactive Software Engineering is the
originator of Design by Contract, and sells a commercial Eiffel
compiler and related tools.
- Sather
- Sather is an experimental language
that grew out of Eiffel. It aims to support higher-order
functions and iteration abstraction as well as Common Lisp, CLU, or
Scheme, and to be as efficient as C, C++, or Fortran.
- VisualWorks
- Home of the VisualWorks Smalltalk environment. Noncommercial
versions for Windows and Linux are available for free.
- The Squeak Language Environment
- Squeak is a freely available, portable
implementation of Smalltalk-80 written in itself; it can produce
C code output for higher performance.
- The TOM Programming Language
- A very dynamic language with roots in Objective-C.
- The Beowulf Project
- A project that builds high-performance
computers out of networked clusters of inexpensive Linux boxes.
- iContract—-Design by Contract Tool for Java
- Design by Contract formalism of preconditions, postconditions,
and
invariants, implemented as a preprocessor for Java. Honors
inheritance, implements existential quantifiers, and more.
- Nana—-Logging and Assertions for C
and \cplusplus
- Improved
support for assertion checking and logging in C and
C++. It also provides some support for Design by
Contract.
- DDD—-Data Display Debugger
- A free graphical front end for Unix debuggers.
- John Brant’s Refactoring Browser
- A popular refactoring browser for Smalltalk.
- DOC+ Documentation Generator
- DOC++ is a
documentation system for C/C++ and Java that
generates both LaTeX and HTML output for sophisticated online
browsing of your documentation directly from the C++ header
or Java class files.
- xUnit—-Unit Testing Framework
- A simple but powerful concept, the xUnit
unit testing framework provides a consistent platform for testing
software written in a variety of languages.
- The Tcl Language
- Tcl (``Tool Command Language’‘) is a scripting
language designed to be easy to embed into an application.
- Expect—-Automate Interaction with Programs
- An extension built on Tcl ,
expect allows you to script interaction with programs. As
well as helping you write command files that (for example) fetch
files from remote servers or extend the power of your shell,
expect can be useful when performing regression testing. A
graphical version, expectk, lets you wrap non-GUI applications
with a windowing front end.
- T Spaces
- From their Web page: ``T Spaces
is a network communication buffer with database capabilities. It
enables communication between applications and devices in a
network of heterogeneous computers and operating systems. T Spaces
provides group communication services, database services,
URL-based file transfer services, and event notification
services.’‘
- javaCC—-Java Compiler-Compiler
- A parser generator that is tightly coupled to the Java
language.
- The bison Parser Generator
bison
takes an input grammar specification and generates from
it the C source code of a suitable parser.
- SWIG—-Simplified Wrapper and Interface Generator
- SWIG is a software development tool that connects
programs written in C, C++, and Objective-C with a variety of
high-level programming languages such as Perl, Python, and Tcl/Tk,
as well as Java, Eiffel, and Guile.
- The Object Management Group,
Inc.
- The OMG
is the steward of various specifications for producing
distributed object-based systems. Their work includes the
Common Object Request Broker Architecture (CORBA) and the
Internet Inter-ORB Protocol (IIOP). Combined, these
specifications make it possible for objects to communicate with
each other, even if they are written in different
languages and run on different types of computers.
Unix Tools Under DOS
- The UWIN Development Tools
-
The UWIN
package provides Windows Dynamic Link Libraries (DLLs) that emulate
a large portion of the Unix C level library interface. Using
this interface, GTL has ported a large number of Unix
command-line tools to Windows. See also .
- The Cygwin Tools
- The Cygwin
package also emulates the the Unix C library interface, and
provides a large array of Unix command-line tools under the
Windows operating system.
- Perl Power Tools
- A
project to reimplement the classic Unix command set in Perl,
making the commands available on all platforms that support Perl
(and that’s a lot of platforms).
Source Code Control Tools
- RCS—-Revision Control System
- GNU source code control system for Unix and Windows NT.
- CVS—-Concurrent Version System
- Freely
available source code control system for Unix and Windows NT.
Extends RCS by supporting a client-server model and concurrent
access to files.
- Aegis Transaction-Based Configuration Management
- A process-oriented
revision control tool that imposes project
standards (such as verifying that checked-in code passes tests).
- ClearCase
- Version control,
workspace and build management, process control.
- MKS Source Integrity
- Version control and configuration management. Some versions
incorporate features allowing remote developers to work on the
same files simultaneously (much like CVS).
- PVCS Configuration Management
- A source code control system, very popular for
Windows systems.
- Visual SourceSafe
- A version control system
that integrates with Microsoft’s visual development tools.
- Perforce
- A client-server software configuration management system.
Other Tools
- WinZip—-Archive Utility for Windows
-
A Windows-based file archive utility.
Supports both
zip and tar formats.
- The Z Shell
- A shell
designed for interactive use, although it is also a powerful
scripting language. Many of the useful features of bash, ksh, and
tcsh were incorporated into zsh; many original features were added.
- A Free SMB Client for Unix Systems
- Samba
lets you share files and other resources between Unix and
Windows systems. Samba includes:
- An SMB server, to provide Windows NT and LAN Manager-style file and
print services to SMB clients such as Windows 95, Warp Server, smbfs,
and others.
- A Netbios nameserver, which among other things
gives browsing support. Samba can be the master browser on your
LAN if you wish.
- An ftp-like SMB client that allows you to access PC resources (disks
and printers) from Unix, Netware, and other operating systems.
Papers and Publications
- The comp.object
FAQ
- A substantial
and well-organized FAQ for the
comp.object newsgroup.
- eXtreme
Programming
- From the Web site: ``In XP, we use a very lightweight combination
of practices to create a team that can rapidly produce extremely
reliable, efficient, well-factored software. Many of the XP
practices were created and tested as part of the Chrysler C3
project, which is a very successful payroll system implemented in
Smalltalk.’‘
- Alistair Cockburn’s Home Page
- Look for ``Structuring Use
Cases with Goals’’ and use case templates.
- Martin Fowler’s Home Page
- Author
of Analysis Patterns and co-author
of UML Distilled and Refactoring: Improving the
Design of Existing Code. Martin Fowler’s home page discusses
his books and his work with the UML.
- Robert C. Martin’s Home Page
- Good
introductory papers on object-oriented techniques, including
dependency analysis and metrics.
- Aspect-Oriented Programming
- An approach to adding
functionality to code, both orthogonally and declaratively.
- JavaSpaces Specification
- A Linda-like
system for Java that supports distributed
persistence and distributed algorithms.
- Netscape Source Code
- The development source of the Netscape browser.
- The Jargon File
-
Definitions
for many common (and not so common) computer industry terms, along
with a good dose of folklore.
- Eric S. Raymond’s Papers
- Eric’s
papers on The Cathedral and the Bazaar and
Homesteading the Noosphere describing the psychosocietal
basis for and implications of the Open Source movement.
- The K Desktop Environment
- From
their Web page: ``KDE is a powerful graphical
desktop environment for Unix workstations. KDE is an Internet
project and truly open in every sense.’‘
- The GNU Image Manipulation Program
- Gimp
is a freely distributed program used for image creation,
composition, and retouching.
- The Demeter Project
- Research
focused on making software easier to maintain and
evolve using Adaptive Programming.
Miscellaneous
- The GNU Project
- The
Free Software Foundation is a tax-exempt charity that raises funds
for the GNU project. The GNU project’s goal is to produce a
complete, free, Unix-like system. Many of the tools they’ve
developed along the way have become industry standards.
- Web Server Information
- Links to the home pages of over 50 different web servers. Some are
commercial products, while others are freely available.