3.3
An Environment of Programs
Programming is
an exercise in problem solving.
It's an iterative, gradual process. Although it can be done by
one person alone, it's often a social activity (this surprises
many newcomers). It requires developing specific problem-solving
skills and learning a few tools. Programming is sometimes tricky and
can be frustrating. On the other hand, for those with an aptitude,
there's a great sense of satisfaction that comes from building
a working program.
Computer programs can be many things, from barely useful, to
aesthetically and intellectually stimulating, to important generators
of new knowledge. They can be beautiful. (They can also be
destructive, stupid, silly, or vicious; they are human creations,
after all.) Because writing a program is an iterative, building,
gradual process, there can be real satisfaction in seeing the work
unfold from simple beginnings to complete structures. For the
beginning student, this gradual unfolding of a new program mirrors
the gradual mastery of the language.
As our culture began writing and accumulating programs in the middle
of the 20th century, a programming environment began to develop.
Gradually, we've been accumulating a substantial body of
procedural knowledge. Programs often reflect the fact that they swim
in waters populated by many other programs, and beginning programmers
can expect to learn a lot from this environment.
3.3.1
Open Source Programs
As programming has become important in the world, it has also become
economically valuable. As a result, the source code for many programs
is kept hidden to protect commercial assets and stymie the
competition.
However, the source code for many of the best and most used programs
are freely available for anyone to examine. Freely available
source code is called open
source. (There are various kinds of copyrights that may
attach to open source program code, but they all allow anyone to
examine the source code.) The open source movement treats program
source code in a similar manner to the way scientists publish their
results: publicly and open to unfettered examination and discussion.
The source code for these programs can be a wonderful place for the
beginning programmer to learn how professional programmers write. The
programs available in open source include the Perl interpreter and a
large amount of Perl code, the Linux operating system, the Apache web
server, the Netscape web browser, the sendmail
mail transfer agent, and much more.