I was once asked to help someone get started in computer programming. This person was a casual computer user who had read that he could extend one of his programs by writing custom functions in dynamic libraries that the software was compiled to read. This is a tremendous power the software developers gave to the end user (this was MS Windows based software, and before the Open Source movement was quite as popular as it is now). From that simple request, I began to think of reasons everyday computer users might like to learn programming; this article was my response.
Before delving into programming specifically, a few terms merit definition. Architecture refers to the hardware on which a program is designed to run; more specifically, this generally refers to the targeted processor. The architecture combined with an operating system is the platform. For example, Windows 2000 on an x86 based computer is one platform, Linux on the same x86 system is another; both have the same architecture, however. Software is generally designed to run on a specific platform, though portable code may cross platforms or architectures.
A library is a set of sections of program code that may be used often. The use of libraries prevents the programmer from having to retype common code blocks or reinventing algorithms developed by others (if they make them available). Libraries can be statically or dynamically linked. Static linking means the library code becomes a permanent part of the program. Dynamic linking means the library code is run from the library at run-time only when it is needed; code in dynamic libraries do not become part of the main program. The advantages of dynamic linking are discussed in Section 4.2.