pa**********@att.net wrote:
The problem with learning from c++ texts is that the coding examples
are very small.
[snip]
Well, actually, the problem isn't that the examples are small.
The problem is you are looking at the wrong books. And that
you think you can learn large app design by looking at code.
Modern software development consists of a much longer design
stage than in the past. For example, a C++ project might involve
an up-front "before the coders are hired" design stage the consumes
as much as 60 percent of the development time. And during that
time there is not a single line of source code written for the app.
Large scale development moves you to a level of abstraction that is
somewhat removed from language syntax. And so, looking at large
app source code is probably the least efficient method of learning it,
even supposing the code you look at embodies the result of a good
design process. Reading code is going to make you think that the
specific language features your example uses are samples of good
large scale design. Then you will have to unlearn this, after doing a
lot of damage to any large project that is unfortunate enough to hire
you. Because language features are only the surface of good large
scale design. And probably the least important aspect.
Looking at source code is going to reinforce such things as "code
like mad" and "code-n-fix" methods. The usual diagram for these is
a large cloud with a lot of strange things attached to it, like a
cartoon
image of a bar brawl. Really what you want to do to prepare for a
large app development task is look at some development cycles
that are appropriate for many developers. Such things as waterfall,
spiral, and so on. Also learn about some tools (such as
automated source code control, and automated documentation
creation tools) to make the task easier to control. In other words,
stuff that has little or nothing to do with looking at the code.
If you want to learn large scale coding architecture, methods of
integration, how to design a large app so that it will work, how to
keep bug rates down in large code, how to document large codes,
and various such topics, then you want a different *set* of books
from the ones that teach you language features. Look for books
with the right things in the title. For example, if the book is callled
something like "The C++ Language" then you are not on the right
track to get large code management techniques. If the title is
something like "Large Scale C++" then you are probably getting close.
You also want to look at some books about project management, team
structure and interaction, scheduling, and such like. For example, you
might find yourself _The Project Management Body of Knowledge_.
A good introductory text that surveys a lot of these topics is
_Code Complete_ by Steve McConnell. That will get you started.
Once you read it you can branch out to other books that give
you more detail on areas you are interested in.
Socks