Books for learning how to write "big" programs

Bob Martin bob.martin at excite.com
Fri Jun 6 02:58:45 EDT 2008


in 69148 20080605 140635 s0suk3 at gmail.com wrote:
>On May 22, 12:49=A0pm, "Kurt Smith" <kwmsm... at gmail.com> wrote:
>> On Thu, May 22, 2008 at 10:55 AM, duli <dulipi... at gmail.com> wrote:
>> > Hi:
>> > I would like recommendations forbooks(in any language, not
>> > necessarily C++, C, python) which have walkthroughs for developing
>> > a big software project ? So starting from inception, problem
>> > definition, design, coding and final delivery on a single theme
>> > or application.
>>
>> The bigger the project, the more likely it is that you'll have
>> documentation on how to use it (for a language or library, how to use
>> the features in your program) but to take the time to write up a
>> dead-tree book on the project's "inception, problem definition,
>> design, coding and final delivery" is not likely well spent. =A0Anyone
>> who has the expertise to write such a book would probably be spending
>> his time working on the next phase of the project itself.
>>
>> Someone will probably respond with an amazon link to a book that does
>> exactly what you're asking, in which case, I will stand corrected.
>> But I'll be surprised.
>>
>>
>>
>> > Most of the code I have written andbooksthat I have read deal with
>> > toy programs and I am looking for something a bit more
>> > comprehensive. =A0For example, maybe a complete compiler written in C++
>> > for some language, or a complete web server or implementing
>> > .net libraries in some language (just a few examples of the scale of
>> > things I am interested in learning).
>>
>> It seems to me the reason toy programs are so prevalent is because
>> they illustrate a (few) well defined ideas in a short amount of code.
>> A big project, necessarily, brings together all kinds of stuff, much
>> of which may not interest the author at all, and so doesn't motivate
>> him to write a book about it.
>>
>> Compilers, web servers & .NET libraries are *widely* varying areas.
>> You may have interest in them all, but to significantly contribute to
>> any requires a fair amount of expertise and specialization.
>>
>> The best route I've found to learn how to organize & program large
>> scale applications is this: find a cutting edge program that interests
>> you and that is open source. =A0Download its source, and read the code.
>> Diagram it. =A0Map it out. =A0Read the comments. =A0Join the mailing list
>> (probably the developer's list), lurk for a while, and ask questions
>> about why they organized things the way they did. =A0Get the overall big
>> picture and learn from it. =A0Better yet, find out what pitfalls they
>> found and avoided (or fell into). =A0Compare their approach &
>> organization with another competing project. =A0This is the wonder of
>> open source software -- you have access to everything, and can learn
>> from all the expertise the developers put into their opus.
>>
>> You can learn the basics frombooks, but nothing beats analyzing a
>> species in the wild.
>
>I think I have lately understood what you mean, thanks to Programming
>Python 3rd Ed by Lutz. It doesn't teach Python itself -- the book aims
>to teach Python programming at an application level, but I'm starting
>to wonder whether that knowledge can be obtained from any book. The
>book goes through over 1500 pages (!) giving small- and medium-sized
>example programs and describing their details. Roughly after a couple
>of hundred pages I started to feel like all that was trivial (isn't
>looking at code and figuring their details what we do in our every-day
>programmer lifes?), and then started to feel like it was really
>useless. Maybe large-scale programming can only be self-thought in
>every day life, am I right?.

Of course.



More information about the Python-list mailing list