size of programs
The educational goal of this subchapter is to introduce the concept of differences in scale or size of programming projects and how the size and complexity of a program impacts the task of programming.
Programs vary in size. Bad habits learned with small or trivial programs might get you into real trouble with medium or large programs.
size of programs
Programs are generally divided into three basic sizes: trivial, small, and large.
Trivial programs are programs that a skilled programmer can write in less than two days of coding.
Small programs are programs that one skilled programmer can write in less than one year of full time work.
Large programs are programs that require more than two to five man-years of labor, normally written by programming teams (which can exceed 1,000 skilled workers).
These estimates are approximate and there are obvious gaps in the gray zone between the sizes. Further, there can be huge differences in individual abilities.
Larry Ellison wrote the first version of Oracle database by himself in about six months. That is a genius exception. Data bases typically take large teams (sometimes hundreds of programmers) at least a year.
Bill Gates, copying and pasting from the source code of three working open source versions, took more than six months to create a bug-filled BASIC compiler and then hired a team of six skilled programmers who spent more than six more months to get rid of enough bugs to make the compiler somewhat usable (a total of more than three man-years). That is an idiot exception. A BASIC compiler typically takes a skilled programmer a few hours to create. Note that Bill Gates takes credit for quickly having created a BASIC compiler, but according to other sources he was sued for having illegally used open source code for commercial purposes, forcing him to spend a great deal of time attempting to do a project that many programmers of the day could successfully finish in hours.
impact on good programming practices
As long as there were no machines, programming was no problem at all: when we had a few weak computers, programming became a mild problem, and now that we have gigantic computers, programming has become as equally gigantic problem. In this sense the electronic industry has solved not a single problem, it has only created them it has created the problem of using its products.
E W Dijkstram, The Humble Programmer, Turing Award Lecture, CACM Vol 15, Number 10, October 1972
Almost every program assigned in a class setting will be trivial, simply because there isnt enough time in a quarter or semester for longer programs.
Each programming assignment will concentrate on one or a small number of specific programming concepts.
The artificial nature of school programming assignments cause most students to question the utility of modern programming practices, especially the time and effort spent on form and documentation.
These practices are the result of decades of real world programming.
Successful programs tend to have a long lifetime. Programmers will have to look at existing source code, figure out what is going on, and then correctly modify the program to add new features or update existing features to meet changing real world conditions.
The UNIX philosophy on programming is to encourage a lot of small tools (programs) that work together to complete a task (usually threaded together with a shell script). This bottom-up approach to programming encourages the reuse and sharing of software. The typical UNIX (or LINUX) distribution includes hundreds of small standardized tools that allow a skilled UNIX prorgammer (or even a skilled UNIX administrator or user) to immediately do useful large scale work.
free music player coding example
Coding example: I am making heavily documented and explained open source code for a method to play music for free almost any song, no subscription fees, no download costs, no advertisements, all completely legal. This is done by building a front-end to YouTube (which checks the copyright permissions for you).
View music player in action: www.musicinpublic.com/.
Create your own copy from the original source code/ (presented for learning programming).
Because I no longer have the computer and software to make PDFs, the book is available as an HTML file, which you can convert into a PDF.
Names and logos of various OSs are trademarks of their respective owners.