File Size: 9435 KB
Print Length: 624 pages
Simultaneous Device Usage: Up to 5 simultaneous devices, per publisher limits
Publisher: Addison-Wesley Professional; 1 edition (March 11, 2011)
Publication Date: March 11, 2011
Sold by: Digital Services LLC
Language: English
ASIN: B004SH6XIE
Text-to-Speech: Enabled
X-Ray: Not Enabled
Word Wise: Not Enabled
Lending: Not Enabled
Enhanced Typesetting: Enabled
Best Sellers Rank: #404,511 Paid in Kindle Store (See Top 100 Paid in Kindle Store) #41 in Books > Computers & Technology > Programming > Languages & Tools > Compiler Design #102 in Books > Computers & Technology > Programming > Languages & Tools > Compilers #440 in Kindle Store > Kindle eBooks > Computers & Technology > Programming > Software Design > Software Development
Advertising "Principles and Experience" with software build tools, theauthor demonstrates a surprisingly sophomoric depth ofunderstanding. Most of the book is presented at a very high level withlimited practical presentation.Chapter 08 discusses the SCons tool with a section on debugging badbuilds. The --debug=presub command-line switch is introduced andoutput presented. A particular environment variable is mentioned andthen some portion of the list of all environment variable definitionsin SCons is printed. The actual environment variable presented isnever found in the list, the result is never plugged into the templatecommand-line, and the "problem" is never debugged. The level ofunderstanding seems very much that of someone who has run the on-linetutorial.The feeling of reiterated tutorial continues in Chapter 10 onEclipse. I can figure out the panes of the workspace or else I canfire up the Guided Tour that ships with the product. There is no needto spend several pages on helping me figure out where source code isdisplayed.Chapter 06 focuses on GNU Make. The idea of a .flags file is mentionedas a way to capture dependencies on command-line flags. Where is anexample? Is it better practice to have a .flags file per directory orper source file? How do .flag files interact with the number of filereads done by a build system (the topic of Chapter 19 when talkingabout speeding up a build)?There are a handful of editing errors and another, more annoying,handful of technical errors. There is a discussion of running gdb(why, in a book on building, do I get a tutorial on gdb?
A Gap-Filling Book for Software Developers TooBuild system are often viewed as merely a script to compile the code. However there are much more to it. Read this book you'll find out. As an editorial review says, this book is also for developers in addition to build engineers.As the book starts with, a survey showed that it is common developers losing 20~30% productivity due to build related problems. My personal estimate, at one of my previous work we spent more than 30% of time dealing with build breakages. Sometimes the problems are caused by the build system itself, some other times they are due to misuse of the system. It's worth for developers to learn the build system thus to avoid messing up with the build system.For large software it is very difficult to figure out the dependencies among the components. To my view, if it is a C program, the only place the complete dependency information can be found is in the build system. Figuring out dependencies helps developers to better design/code/debug their software. To do so you'll have to know about the build system, or you may even need to fix the build system so you can get the information dumped for you.I use code generation in my coding practice so that I can manage more logic in code and avoid tedious repetitive work [see Martin Fowler's DSL book Domain-Specific Languages (Addison-Wesley Signature Series (Fowler)) for more on this topic]. I also generate tests from the source code. To generate code the triggers have to be incorporated into the build system. Had I read this book I would have done my work more effectively.
This book is a decent introduction to the world of build systems. Overall I expected more depth from it, and felt I barely got my money's worth, but it could be perfect for someone with less experience with complex build systems who wants to learn more about the field or got tasked with choosing and implementing a build system for a project.It starts with a high-level discussion of concepts that are common across build systems. Then it goes into an overview of five common build systems - make, scons, cmake, Ant and the GUI-based Eclipse. Generally I felt this is the weakest part of the book as it does not go into depth with any of those tools, but it is useful if one wants to compare how several systems handle a common, simple scenario, and the praise/criticism/evaluation section towards the end of each tool's description is a nice summary. For a detailed manual of one of the covered build tools, tool documentation and other in-depth books on separate tools are a far better choice.Part III, "Advanced topics", is a misnomer - it should be called "Beyond the basics". Once again the discussion becomes more abstract and covers dependencies and related issues, "metadata" (any products that are not the final executables - documentation, tests, etc.), managing tools, and towards the end two topics that are the most important - how to improve build speed and manage build size. I would not call any topic discussed to actually be "advanced" - that would be, for example, an in-depth analysis of an existing complex make-based build framework, or a careful dissection, with reasoning and trade-offs, of a big build system of an existing open source project, none of which are to be seen in this book.
Software Build Systems: Principles and Experience Small Memory Software: Patterns for systems with limited memory (Software Patterns Series) Embedded Systems Security: Practical Methods for Safe and Secure Software and Systems Development Enterprise Software Procurement: Tools and Techniques for Successful Software Procurement and Business Process Reengineering for Municipal Executives and Managers Code/Space: Software and Everyday Life (Software Studies) The Software Paradox: The Rise and Fall of the Commercial Software Market More Joel on Software: Further Thoughts on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, ... or Ill Luck, Work with Them in Some Capacity Swift: Programming, Master's Handbook: A TRUE Beginner's Guide! Problem Solving, Code, Data Science, Data Structures & Algorithms (Code like a PRO in ... mining, software, software engineering,) Software Testing: Essential Skills for First Time Testers: Software Quality Assurance:From scratch to end How to Write a Software Patent Application: Your Guide to Quickly Writing Your US Software Patent Application Solar PV Off-Grid Power: How to Build Solar PV Energy Systems for Stand Alone LED Lighting, Cameras, Electronics, Communication, and Remote Site Home Power Systems Continuous Delivery: Reliable Software Releases through Build, Test, and Deployment Automation (Adobe Reader) (Addison-Wesley Signature Series (Fowler)) The Complete Works of Herbert Spencer: The Principles of Psychology, The Principles of Philosophy, First Principles and More (6 Books With Active Table of Contents) Software Receiver Design: Build your Own Digital Communication System in Five Easy Steps How to Build Floating Docks and Decks For Ponds Step by Step: Step by step guide with images and plans to build a floating dock pier and a farm pond deck. BUSINESS:Business Marketing, Innovative Process How To Startup, Grow And Build Your New Business As Beginner, Step By Step Online Guide How To Effective ... Grow And Build Business As Beginner) Agile Software Development, Principles, Patterns, and Practices Build APIs You Won't Hate: Everyone and their dog wants an API, so you should probably learn how to build them How to Build a Computer: Learn How to Build Your Own Computer From Scratch. The Parts, Connecting Everything Together, Installation and more (PC, Windows, Gaming System, Media System, Linux) Inside the Microsoft Build Engine: Using MSBuild and Team Foundation Build (Developer Reference)