C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond David Abrahams, Aleksey Gurtovoy  
More Details

"C++ Template Metaprogramming" sheds light on the most powerful idioms of today's C++, at long last delivering practical metaprogramming tools and techniques into the hands of the everyday programmer.

Since the introduction of templates, C++ programmers have discovered surprising and powerful ways to perform computation at compile-time. While the excitement generated by these capabilities among C++ experts has reached the community at large, their practical application remains out-of-reach for many programmers. Literature on C++ template metaprogramming has focused primarily on details of low-level "tricks" at the expense of strong idioms and abstractions, and without illuminating the path from metaprogramming to expressive interfaces and efficient, maintainable software.

This book delivers both "big picture" ideas and practical tools. It explains what metaprogramming is, why it matters, and how the unique combination of features in C++ make it an especially powerful language for metaprogramming. It also presents the Boost Metaprogramming Library, a powerful open source framework of high-level compile-time components based on familiar STL idioms, which makes C++ metaprogramming easy, expressive, and fun.

0321227255
Compilers: Principles, Techniques, and Tools Alfred V. Aho, Monica S. Lam, Ravi Sethi, Jeffrey D. Ullman  
More Details

This book provides the foundation for understanding the theory and pracitce of compilers. Revised and updated, it reflects the current state of compilation. Every chapter has been completely revised to reflect developments in software engineering, programming languages, and computer architecture that have occurred since 1986, when the last edition published. The authors, recognizing that few readers will ever go on to construct a compiler, retain their focus on the broader set of problems faced in software design and software development. Computer scientists, developers, and aspiring students that want to learn how to build, maintain, and execute a compiler for a major programming language.

0321486811
Cocoa Programming Scott Anguish, Erik Buck, Donald Yacktman  
More Details

Cocoa Programming is a comprehensive work that starts as a fast-paced introduction to the OS architecture and the Cocoa language for programmers new to the environment. The more advanced sections of the book will show the reader how to create Cocoa applications using Objective-C, to modify the views, integrate multimedia, and access networks. The final sections explain how to extend system applications and development tools in order to create your own frameworks.

0672322307
Constraint Logic Programming using Eclipse Krzysztof R. Apt, Mark Wallace  
More Details

Constraint logic programming lies at the intersection of logic programming, optimisation and artificial intelligence. It has proved a successful tool in many areas including production planning, transportation scheduling, numerical analysis and bioinformatics. Eclipse is one of the leading software systems that realise its underlying methodology. Eclipse is exploited commercially by Cisco, and is freely available and used for teaching and research in over 500 universities. This book has a two-fold purpose. It's an introduction to constraint programming, appropriate for one-semester courses for upper undergraduate or graduate students in computer science or for programmers wishing to master the practical aspects of constraint programming. By the end of the book, the reader will be able to understand and write constraint programs that solve complex problems. Second, it provides a systematic introduction to the Eclipse system through carefully-chosen examples that guide the reader through the language and illustrate its power, versatility and utility.

0521866286
UML 2 and the Unified Process: Practical Object-Oriented Analysis and Design Jim Arlow, Ila Neustadt  
More Details

"This book manages to convey the practical use of UML 2 in clear and understandable terms with many examples and guidelines. Even for people not working with the Unified Process, the book is still of great use. UML 2 and the Unified Process, Second Edition is a must-read for every UML 2 beginner and a helpful guide and reference for the experienced practitioner." —Roland Leibundgut, Technical Director, Zuehlke Engineering Ltd. "This book is a good starting point for organizations and individuals who are adopting UP and need to understand how to provide visualization of the different aspects needed to satisfy it. " —Eric Naiburg, Market Manager, Desktop Products, IBM Rational Software This thoroughly revised edition provides an indispensable and practical guide to the complex process of object-oriented analysis and design using UML 2. It describes how the process of OO analysis and design fits into the software development lifecycle as defined by the Unified Process (UP). UML 2 and the Unified Process contains a wealth of practical, powerful, and useful techniques that you can apply immediately.As you progress through the text, you will learn OO analysis and design techniques, UML syntax and semantics, and the relevant aspects of the UP. The book provides you with an accurate and succinct summary of both UML and UP from the point of view of the OO analyst and designer. This book provides *Chapter roadmaps, detailed diagrams, and margin notes allowing you to focus on your needs*Outline summaries for each chapter, making it ideal for revision, and a comprehensive index that can be used as a reference New to this edition: *Completely revised and updated for UML 2 syntax*Easy to understand explanations of the new UML 2 semantics*More real-world examples*A new section on the Object Constraint Language (OCL)*Introductory material on the OMG's Model Driven Architecture (MDA) The accompanying website provides *A complete example of a simple e-commerce system*Open source tools for requirements engineering and use case modeling*Industrial-strength UML course materials based on the book

0321321278
Programming Erlang: Software for a Concurrent World Joe Armstrong  
More Details

Erlang solves one of the most pressing problems facing developers today: how to write reliable, concurrent, high-performance systems. It's used worldwide by companies who need to produce reliable, efficient, and scalable applications. Invest in learning Erlang now.

Moore's Law is the observation that the amount you can do on a single chip doubles every two years. But Moore's Law is taking a detour. Rather than producing faster and faster processors, companies such as Intel and AMD are producing multi-core devices: single chips containing two, four, or more processors. If your programs aren't concurrent, they'll only run on a single processor at a time. Your users will think that your code is slow.

Erlang is a programming language designed for building highly parallel, distributed, fault-tolerant systems. It has been used commercially for many years to build massive fault-tolerated systems that run for years with minimal failures.

Erlang programs run seamlessly on multi-core computers: this means your Erlang program should run a lot faster on a 4 core processor than on a single core processor, all without you having to change a line of code.

Erlang combines ideas from the world of functional programming with techniques for building fault-tolerant systems to make a powerful language for building the massively parallel, networked applications of the future.

This book presents Erlang and functional programming in the familiar Pragmatic style. And it's written by Joe Armstrong, one of the creators of Erlang.

It includes example code you'll be able to build upon. In addition, the book contains the full source code for two interesting applications:

A SHOUTcast server which you can use to stream music to every computer in your house, anda full-text indexing and search engine that can index gigabytes of data.

Learn how to write programs that run on dozens or even hundreds of local and remote processors. See how to write robust applications that run even in the face of network and hardware failure, using the Erlang programming language.

193435600X
Logic Programming: 24th International Conference, ICLP 2008 Udine, Italy, December 9-13 2008 Proceedings Maria Garcia de la Banda, Enrico Pontelli  
More Details

This book constitutes the refereed proceedings of the 24th International Conference on Logic Programming, ICLP 2008, held in Udine, Italy, in December 2008.

The 35 revised full papers together with 2 invited talks, 2 invited tutorials, 11 papers of the co-located first Workshop on Answer Set Programming and Other Computing Paradigms (ASPOCP 2008), as well as 26 poster presentations and the abstracts of 11 doctoral consortium articles were carefully reviewed and selected from 177 initial submissions. The papers cover all issues of current research in logic programming - they are organized in topical sections on applications, algorithms, systems, and implementations, semantics and foundations, analysis and transformations, CHRs and extensions, implementations and systems, answer set programming and extensions, as well as constraints and optimizations.

3540899812
Cocoa in a Nutshell Michael Beam, James Duncan Davidson  
More Details

Cocoa in a Nutshell begins with a complete overview of Cocoa's object classes. It provides developers who may be experienced with other application toolkits the grounding they'll need to start developing Cocoa applications. Common programming tasks are described, and many chapters focus on the larger patterns in the frameworks so developers can understand the larger relationships between the classes in Cocoa, which is essential to using the framework effectively. Cocoa in a Nutshell is divided into two parts, with the first part providing a series of overview chapters that describe specific features of the Cocoa frameworks. The second half of the book is a detailed quick reference to Cocoa's Foundation and Application Kit (AppKit) classes. A complement to Apple's documentation, Cocoa in a Nutshell is the only reference to the classes, functions, types, constants, protocols, and methods that make up Cocoa's Foundation and Application Kit frameworks, based on the Jaguar release (Mac OS X 10.2).

0596004621
Test Driven Development: By Example Kent Beck  
More Details

Quite simply, test-driven development is meant to eliminate fear in application development. While some fear is healthy (often viewed as a conscience that tells programmers to "be careful!"), the author believes that byproducts of fear include tentative, grumpy, and uncommunicative programmers who are unable to absorb constructive criticism. When programming teams buy into TDD, they immediately see positive results. They eliminate the fear involved in their jobs, and are better equipped to tackle the difficult challenges that face them. TDD eliminates tentative traits, it teaches programmers to communicate, and it encourages team members to seek out criticism However, even the author admits that grumpiness must be worked out individually! In short, the premise behind TDD is that code should be continually tested and refactored. Kent Beck teaches programmers by example, so they can painlessly and dramatically increase the quality of their work.

0321146530
Extreme Programming Explained: Embrace Change Kent Beck, Cynthia Andres  
More Details

"In this second edition of Extreme Programming Explained, Kent Beck organizes and presents five years' worth of experiences, growth, and change revolving around XP. If you are seriously interested in understanding how you and your team can start down the path of improvement with XP, you must read this book." —Francesco Cirillo, Chief Executive Officer, XPLabs S.R.L. "The first edition of this book told us what XP was—it changed the way many of us think about software development. This second edition takes it farther and gives us a lot more of the 'why' of XP, the motivations and the principles behind the practices. This is great stuff. Armed with the 'what' and the 'why,' we can now all set out to confidently work on the 'how': how to run our projects better, and how to get agile techniques adopted in our organizations." —Dave Thomas, The Pragmatic Programmers LLC "This book is dynamite! It was revolutionary when it first appeared a few years ago, and this new edition is equally profound.For those who insist on cookbook checklists, there's an excellent chapter on 'primary practices,' but I urge you to begin by truly contemplating the meaning of the opening sentence in the first chapter of Kent Beck's book: 'XP is about social change. ' You should do whatever it takes to ensure that every IT professional and every IT manager—all the way up to the CIO—has a copy of Extreme Programming Explained on his or her desk." —Ed Yourdon, author and consultant "XP is a powerful set of concepts for simplifying the process of software design, development, and testing. It is about minimalism and incrementalism, which are especially useful principles when tackling complex problems that require a balance of creativity and discipline." —Michael A. Cusumano, Professor, MIT Sloan School of Management, and author of The Business of Software"Extreme Programming Explained is the work of a talented and passionate craftsman. Kent Beck has brought together a compelling collection of ideas about programming and management that deserves your full attention. My only beef is that our profession has gotten to a point where such common-sense ideas are labeled 'extreme.'..."—Lou Mazzucchelli, Fellow, Cutter Business Technology Council"If your organization is ready for a change in the way it develops software, there's the slow incremental approach, fixing things one by one, or the fast track, jumping feet first into Extreme Programming. Do not be frightened by the name, it is not that extreme at all. It is mostly good old recipes and common sense, nicely integrated together, getting rid of all the fat that has accumulated over the years." —Philippe Kruchten, UBC, Vancouver, British Columbia"Sometimes revolutionaries get left behind as the movement they started takes on a life of its own. In this book, Kent Beck shows that he remains ahead of the curve, leading XP to its next level. Incorporating five years of feedback, this book takes a fresh look at what it takes to develop better software in less time and for less money. There are no silver bullets here, just a set of practical principles that, when used wisely, can lead to dramatic improvements in software development productivity."—Mary Poppendieck, author of Lean Software Development: An Agile Toolkit "Kent Beck has revised his classic book based on five more years of applying and teaching XP. He shows how the path to XP is both easy and hard: It can be started with fewer practices, and yet it challenges teams to go farther than ever." —William Wake, independent consultant "With new insights, wisdom from experience, and clearer explanations of the art of Extreme Programming, this edition of Beck's classic will help many realize the dream of outstanding software development. " —Joshua Kerievsky, author of Refactoring to Patterns and Founder, Industrial Logic, Inc."XP has changed the way our industry thinks about software development. Its brilliant simplicity, focused execution, and insistence on fact-based planning over speculation have set a new standard for software delivery." —David Trowbridge, Architect, Microsoft Corporation Accountability. Transparency. Responsibility. These are not words that are often applied to software development.In this completely revised introduction to Extreme Programming (XP), Kent Beck describes how to improve your software development by integrating these highly desirable concepts into your daily development process. The first edition of Extreme Programming Explained is a classic. It won awards for its then-radical ideas for improving small-team development, such as having developers write automated tests for their own code and having the whole team plan weekly. Much has changed in five years.This completely rewritten second edition expands the scope of XP to teams of any size by suggesting a program of continuous improvement based on: *Five core values consistent with excellence in software development *Eleven principles for putting those values into action *Thirteen primary and eleven corollary practices to help you push development past its current business and technical limitations Whether you have a small team that is already closely aligned with your customers or a large team in a gigantic or multinational organization, you will find in these pages a wealth of ideas to challenge, inspire, and encourage you and your team members to substantially improve your software development. You will discover how to: *Involve the whole team—XP style *Increase technical collaboration through pair programming and continuous integration *Reduce defects through developer testing *Align business and technical decisions through weekly and quarterly planning *Improve teamwork by setting up an informative, shared workspace You will also find many other concrete ideas for improvement, all based on a philosophy that emphasizes simultaneously increasing the humanity and effectiveness of software development. Every team can improve. Every team can begin improving today. Improvement is possible—beyond what we can currently imagine. Extreme Programming Explained, Second Edition, offers ideas to fuel your improvement for years to come.

0321278658
Software Configuration Management Patterns: Effective Teamwork, Practical Integration Stephen P. Berczuk, Brad Appleton  
More Details

Shows how proven SCM practices can foster a healthy team-oriented culture that produces better software. The patterns are presented with an emphasis on practicality. Softcover.

0201741172
Confessions of a Public Speaker Scott Berkun  
More Details

"At 7:48 a.m. on a Tuesday, I am showered, cleaned, shaved, pruned, fed, and deodorized, wearing a pressed shirt and shiny shoes, in a cab on my way to the San Francisco waterfront I'm far from home, going to an unfamiliar place, and performing for strangers, three stressful facts that mean anything can happen "

In this hilarious and highly practical book, author and professional speaker Scott Berkun reveals the techniques behind what great communicators do, and shows how anyone can learn to use them well. For managers and teachers-and anyone else who talks and expects someone to listen-Confessions of a Public Speaker provides an insider's perspective on how to effectively present ideas to anyone. It's a unique, entertaining, and instructional romp through the embarrassments and triumphs Scott has experienced over 15 years of speaking to crowds of all sizes.

With lively lessons and surprising confessions, you'll get new insights into the art of persuasion-as well as teaching, learning, and performance-directly from a master of the trade.

Highlights include:

Berkun's hard-won and simple philosophy, culled from years of lectures, teaching courses, and hours of appearances on NPR, MSNBC, and CNBCPractical advice, including how to work a tough room, the science of not boring people, how to survive the attack of the butterflies, and what to do when things go wrongThe inside scoop on who earns $30,000 for a one-hour lecture and whyThe worst-and funniest-disaster stories you've ever heard (plus countermoves you can use)

Filled with humorous and illuminating stories of thrilling performances and real-life disasters, Confessions of a Public Speaker is inspirational, devastatingly honest, and a blast to read.

0596801998