music
OSdata.com: programming text book 

OSdata.com

size of programs

summary

    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.

free computer programming text book project

table of contents
If you like the idea of this project,
then please donate some money.
more information on donating

Google

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 isn’t 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.

UNIX style

    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).


return to table of contents
free downloadable college text book

view text book
HTML file

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.

previous page next page
previous page next page

free computer programming text book project

Building a free downloadable text book on computer programming for university, college, community college, and high school classes in computer programming.

If you like the idea of this project,
then please donate some money.

send donations to:
Milo
PO Box 1361
Tustin, California 92781

Supporting the entire project:

    If you have a business or organization that can support the entire cost of this project, please contact Pr Ntr Kmt (my church)

more information on donating

Some or all of the material on this web page appears in the
free downloadable college text book on computer programming.


Google


Made with Macintosh

    This web site handcrafted on Macintosh computers using Tom Bender’s Tex-Edit Plus and served using FreeBSD .

Viewable With Any Browser


    †UNIX used as a generic term unless specifically used as a trademark (such as in the phrase “UNIX certified”). UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Ltd.

    Names and logos of various OSs are trademarks of their respective owners.

    Copyright © 2007, 2010, 2011, 2014 Milo

    Created: September 4, 2007

    Last Updated: August 15, 2014


return to table of contents
free downloadable college text book

previous page next page
previous page next page