the importance of shell scripting in unix

ill start with this: lets say im making a nntp reader that downloads an entire newsgroup.

i can code one huge program or to keep it unix, go modular.
so we'll have:
a program to fetch nntp headers
a program to download nntp headers
a program to decode and encode headerd into files
a program to organize files
a program to do file system upkeeping pertaining to the program

the problem with a single program doing all of this, is that code bases can be large and unmanageable, with multiple functions, macros, callbacks, and of course, source code files (along with any other binary data)

now going the modular way isnt without its faults, such as security implemntation saving mac controls, possible probably debugging programs with so many programs, and theres issues with shells on different unix environments, the positive benefits of going the modular benefits is severely cut down development times making programs in a modular sense vs upkeeping one big program (compared to the shell script)

so my program, use i call now the modular methods, shell script is much like:
#!/bin/sh
NNTP_SERVER=news.easynews
#LOGIN SERVER INFO ETC
DIR=/Volumes/M2/usenet/downloads
nntpheadersget $LOGIN_INFO $TEMPDIR $DB
nntpdecode $TEMPDIR
nntporganize $DL_DIR


now, the intent is to download an entire newsgroup, so nntpheaders uses all login info to connect to the usenet server, and downloads all the nntpheaders into a $TEMPDIR, this is where the undecoded files are
then after building a database it saves all undecoded files using nntpdecode, which takes the articles and builds files out of them, including executables, images, and file archives
then nntporganize uses algorithmic methods places archives, music, etc, all bassed on similiar file names using the database and or file heurtistics

now lets say i wrote the nntpdownload.c program, it would probably have close to 20 maybe 30 functions alone, considering nntps nature in decoding, and database code, and file io stuff, etcetra. this codebase would very easily be difficult to manager unless in a team enviroment, when it comes to updating code, think changing a library or updating code between functions, making it difficult to debug

so check out the modular method in writing programs, its great for unices and not sure how itd work on windows, but mac is a sure go

happy coding,
unidef