Sunday, September 21, 2008

Visual C++ Optimization with Assembly Code


Describing how the Assembly language can be used to develop highly effective C++ applications, this guide covers the development of 32-bit applications for Windows. Areas of focus include optimizing high-level logical structures, creating effective mathematical algorithms, and working with strings and arrays. Code optimization is considered for the Intel platform, taking into account features of the latest models of Intel Pentium processors and how using Assembly code in C++ applications can improve application processing. The use of an assembler to optimize C++ applications is examined in two ways, by developing and compiling Assembly modules that can be linked with the main program written in C++ and using the built-in assembler. Microsoft Visual C++ .Net 2003 is explored as a programming tool, and both the MASM 6.14 and IA-32 assembler compilers, which are used to compile source modules, are considered.

Download Link 1
Download Link 2

Visual C++ Windows Shell Programming


The Windows shell provides much of the look and feel of the Windows 98/Windows NT 4 desktop, and it offers many new possibilities for writing better programs. Visual C++ 6 Windows Shell Programming provides an excellent guide to understanding and programming the Windows shell, in a book filled with expert tips and useful code.

The book begins with the basics of the Windows desktop and taskbar and gives an overview of programming techniques. Besides the simpler shell C API, there are COM objects for manipulating the shell. Next the book covers file programming, such as finding and copying files, before moving on to explain how to modify shortcuts. The author presents multiple techniques for opening new programs and documents and shows how to modify the system icon tray.

Later, the book turns to Windows shell COM objects and looks at working with folders and other desktop objects. Material on the Windows Scripting Host (for batch processing) is also very useful. The author creates a sample Windows metafile (.WMF) viewer as a fuller example. The book closes with some notable material on the new Web View feature in Windows 98.

Even if you don't plan on programming extensively with the Windows shell, the material in this book can demystify what the shell is and how it operates. Reading Visual C++ 6 Windows Shell Programming can help you understand how Windows 98 and the Active Desktop really work while teaching you to be a skilled C++ Windows shell developer.

Download Link 1
Download Link 2

Thursday, September 4, 2008

Introduction to Algorithms

Introduction to Algorithms


Aimed at any serious programmer or computer science student, the new second edition of Introduction to Algorithms builds on the tradition of the original with a truly magisterial guide to the world of algorithms. Clearly presented, mathematically rigorous, and yet approachable even for the math-averse, this title sets a high standard for a textbook and reference to the best algorithms for solving a wide range of computing problems.

With sample problems and mathematical proofs demonstrating the correctness of each algorithm, this book is ideal as a textbook for classroom study, but its reach doesn't end there. The authors do a fine job of explaining each algorithm. (Reference sections on basic mathematical notation will help readers bridge the gap, but it will help to have some math background to appreciate the full achievement of this handsome hardcover volume.) Every algorithm is presented in pseudo-code, which can be implemented in any computer language, including C/C++ and Java. This ecumenical approach is one of the book's strengths. When it comes to sorting and common data structures, from basic linked lists to trees (including binary trees, red-black, and B-trees), this title really shines, with clear diagrams that show algorithms in operation. Even if you just glance over the mathematical notation here, you can definitely benefit from this text in other ways.

The book moves forward with more advanced algorithms that implement strategies for solving more complicated problems (including dynamic programming techniques, greedy algorithms, and amortized analysis). Algorithms for graphing problems (used in such real-world business problems as optimizing flight schedules or flow through pipelines) come next. In each case, the authors provide the best from current research in each topic, along with sample solutions.

This text closes with a grab bag of useful algorithms including matrix operations and linear programming, evaluating polynomials, and the well-known Fast Fourier Transformation (FFT) (useful in signal processing and engineering). Final sections on "NP-complete" problems, like the well-known traveling salesman problem, show off that while not all problems have a demonstrably final and best answer, algorithms that generate acceptable approximate solutions can still be used to generate useful, real-world answers.

Throughout this text, the authors anchor their discussion of algorithms with current examples drawn from molecular biology (like the Human Genome Project), business, and engineering. Each section ends with short discussions of related historical material, often discussing original research in each area of algorithms. On the whole, they argue successfully that algorithms are a "technology" just like hardware and software that can be used to write better software that does more, with better performance. Along with classic books on algorithms (like Donald Knuth's three-volume set, The Art of Computer Programming), this title sets a new standard for compiling the best research in algorithms. For any experienced developer, regardless of their chosen language, this text deserves a close look for extending the range and performance of real-world software. --Richard Dragan

Topics covered: Overview of algorithms (including algorithms as a technology); designing and analyzing algorithms; asymptotic notation; recurrences and recursion; probabilistic analysis and randomized algorithms; heapsort algorithms; priority queues; quicksort algorithms; linear time sorting (including radix and bucket sort); medians and order statistics (including minimum and maximum); introduction to data structures (stacks, queues, linked lists, and rooted trees); hash tables (including hash functions); binary search trees; red-black trees; augmenting data structures for custom applications; dynamic programming explained (including assembly-line scheduling, matrix-chain multiplication, and optimal binary search trees); greedy algorithms (including Huffman codes and task-scheduling problems); amortized analysis (the accounting and potential methods); advanced data structures (including B-trees, binomial and Fibonacci heaps, representing disjoint sets in data structures); graph algorithms (representing graphs, minimum spanning trees, single-source shortest paths, all-pairs shortest paths, and maximum flow algorithms); sorting networks; matrix operations; linear programming (standard and slack forms); polynomials and the Fast Fourier Transformation (FFT); number theoretic algorithms (including greatest common divisor, modular arithmetic, the Chinese remainder theorem, RSA public-key encryption, primality testing, integer factorization); string matching; computational geometry (including finding the convex hull); NP-completeness (including sample real-world NP-complete problems and their insolvability); approximation algorithms for NP-complete problems (including the traveling salesman problem); reference sections for summations and other mathematical notation, sets, relations, functions, graphs and trees, as well as counting and probability backgrounder (plus geometric and binomial distributions).

Product Description
The first edition won the award for Best 1990 Professional and Scholarly Book in Computer Science and Data Processing by the Association of American Publishers.

There are books on algorithms that are rigorous but incomplete and others that cover masses of material but lack rigor. Introduction to Algorithms combines rigor and comprehensiveness.

The book covers a broad range of algorithms in depth, yet makes their design and analysis accessible to all levels of readers. Each chapter is relatively self-contained and can be used as a unit of study. The algorithms are described in English and in a pseudocode designed to be readable by anyone who has done a little programming. The explanations have been kept elementary without sacrificing depth of coverage or mathematical rigor.

The first edition became the standard reference for professionals and a widely used text in universities worldwide. The second edition features new chapters on the role of algorithms, probabilistic analysis and randomized algorithms, and linear programming, as well as extensive revisions to virtually every section of the book. In a subtle but important change, loop invariants are introduced early and used throughout the text to prove algorithm correctness. Without changing the mathematical and analytic focus, the authors have moved much of the mathematical foundations material from Part I to an appendix and have included additional motivational material at the beginning.

Download Link 1
Download Link 2

The Object Primer: Agile Model-Driven Development with UML 2.0

The Object Primer: Agile Model-Driven Development with UML 2.0


Review
"THe Object Primer is the best book I've read that covers the basic fundamentals of object-oriented software engineering and process. It is easy to understand and...a must read." Mike Stefano, New York Life

Product Description
Scott Ambler, award-winning author of Building Object Applications that Work, Process Patterns, and More Process Patterns, has revised his acclaimed first book, The Object Primer. Long prized by both students and professionals as the best introduction to object-oriented technology, this book is now completely up-to-date, with all modeling notation rewritten in the just-released UML 2.0. All chapters have been revised to take advantage of Agile Modeling (AM), which is presented in the new chapter 2 along with other important new modeling techniques. Review questions at the end of each chapter allow readers to test their newly acquired knowledge. In addition, Ambler takes time to reflect on the lessons learned over the past few years by discussing the proven benefits and drawbacks of the technology. This is the perfect book for any software development professional or student seeking an introduction to the concepts and terminology of object technology. Previous Edition Pb (2001): 0-521-78519-7 Scott W. Ambler is a senior object consultant with Ronin International, Inc. and a popular speaker at conferences worldwide. He has worked with OO technology since 1990 as a business architect, system analyst, system designer, mentor, Smalltalk/C++/Java developer, and OO software process manager. He is a member of the IEEE Computer Society, the ACM, and Mensa.

Download Link 1
Download Link 2

Object-Oriented Design Heuristics


Book Info
Offers insight into object-oriented design improvement. The more than sixty guidelines presented are language-independent and allow you to rate the integrity of a software design. DLC: Object-oriented programming (Computer science)

From the Inside Flap
In the process of teaching object-oriented analysis, design, and implementation to several thousand students, it became clear to me that the industry was in serious need of guidelines to help developers make proper decisions. Since 1987 I have scoured the literature in search of productivity and complexity metrics that can be applied at different levels of development to improve an object-oriented application. I added my own "homemade" guidelines to those found in the literature and came up with approximately 60 guidelines, several of which are tongue-in-cheek yet no less important than any others. I briefly considered calling them the "Sixty Golden Rules of OOA/D," but I recalled Dykstra's legendary "Goto Considered Harmful" paper, which branded users of goto statements heretics who should be burned at the stake in the company courtyard. That paper was important in that it provided an industry rule that stopped the users of goto statements who were destroying, wittingly or unwittingly, the maintainability of their systems. Unfortunately, the side effect of such a rule was the breeding of a group of pathological authors who, for the past 25 years, have published articles stating that the judicious use of a goto statement in some picky little piece of an application is more readable than a corresponding piece of structured code. Of course, these papers were followed up by a half-dozen rebuttal papers, which were themselves rebutted ad nauseam.

In order to prevent the same pathology from occurring, I refer to these 60 guidelines as "heuristics," or rules of thumb. They are not hard and fast rules that must be followed under penalty of heresy. Instead, they should be thought of as a series of warning bells that will ring when violated. The warning should be examined, and if warranted, a change should be enacted to remove the violation of the heuristic. It is perfectly valid to state that the heuristic does not apply in a given example for one reason or another. In fact, in many cases, two heuristics will be at odds with one another in a particular area of an object-oriented design. The developer is required to decide which heuristic plays the more important role.

This book does not invent yet another object-oriented analysis or design methodology, though the idea of creating "Riel's OOA/D Methodology" was tempting. The industry already has enough methodologies offering similar or overlapping advice, using a completely different vocabulary for common concepts. The typical problem of the object-oriented developer - which has not been seriously addressed - occurs once a design has been completed, regardless of the methodology used. The developer's main question is, "Now that I have my design, is it good, bad, or somewhere in between?" In asking an object-oriented guru, the developer is often told that a design is good when "it feels right." While this is of little use to the developer, there is a kernel of truth to such an answer. The guru runs through a subconscious list of heuristics, built up through his or her design experience, over the design. If the heuristics pass, then the design feels right, and if they do not pass, then the design does not feel right.

This book attempts to capture that subconscious list of heuristics in a concrete list backed up by real-world examples. The reader will become immediately aware that some heuristics are much stronger than others. The strength of a heuristic comes from the ramifications of violating it. The reader does not get a prioritized ordering of the heuristics. It is my feeling that in many cases the sense of priority is defined by a combination of the application domain and the user's needs and cannot be quantified here. For example, a common area of design where two heuristics might request opposite directions are those that trade complexity with flexibility. Ask yourself which attribute a software designer desires most, increased flexibility or decreased complexity, and you begin to see the problem of prioritizing heuristics.

The design heuristics are defined on a backdrop of real-world examples focusing on the area of design to which each heuristic belongs. The foundation of real-world examples provides an ideal vehicle for explaining the concepts of object-oriented technology to the novice. The end result is that this book is appropriate to the newcomer who would like a fast track to understanding the concepts of object-oriented programming without having to muddle through the proliferation of buzzwords that permeates the field. Yet, at the same time, it appeals to the experienced object-oriented developer who is looking for some good analysis and design heuristics to help in his or her development efforts.

The first chapter looks at the motivation for object-oriented programming, starting with several issues which Frederick Brooks argued in his "No Silver Bullet" paper published in 1987 (see reference 1). My perspective on object-oriented programming is that it is a natural progression or evolution from action-oriented development. As software has become more complex, we are required to remove ourselves one more level away from the machine in order to maintain the same grasp we have on the software development process. Just as structured methodologies removed one level from bottom-up programming, object-oriented technology removes one level from structured methodologies. It is not that bottom-up programming or structured methodologies are wrong and object-oriented programming is right. Bottom-up programming is perfectly valid when there exists only 4K of memory to develop, just as structured methodologies are perfectly valid when only 256K of memory exists. With the advent of increasingly cheaper and more powerful hardware, the complexity of software has skyrocketed. Developers of the early 1980s did not have to consider the complexity of graphical user interfaces and multithreaded applications; simpler menu-driven, single-threaded systems were the norm. In the very near future, no one will buy a software product unless it incorporates multimedia with moving video and voice recognition. The more complex systems require a greater level of abstraction, which the object-oriented paradigm provides. This is no revolution in software development; it is simply an evolution.

Chapter 2 discusses the concepts of class and object, the basic building blocks of object-oriented technology. They are viewed as the encapsulation of data and its related behavior in a bidirectional relationship. The notion of sending messages, defining methods, and inventing protocols are explored through real-world examples. This is the first chapter to list heuristics. Given the small subset of the object paradigm with which to work, these heuristics are fairly simple but no less useful than the more complex heuristics of subsequent chapters.

The third chapter examines the difference between an action-oriented topology and an object-oriented topology. The different topologies of these methodologies contain the kernel of truth behind object-oriented development. Action-oriented development focuses largely on a centralized control mechanism controlling a functionally decomposed set of tasks, while object-oriented development focuses on a decentralized collection of cooperating entities. I am convinced that the notion of a paradigm shift is the change in thinking required to move from a centralized to a decentralized control model. The learning curve of object-oriented development is an equally large unlearning curve for those of us reared in the world of action-oriented development. The real world in which we live is more attuned to the object model than to a centralized control mechanism. The lack of a paradigm shift manifests itself in systems that consist of a central godlike object that sits in the middle of a collection of trivial classes. These systems are built by developers stuck in the mindset of an action-oriented topology. This chapter proposes numerous heuristics for developing optimal application topologies.

Chapters 4 through 7 examine each of the five main object-oriented relationships: uses (Chapter 4); containment (Chapter 4); single inheritance (Chapter 5); multiple inheritance (Chapter 6); and association (Chapter 7) through a series of real-world examples. Most of the heuristics of interest to the object-oriented designer can be found in these chapters. The chapters on inheritance include many examples of the common misuses of the inheritance relationship. This information is vital in reducing the proliferation of classes problem, such as designing too many classes for a given application. The class proliferation problem is a major cause of failure in object-oriented development.

Chapter 8 examines the role of class-specific data and behavior, as opposed to object-specific data and behavior. The invoice class is used as an example of an abstraction that requires class-specific data and behavior. Both the SmallTalk metaclass and the C++ keyword mechanisms are illustrated. In addition, the notion of C++ metaclasses (i.e., templates) is compared and contrasted to the SmallTalk notion of metac

Download Link 1
Download Link 2

Object-Oriented Programming (From Problem Solving to JAVA) (Programming Series) (Paperback)


Product Description
Object-Oriented Programming: From Problem Solving to Java provides a thorough, easy-to-follow reference to master object-oriented programming principles. Throughout the text, problem solving and programming techniques are presented in modeling diagrams, pseudo-code, and flowcharts. Users then learn how to put theory into practice using actual Java code. Unlike "cookbook" guides where users blindly follow the instructions this book encourages users to explore their problem solving creativity, and then test their ideas in a real-world environment. By first learning the concepts involved in object-oriented programming, and then learning how to put them into use, readers not only learn Java, but they also learn how to become more efficient programmers.

Book Info
Text teaches the fundamental principles of object-oriented programming using Java. Includes a CD-ROM with all the source code for the projects in the book. For beginners. Softcover. DLC: Object-oriented programming (Computer science).

Download Link 1
Download Link 2

Pair Programming Illuminated


Book Info
Written as instruction for team members and leaders new to pair programming and as an improvement guide for experienced pair programmers Explains both the principles underlying this method and its best practices. Softcover.

From the Back Cover

Pair programming is a simple, straightforward concept. Two programmers work side-by-side at one computer, continuously collaborating on the same design, algorithm, code, and test. It produces a higher quality of code in about half the time than that produced by the summation of their solitary efforts. However, nothing is simple where people and personalities are involved--especially people who are accustomed to working alone. The leap to pair programming for a variety of software development projects is one that yields many benefits. However, it is also one that requires careful thought and planning.

Written as instruction for team members and leaders new to pair programming and as an improvement guide for experienced pair programmers, Pair Programming Illuminated explains both the principles underlying this method and its best practices. The authors, drawing on their own extensive experience, explain what works and what does not, what should be emphasized and what should be avoided. Two case studies further illuminate pair programming in practice: one in the context of extreme programming (XP), with which it often is associated, and one linked to a more disciplined software engineering process.

Key topics include:
# Principles for selecting partners
# Practical advice, such as furniture set-up, pair rotation, and weeding out bad pairs
# Seven habits of effective pair programmers

Special appendices include:
# A pair programming tutorial
# An economic analysis of pair programming
# An introduction to test-driven development

With this book in hand, you will quickly discover how pair programming fits the needs of your own organization or project. You then will see exactly how to get started with this method, and how to do it right.

Download Link 1
Download Link 2

The Object Constraint Language: Getting Your Models Ready for MDA (2nd Edition) (Addison-Wesley Object Technology Series) (Paperback)


Praise for The Object Constraint Language, Second Edition

“MDA promises a revolution in the way we develop software. This book is essential reading for anyone intending to adopt MDA technology.”
—Tony Clark, PhD
King’s College, London

“Through examples, Jos and Anneke demonstrate the power and intuitiveness of OCL, and the key role that this language plays in implementing and promoting MDA. The theme, structure, contents, and, not lastly, the clarity of explanations recommend this book as the best advocate for learning, using, and promoting OCL, UML, and MDA. I am sure that this work will contribute in a significant manner to the development and widespread use of new software technologies.”
—Dan Chiorean
Head of the Computer Science Research Laboratory
Babes-Bolyai University, Cluj

"In this thoroughly revised edition, Jos and Anneke offer a concise, pragmatic, and pedagogic explanation of the Object Constraint Language (OCL) and its different applications. Their discussion of OCL's potential role in Model Driven Architecture (MDA) is timely and offers great insight into the way that UML can be taken to the next level of automated software development practice. I highly recommend this book to anyone who is looking to get the most out of UML."

—Shane Sendall, PhD, Senior Researcher, Swiss Federal Institute of Technology in Lausanne

The release of Unified Modeling Language (UML) 2.0 places renewed emphasis on the Object Constraint Language (OCL). Within UML, OCL is the standard for specifying expressions that add vital information to object-oriented models and other object-modeling artifacts. Model Driven Architecture (MDA) relies on OCL to add the level of programming detail necessary to enable platform-specific models (PSM) to communicate with platform-independent models (PIM).

This book is a practical, accessible guide to OCL for software architects, designers, and developers. Much care has been taken during the redesign of OCL to ensure that the syntax remains readable and writable by the average software modeler. The Object Constraint Language, Second Edition, utilizes a case study to show how to exercise these compact but powerful expressions for maximum effect.

This newly updated edition

* Explains why OCL is critical to MDA--and why UML alone is not enough
* Introduces an SQL-like syntax to OCL
* Defines the new language constructs of OCL 2.0
* Demonstrates how OCL can be incorporated into code
* Shares tips and tricks for applying OCL to real-world modeling challenges—showing which can be solved with UML and which require OCL

Using a combination of UML and OCL allows developers to realize the effective, consistent, and coherent models that are critical to working with MDA. The authors' pragmatic approach and illustrative use of examples will help application developers come quickly up to speed with this important object-modeling method—and will serve as a ready reference thereafter.

Download Link 1
Download Link 2

Wednesday, August 6, 2008

Teach Yourself Perl 5 in 21 Days (Sams Teach Yourself)

Teach Yourself Perl 5 in 21 Days (Sams Teach Yourself)


Book Description
Sams Teach Yourself Perl 5 in 21 Days is the ideal book for beginner and intermediate level users who want to gain a solid understanding of this programming language. Using step-by-step tutorials, you'll learn everything you need to know about this popular programming language. Discover how to manipulate text, generate reports, and perform system tasks. Through practical, hands-on instructions, logically organized lessons, and helpful Q&A sections, you'll master Perl functions and concepts and be developing robust programs in no time. Plus, Do/Don't boxes show you how to avoid potential programming pitfalls, illustrations explain constructs such as associative arrays, and tables serve as handy references.

* No previous programming experience is required
* Explores the old and new features of Perl and Perl 5
* Teaches Internet programming with Perl 5
* CD-ROM includes all project files developed by the author, plus Perl 4.0 and Perl 5.0 to get you programming on the Internet right away

Download Link 1
Download Link 2

Tuesday, August 5, 2008

Teach Yourself Perl in 21 Days

Teach Yourself Perl in 21 Days

Perl
Sams Pub.
This tutorial and reference starts with the basics and then builds upon them. Through various teaching elements, users learn how to manipulate text, generate reports, and perform system tasks using the Perl language. "Assumes no prior programming knowledge or experience. Covers topics such as scalar values, string functions, reading and writing files, debugging, system variables, associative arrays, and subroutines. Uses Q&A sections, step-by-step instructions, daily". Covers Perl Programming.

Download Link 1
Download Link 2

Web Client Programming with Perl

Web Client Programming with Perl

perl
Product Description
On the World Wide Web, people are accustomed to using graphical browsers such as Netscape Navigator or Mosaic as their only interface for visiting remote sites, accessing up-to-date documents, and filling out forms. But graphical browsers can be limiting: the very interactivity that makes them so intuitive to use also makes them clumsy for automating tasks. If you want to get the latest weather report every few hours, track a Federal Express package online, or use a dictionary server repeatedly throughout the day, using your browser to perform the same task over and over can become cumbersome. As with any repetitive task, these applications are best done by writing a script.

Web Client Programming with Perl shows you how to extend scripting skills to the Web. This book teaches you the basics of how browsers communicate with servers and how to write your own customized Web clients to automate common tasks. It is intended for those who are motivated to develop software that offers a more flexible and dynamic response than a standard Web browser.

Using this book, you'll learn how to:

* Automate repetitive queries on the Web
* Detect broken hyperlinks on your site
* Write simple "robots" that traverse hyperlinks across a site, and across the Web in general

This book will be of interest to:

* Web administrators who need to automate repetitive tasks or reduce maintenance time
* UNIX shell programmers who want to interface their scripts to the Web
* Commercial software developers and consultants who need reference material for technical Web specifications and proof-of-concept examples

Most of the examples in this book use Perl, a versatile and portable language that is already familiar to many CGI programmers and UNIX power users. The book does not teach Perl, but the techniques used in the book should be easily followed by anyone with some programming background and can be adapted to whatever language you choose.

Download Link 1
Download Link 2

Wicked Cool Perl Scripts : Useful Perl Scripts That Solve Difficult Problems

Wicked Cool Perl Scripts : Useful Perl Scripts That Solve Difficult Problems

Most Perl programmers have been frustrated at one time or another because the system just wouldn't do what they wanted it to do. There was that one simple and obvious utility that was missing that would make life so much easier: A tool to get a stock quote, show off a photograph collection, or even display a collection of favorite comics. Wicked Cool Perl Scripts is about writing those utilities quickly and easily. A collection of handy utilities that solves difficult problems, Wicked Cool Perl Scripts is a great resource for the savvy Perl programmer.

Download Link 1
Download Link 2
Download Link 3

Monday, August 4, 2008

Python Programming On Win32: Help for Windows Programmers

Python Programming On Win32: Help for Windows Programmers


Product Description
Python is growing in popularity; based on download statistics, there are now over 450,000 people using Python, and more than 150,000 people using Python on Windows. Use of the language has been growing at about 40% per year since 1995, and there is every reason to believe that growth will continue. Despite Python's increasing popularity on Windows, Python Programming on Win32 is the first book to demonstrate how to use it as a serious Windows development and administration tool. Unlike scripting on Unix, Windows scripting involves integrating a number of components, such as COM or the various mail and database APIs, with the Win32 programming interface. While experienced Windows C++ programmers can find their way through the various objects, most people need some guidance, and this book is it. It addresses all the basic technologies for common integration tasks on Windows, explaining both the Windows issues and the Python code you need to glue things together. Topics include:

* The Python language and the PythonWin extensions
* Building a GUI with COM
* Adding a Macro language
* Distributing the application
* Client-side COM for output and data access
* Integration with mail and other internet protocols
* Managing users and drives

This is a vital and unique book. Python Programming on Win32 is an excellent presentation of Windows application development and a solid illustration of how to use Python in the Windows environment.

Download Link 1
Download Link 2

Python Programming with the Java(TM) Class Libraries: A Tutorial for Building Web and Enterprise Applications with Jython

Python Programming with the Java(TM) Class Libraries: A Tutorial for Building Web and Enterprise Applications with Jython


Book Info
Tutorial begins with coverage of some of the basics of Python programming. Using plenty of skill-building exercises and interactive programming sessions to help those new to programming develop an understanding of concepts and practical techniques. Softcover.

From the Back Cover

Characterized by ease of use, richness of expression, and concise syntax, Python has remained a premier programming language for more than a decade, and is used by novices and professionals alike. In particular, its close relationship to Java™ makes the two languages, when used in combination, ideal for Web and distributed enterprise application development.

This tutorial begins with coverage of some of the basics of Python programming. Using plenty of skill-building exercises and interactive programming sessions, this book will help those new to programming develop an understanding of concepts and practical techniques. For experienced programmers, the book demonstrates Python's breadth of capabilities and shows the ways that Python interfaces with Java APIs for professional application development.

Python Programming with the Java™ Class Libraries: A Tutorial for Building Web and Enterprise Applications with Jython covers important topics such as:

* Fundamental programming concepts, including statements, expressions, interpreters, and compilers
* Python basics, including operators, string formatting, namespaces, classes, errors, and exceptions
* Object-oriented programming concepts
* File input/output
* Python's intrinsic functions
* Formatting, parsing, and manipulating strings
* Interfacing with the Java APIs and working with Java Streams
* Using Python and Java Swing to create GUIs
* Working with SQL and JDBC™
* Python and Java applets

In addition, the book contains instructions for downloading and installing the Python language and the Java Development Kit (JDK). Terminology, definitions, explanations, and numerous code samples make this book a useful learning experience.

Whether you are a sophisticated computer user new to programming or a serious application developer, Python Programming with the Java™ Class Libraries will give you insight into the power of Python and the know-how to put it to work.

Download Link 1

Download Link 2

Python Scripting for Computational Science

Python Scripting for Computational Science


Book Description
The goal of this book is to teach computational scientists and engineers how to develop tailored, flexible, and efficient working environments built from small programs (scripts) written in the easy-to-learn, very high-level language Python. The focus is on examples and applications of relevance to computational science: gluing existing applications and tools, e.g. for automating simulation, data analysis, and visualization; steering simulations and computational experiments; equipping programs with graphical user interfaces; making computational Web services; creating interactive interfaces with a Maple/Matlab-like syntax to numerical applications in C/C++ or Fortran; and building flexible object-oriented programming interfaces to existing C/C++ or Fortran libraries. In short, scripting with Python makes you much more productive, increases the reliability of your scientific work and lets you have more fun - under Unix, Windows and MacIntosh.

Download Link 1
Download Link 2

Rapid GUI Programming with Python and Qt

Rapid GUI Programming with Python and Qt


Product Description
The Insider's Best-Practice Guide to Rapid PyQt 4 GUI Development

Whether you're building GUI prototypes or full-fledged cross-platform GUI applications with native look-and-feel, PyQt 4 is your fastest, easiest, most powerful solution. Qt expert Mark Summerfield has written the definitive best-practice guide to PyQt 4 development.

With Rapid GUI Programming with Python and Qt you'll learn how to build efficient GUI applications that run on all major operating systems, including Windows, Mac OS X, Linux, and many versions of Unix, using the same source code for all of them. Summerfield systematically introduces every core GUI development technique: from dialogs and windows to data handling; from events to printing; and more. Through the book's realistic examples you'll discover a completely new PyQt 4-based programming approach, as well as coverage of many new topics, from PyQt 4's rich text engine to advanced model/view and graphics/view programming. Every key concept is illuminated with realistic, downloadable examples—all tested on Windows, Mac OS X, and Linux with Python 2.5, Qt 4.2, and PyQt 4.2, and on Windows and Linux with Qt 4.3 and PyQt 4.3.

Coverge includes

* Python basics for every PyQt developer: data types, data structures, control structures, classes, modules, and more

* Core PyQt GUI programming techniques: dialogs, main windows, and custom file formats

* Using Qt Designer to design user interfaces, and to implement and test dialogs, events, the Clipboard, and drag-and-drop

* Building custom widgets: Widget Style Sheets, composite widgets, subclassing, and more

* Making the most of Qt 4.2's new graphics/view architecture

* Connecting to databases, executing SQL queries, and using form and table views

* Advanced model/view programming: custom views, generic delegates, and more

* Implementing online help, internationalizing applications, and using PyQt's networking and multithreading facilities

About the Author

Mark Summerfield works as an independent trainer and consultant specializing in C++, Qt, Python, and PyQt. He was Trolltech’s documentation manager from 2000 to 2004, was the founding editor of Qt Quarterly, Trolltech’s customer newsletter, and coauthored C++ GUI Programming with Qt 3 and C++ GUI Programming with Qt 4.

Download Link 1
Download Link 2
Download Link 3

Sams Teach Yourself Django in 24 Hours

Sams Teach Yourself Django in 24 Hours


Product Description

In just 24 lessons of one hour or less, you will be able to build full-featured production websites using Django, the powerful web development framework based on Python.

Designed for experienced website developers who have at least some familiarity with the Python programming language, this book uses a straightforward, step-by-step approach. Each lesson builds on the previous ones, enabling you to learn the essentials of implementing the Django framework on a website from the ground up.

Step-by-step instructions carefully walk you through the most common Django tasks.

Q&As, quizzes, and exercises at the end of each lesson help you test your knowledge.

Notes and tips point out shortcuts and solutions.

Learn how to…

* Install and configure the Django web development framework
* Cleanly separate data, logic, and view layers
* Implement site interfaces with build templates and views
* Utilize templates and views to store, access, and retrieve data
* Use the Django forms library
* Define custom tags and filters to minimize coding
* Secure sites with registration, authorization, logins, and permissions
* Manage sessions and cookies
* Implement middleware for request and response handling
* Create sitemaps to inform search engines of your content
* Internationalize your site
* Optimize performance with caching
* Deploy Django in multiple configurations
* Maintain sites with Django’s administrator interface

Introduction 1

Part I: Creating the Website Framework

Hour 1: Understanding Django 7

Hour 2: Creating Your First Website 19

Hour 3: Adding Models and Objects to Your Website 37

Hour 4: Creating the Initial Views 63

Part II: Implementing the Website Interface

Hour 5: Using Data from the Database in Views 81

Hour 6: Configuring Web Page Views 103

Hour 7: Implementing Django Templates to Create Custom Views 117

Hour 8: Using Built-in Template Tags to Enhance Views 139

Hour 9: Using Built-in Template Filters to Enhance Views 155

Hour 10: Adding Forms to Views 185

Hour 11: Using Views to Add and Update Data in the Database 209

Hour 12: Utilizing Generic Views 231

Hour 13: Advanced View Configurations 269

Part III: Implementing a Full-Featured Website

Hour 14: Managing Site Users 295

Hour 15: Adding Website Security 313

Hour 16: Managing Sessions and Cookies 333

Hour 17: Customizing Models in the Admin Interface 347

Hour 18: Customizing the Admin Interface 365

Part IV: Implementing Advanced Website Components

Hour 19: Implementing Middleware 383

Hour 20: Internationalization and Localization 407

Hour 21: Creating Sitemaps 423

Hour 22: Implementing Multiple Websites 437

Hour 23: Configuring Caching 451

Hour 24: Deploying Django 465

Appendixes

Appendix A: Django Resources 477

Appendix B: Django Form Field Objects 481

Appendix C: Formatting Dates and Times 491

Index 493

About the Author

Brad Dayley is a senior software engineer in Novell’s Product Development Group. He has 16 years of experience in designing, developing, and implementing software from the kernel level through web development. He is the author of several books on server and network management as well as programming languages. When he is not developing software or writing books, he can be found biking, hiking, and/or Jeeping somewhere in the remote regions of the western United States with his wife, DaNae, and four sons.

Download Link 1
Download Link 2
Download Link 3

Text Processing in Python

Text Processing in Python


From the Back Cover

Text Processing in Python is an example-driven, hands-on tutorial that carefully teaches programmers how to accomplish numerous text processing tasks using the Python language. Filled with concrete examples, this book provides efficient and effective solutions to specific text processing problems and practical strategies for dealing with all types of text processing challenges.

Text Processing in Python begins with an introduction to text processing and contains a quick Python tutorial to get you up to speed. It then delves into essential text processing subject areas, including string operations, regular expressions, parsers and state machines, and Internet tools and techniques. Appendixes cover such important topics as data compression and Unicode. A comprehensive index and plentiful cross-referencing offer easy access to available information. In addition, exercises throughout the book provide readers with further opportunity to hone their skills either on their own or in the classroom. A companion Web site (http://gnosis.cx/TPiP) contains source code and examples from the book.

Here is some of what you will find in thie book:

* When do I use formal parsers to process structured and semi-structured data? Page 257
* How do I work with full text indexing? Page 199
* What patterns in text can be expressed using regular expressions? Page 204
* How do I find a URL or an email address in text? Page 228
* How do I process a report with a concrete state machine? Page 274
* How do I parse, create, and manipulate internet formats? Page 345
* How do I handle lossless and lossy compression? Page 454
* How do I find codepoints in Unicode? Page 465

About the Author

David Mertz came to writing about programming via the unlikely route of first being a humanities professor. Along the way, he was a senior software developer, and now runs his own development company, Gnosis Software ("We know stuff!"). David writes regular columns and articles for IBM developerWorks, Intel Developer Network, O'Reilly ONLamp, and other publications.

Download Link 1
Download Link 2

The Book of Zope

The Book of Zope

Zope
From Library Journal
A background in PythonDa free, open-source programming language for web applicationsDis essential for developers using the Zope web application server. Although beginners will find a thorough introduction in The Book of Zope, it is an optional purchase for institutions owning The Zope Book (Computer Media, LJ 11/1/01). Python offers beginning programmers a gentler albeit less thorough entr e into the language than Python Essential Reference (Computer Media, LJ 8/01). Larger libraries where more advanced web development titles circulate should consider both.
Copyright 2002 Reed Business Information, Inc.

Product Description
Zope, the leading Open Source Web application server, helps teams of developers create and manage dynamic, Web-based business applications like Intranets and portals. Zope makes it easy to add features such as site search, news, personalization, and e-commerce. The Book of Zope is a comprehensive introduction to Zope, covering installation; DTML programming; concepts such as users, roles, and permissions; ZClasses; ZCatalog; databases; programming Zope with Python; debugging; and the use of external data sources. Zope runs on Windows and almost all Unix-based platforms, and includes its own Web server, transactional object-oriented database, search engine, Web page templating system, Web development and management tool, and comprehensive extension support.

Download Link 1
Download Link 2
Download Link 3

The Definitive Guide to Django: Web Development Done Right

The Definitive Guide to Django: Web Development Done Right

Django
Product Description

Django, the Python–based equivalent to the Ruby on Rails web development framework, is presently one of the hottest topics in web development today. In The Definitive Guide to Django: Web Development Done Right, Adrian Holovaty, one of Django’s creators, and Django lead developer Jacob Kaplan–Moss show you how they use this framework to create award–winning web sites. Over the course of three parts, they guide you through the creation of a web application reminiscent of chicagocrime.org.

The first part of the book introduces Django fundamentals like installation and configuration. You’ll learn about creating the components that power a Django–driven web site. The second part delves into the more sophisticated features of Django, like outputting non–HTML content (such as RSS feeds and PDFs), plus caching and user management. The third part serves as a detailed reference to Django’s many configuration options and commands. The book even includes seven appendixes for looking up configurations options and commands. In all, this book provides the ultimate tutorial and reference to the popular Django framework.

About the Author
Adrian Holovaty, a web developer/journalist, is one of the creators and core developers of Django. He works at washingtonpost.com, where he builds database web applications and does "journalism as computer programming." Previously, he was lead developer for World Online in Lawrence, Kansas, where Django was created.

When not working on Django improvements, Adrian hacks on side projects for the public good, such as chicagocrime.org, which won the 2005 Batten Award for Innovations in Journalism. He lives in Chicago and maintains a weblog at www.Holovaty.com.

Jacob Kaplan-Moss is one of the lead developers of Django. At his day job, he's the lead developer for the Lawrence Journal-World, a locally owned newspaper in Lawrence, Kansas, where Django was developed. At the Journal-World, Jacob hacks on a number of sites including lawrence.com, LJWorld.com, and KUsports.com, and he is continually embarrassed by the multitude of media awards those sites win. In his spare time&emdash;what little of it there is&emdash;he fancies himself a chef.

Download Link 1
Download Link 2

Web Component Development with Zope 3

Web Component Development with Zope 3


Review

"The book can be considered the definitive guide to Zope 3. If the reader is looking for a book containing a set of tutorials on creating and using Web applications, this is a great choice."

Pectu Dana, Timisoara, Romania; ACM Computing Reviews, September 2006

"This book is at once thorough, brief, and concise. This is by far the best technical books i've read on any subject.

I have been interested in Zope for almost a year now, but even as a seasoned programmer I was intimidated by its labrythian complexity. I struggled for weeks reading the free Zope material and learning almost nothing. This book presents the material in an accessable manner while shying away from the horrible puns and awful jokes present in so many technical books. This book would be a bargin at twice its price."

D. Morrione, Hemet, CA, amazon.com

Product Description

New Zope 3 is a web applications server written in Python that allows developing complex web applications rapidly and collaboratively. Zope 3 is the successor to the successful version 2.

After an introduction to the key concepts of Zope, a sample application is built and extended subsequently. The book is targeted towards developers familiar with the web and web technologies. Special sections for Zope 2 developers cover the basic differences to the predecessor. The concepts of Zope 3 and its component architecture are explained thoroughly, continually accompanied by a demo application.

Download Link 1
Download Link 2
Download Link 3

Sunday, August 3, 2008

wxPython in Action

wxPython in Action


Product Description
Because they are often large and complex, GUI programming tool kits can be hard to use. wxPython is a combination of the Python programming language and the wxWidgets toolkit, which allows programmers to create programs with a robust, highly functional graphical user interface, simply and easily. wxPython combines the power of an exceptionally complete user interface toolkit with an exceptionally flexible programming language. The result is a toolkit that is unique in the ease with which complex applications can be built and maintained.

wxPython in Action is a complete guide to the wxPython toolkit, containing a tutorial for getting started, a guide to best practices, and a reference to wxPython's extensive widget set. After an easy introduction to wxPython concepts and programming practices, the book takes an in-depth tour of when and how to use the bountiful collection of widgets offered by wxPython. All features are illustrated with useful code examples and reference tables are included for handy lookup of an object's properties, methods, and events. The book enables developers to learn wxPython quickly and remains a valuable resource for futurework.

Download Link 1
Download Link 2

AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Second Edition

AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Second Edition



Product Description

This is the second edition of Hanaan Rosenthals critically-acclaimed AppleScript book. It goes the extra mile to teach you AppleScriptexplaining advanced topics without leaving you behind.

AppleScript is the high-level scripting language that resides on the Mac platform. It can be used to add functionality to the Mac operating system, automate tasks, add functions, and generally make things easier. AppleScript has always been very useful, and with Mac OS X, you can take AppleScript further than before.

This book begins with the basics like handling variables, loops, and commands. Then it proceeds with more advanced concepts like debugging, AppleScripting with databases, manipulating PDFs with SMILE, and automating media workflow. In a nutshell, this book:

* Takes you on a journey from novice to professional AppleScripter.
* Is completely comprehensive; nothing is left to the imagination.
* Is up-to-date through AppleScript 1.10/Mac OS X Tiger.

If you are a Mac user who wants to know the real meaning of having full control over your machine, get into AppleScripting. And pick up this book because it really is the only guide you need to master the art of AppleScripting!

About the Author
Hanaan Rosenthal is the founder of Custom Flow Solutions, and developed his first drawing program and published a programming newsletter at the age of 11.

He became a digital media and prepress consultant in 1991, specializing in Mac publishing. In 1996 he took on his first full-blown AppleScript automation project and never looked back. Since then he has helped reshape the workflow of numerous publishing companies and departments creating systems that save their owners millions of dollars and thousands of man-hours annually. His clients include Fidelity Investments, Wellington Management, The Boston Globe, and Showtime Networks.

Download Link 1
Download Link 2

AppleScript: The Missing Manual

AppleScript: The Missing Manual

AppleScript Manual
Product Description
From newspapers to NASA, Mac users around the world use AppleScript to automate their daily computing routines. Famed for its similarity to English and its ease of integration with other programs, AppleScript is the perfect programming language for time-squeezed Mac fans. As beginners quickly realize, however, AppleScript has one major shortcoming: it comes without a manual. No more. You don't need a degree in computer science, a fancy system administrator title, or even a pocket protector and pair of nerdy glasses to learn the Mac's most popular scripting language; you just need the proper guide at your side. AppleScript: The Missing Manual is that guide. Brilliantly compiled by author Adam Goldstein, AppleScript: The Missing Manual is brimming with useful examples. You'll learn how to clean up your Desktop with a single click, for example, and how to automatically optimize pictures for a website. Along the way, you ll learn the overall grammar of AppleScript, so you can write your own customized scripts when you feel the need. Naturally, AppleScript: The Missing Manual isn't merely for the uninitiated scripter. While its hands-on approach certainly keeps novices from feeling intimidated, this comprehensive guide is also suited for system administrators, web and graphics professionals, musicians, scientists, mathematicians, engineers, and others who need to learn the ins and outs of AppleScript for their daily work. Thanks to AppleScript: The Missing Manual, the path from consumer to seasoned script has never been clearer. Now you, too, can automate your Macintosh in no time.

About the Author
Adam Goldstein got his programming start in Kindergarten, when he first played around with Logo on an old Apple II. Through middle school, Adam wrote useless but amusing HyperCard programs. Nowadays, he runs GoldfishSoft, a shareware company that makes games and utilities for Mac OS X. Adam was a technical editor for O'Reilly's best-selling Mac OS X: The Missing Manual, and an editor for Mac OS X Panther Power User. When he's not writing books or code, Adam attends MIT.

Download Link 1

Download Link 2

Danny Goodman's Applescript Handbook

Danny Goodman's Applescript HandbookApplescript

Book Description

Make your Mac do what you want your Mac to do. This bestselling guide to Applescript by author Danny Goodman gives you everything you need to know to create scriptable applications. This edition includes in-depth coverage of the scriptable Finder, FileMaker Pro, QuarkXPress, Microsoft Excel, Hypercard, Microsoft Word, WordPerfect, MacWrite Pro and TouchBase. AppleScript is an important facet of the new Apple OS 8.5.

Download Link 1

Download Link 2

Saturday, August 2, 2008

C++ Solutions: Companion to the C++ Programming Language

C++ Solutions: Companion to the C++ Programming Language



Association of C & C++ Users
"A very interesting book with good quality solutions and associated discussion. If you use the C++Primer or have it as a set text for a programming course, this book is well worth having as a supporting text. Highly recommended!"

Book Description
C++ Solutions, provides insightful, logical, and easy-to-follow solutions to selected exercises found in The C++ Programming Language, Third Edition, by Bjarne Stroustrup. The exercises are explained in detail and are extensively annotated with cross-references to Stroustrup's book. Developers acquire a thorough understanding of ANSI/ISO C++ by working through examples. Vandevoorde solves a broad subset of illustrative and realistic exercises to facilitate this process. He also includes hints to help programmers find their own solutions, and additional exercises to provide deeper insights into modern software design. Highlights

* In-depth coverage of C++ language concepts, syntax, and features for each chapter
* Numerous detailed examples that build intuition about performance issues
* Adherence to the final ANSI/ISO C++ specifications
* Sample code and programs available on-line

Download Link 1
Download Link 2
Download Link 3

C++: A Dialog: Programming with the C++ Standard Library

C++: A Dialog: Programming with the C++ Standard Library

Programming C++
Book Description
Simply the best way for beginners to learn standard C++.

C++: A Dialog is the easiest, most effective way for beginners to learn C++ programming.

Steve Heller teaches C++ from scratch, through a one-on-one conversation with an intelligent beginner who asks the questions you'd ask. Heller's unique dialog format is brilliantly designed to clarify the concepts you might otherwise find confusing, so you can quickly learn today's most powerful and valuable C++ development techniques.

Heller takes you from the absolute fundamentals through the construction of a complete inventory application, including a simple but effective user interface. Along the way, you won't just learn C++ features: you'll see exactly how professional programmers bring them together and put them to work.

Unlike many beginners' books, C++: A Dialog uses industry-standard C++ and the latest standard librariesgiving you skills you can use with any standard C++ toolset, in any programming environment. You even get all the example code and a standard C++ compiler on CD-ROM so you can write and compile your own standard C++ programs on any 32-bit Microsoft Windows platform.

CD-ROM INCLUDED

The accompanying CD-ROM contains the commercial-grade Borland C++ 5.5 compiler and its associated libraries, which supports the latest ANSI/ISO C++ standards, including the STL (Standard Template Library) framework and C++ templates.

From the Back Cover

Simply the best way for beginners to learn standard C++.

C++: A Dialog is the easiest, most effective way for beginners to learn C++ programming.

Steve Heller teaches C++ from scratch, through a one-on-one conversation with an intelligent beginner who asks the questions you'd ask. Heller's unique dialog format is brilliantly designed to clarify the concepts you might otherwise find confusing, so you can quickly learn today's most powerful and valuable C++ development techniques.

Heller takes you from the absolute fundamentals through the construction of a complete inventory application, including a simple but effective user interface. Along the way, you won't just learn C++ features: you'll see exactly how professional programmers bring them together and put them to work.

Unlike many beginners' books, C++: A Dialog uses industry-standard C++ and the latest standard libraries—giving you skills you can use with any standard C++ toolset, in any programming environment. You even get all the example code and a standard C++ compiler on CD-ROM so you can write and compile your own standard C++ programs on any 32-bit Microsoft Windows platform.
CD-ROM INCLUDED

The accompanying CD-ROM contains the commercial-grade Borland C++ 5.5 compiler and its associated libraries, which supports the latest ANSI/ISO C++ standards, including the STL (Standard Template Library) framework and C++ templates.

Download Link 1
Download Link 2

C++ Strategies and Tactics (Addison-Wesley Professional Computing Series)

C++ Strategies and Tactics (Addison-Wesley Professional Computing Series)


From the Inside Flap
In the hands of an expert, C++ helps designers and programmers build systems that are modular, maintainable, and fast. To the novice, however, the size of the language can be intimidating. There are a lot of features in C++ and it takes some experience to learn which ones are appropriate for any situation.

This book is intended to enhance and expedite that learning process. Most successful C++ programmers cannot recite chapter and verse from the language rules; instead, they have acquired a set of idioms and techniques that have worked well for them. Our goal is to help the C++ novice learn those idioms that have been most useful in practice. We also point out some of the most common pitfalls.

We do not try to cover the entire language and we leave the ultra-precise definitions of language semantics to the reference manuals. Instead, we concentrate on helping the reader build programs that can be understood by someone who is not a C++ language lawyer. We not only discuss techniques for making programs elegant and fast; we also show how to make them easier to understand and maintain.

Acknowledgements Almost none of the ideas and programming idioms in this book are my invention. My goal has been to present, in a way that allows novice C++ programmers to learn them quickly, what I consider to be the most important strategies and tactics I have learned from others in the eight years I have been using C++. Some of these lessons were learned by studying actual development projects as they moved from C to C++; others came from discussions with talented individuals.

Many of the best ideas on templates and library design, including the ideas behind many of the container classes in this book, came from classes in the USL Standard Components that were originally designed by Martin Carroll, Andrew Koenig, and Jonathan Shopiro. I claim exclusive ownership of any errors in my versions. Andrew Koenig was a valuable resource as the local C++ language lawyer. The participants in the "C++ Strategies and Tactics" seminars I presented at several conferences helped inspire this book and refine its ideas. Other important ideas came from Tom Cargill, John Carolan, Jim Coplien, Mark Linton, Gerald Schwarz, and of course Bjarne Stroustrup, who also invented the C++ programming language that made the book possible in the first place.

Brian Kernighan read several drafts of this book, and his excellent feedback has been a lot of help. I would also like to thank David Annatone, Steve Buroff, Tom Cargill, Bill Hopkins, Cay Horstman, Lorraine Juhl, Peter Juhl, Stan Lippman, Dennis Mancl, Scott Meyers, Barbara Moo, Lorraine Weisbrot Murray, Bjarne Stroustrup, Clovis Tondo, Steve Vinoski, and Christopher Van Wyk for their comments on early drafts of this book. Lorraine Weisbrot Murray also contributed the encouragement, understanding, support, and love that helped make the entire effort feasible.

Rob Murray

From the Back Cover

In chess, learning the rules for how the pieces move is simply the first step; to master the game, you must understand the strategies and tactics that guide each move. The same applies to C++. Knowing the right strategies helps you avoid the traps and work more effectively. Luminary Rob Murray helps beginning to intermediate C++ programmers take that next step by sharing his experience and advice.

Practical code examples are used throughout to illuminate useful programming strategies and warn against dangerous practices. To further ensure comprehension, each chapter ends with a list of the key ideas introduced in that chapter, along with questions to stimulate thought and discussion.

You'll begin by learning how to choose the right abstractions for your design, taking care to preserve the distinction between abstraction and implementation. You'll then look at the process of turning an abstraction into one or more C++ classes, with discussions ranging from high-level design strategies to low-level interface and implementation details.

Single and multiple inheritance are explored in depth, beginning with a discussion of where they fit in a design and followed by detailed examples that show how the concepts are used in practice. A separate chapter covers the techniques of building classes from which others can derive, and discusses the benefits - and costs - involved.

Rob Murray offers unprecedented insight into the new templates feature, beginning with the basics and walking you through several real-world examples. The author also describes a variety of specific techniques to make your programs faster, more reusable, and more robust. Exceptions are another new C++ feature; Murray gives advice on when they should - and should not - be used. The book concludes with a look at the process of moving a project from C to C++, exploring the human issues as well as the technical ones.

Download Link 1
Download Link 2

C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)

C++ Template Metaprogramming: Concepts, Tools, and Techniques from Boost and Beyond (C++ In-Depth Series)



Book Description
"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.

From the Back Cover
Abrahams and Gurtovoy have written something close to a classic… marvelous fun to read…

Read the complete book review by Jack J. Woehr, Dr. Dobbs Journal, June 03, 2005


"If you're like me, you're excited by what people do with template metaprogramming (TMP) but are frustrated at the lack of clear guidance and powerful tools. Well, this is the book we've been waiting for. With help from the excellent Boost Metaprogramming Library, David and Aleksey take TMP from the laboratory to the workplace with readable prose and practical examples, showing that "compile-time STL" is as able as its runtime counterpart. Serving as a tutorial as well as a handbook for experts, this is the book on C++ template metaprogramming."
–Chuck Allison, Editor, The C++ Source

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.

A metaprogram is a program that generates or manipulates program code. Ever since generic programming was introduced to C++, programmers have discovered myriad "template tricks" for manipulating programs as they are compiled, effectively eliminating the barrier between program and metaprogram. While excitement among C++ experts about these capabilities has reached the community at large, their practical application remains out of reach for most programmers. This book explains what metaprogramming is and how it is best used. It provides the foundation you'll need to use the template metaprogramming effectively in your own work.

This book is aimed at any programmer who is comfortable with idioms of the Standard Template Library (STL). C++ power-users will gain a new insight into their existing work and a new fluency in the domain of metaprogramming. Intermediate-level programmers who have learned a few advanced template techniques will see where these tricks fit in the big picture and will gain the conceptual foundation to use them with discipline. Programmers who have caught the scent of metaprogramming, but for whom it is still mysterious, will finally gain a clear understanding of how, when, and why it works. All readers will leave with a new tool of unprecedented power at their disposal–the Boost Metaprogramming Library.

The companion CD-ROM contains all Boost C++ libraries, including the Boost Metaprogramming Library and its reference documentation, along with all of the book's sample code and extensive supplementary material.

Download Link 1
Download Link 2

C++ Timesaving Techniques For Dummies

C++ Timesaving Techniques For Dummies

Product Description
* Seasoned C++ programmer Matthew Telles shows developers at any level of experience how to save hours by improving, refactoring, and debugging their code
* Some of the techniques covered include mastering asserts, creating a complete class, hiding a method of a base class, freeing blocks of memory, implementing a simple locking mechanism, creating debugging macros, checking for errors at run-time, finding and fixing memory leaks, and reducing code complexity
* The easy-to-follow, two-column Timesaving Techniques format makes mastering each timesaver a snap
* C++ is one of today's most widely used programming languages, with compilers offered by Microsoft, Borland, and Code Warrior
* This book is the perfect companion to C++ For Dummies, Fifth Edition (0-7645-6852-3)

Download Description
* Seasoned C++ programmer Matthew Telles shows developers at any level of experience how to save hours by improving, refactoring, and debugging their code
* Some of the techniques covered include mastering asserts, creating a complete class, hiding a method of a base class, freeing blocks of memory, implementing a simple locking mechanism, creating debugging macros, checking for errors at run-time, finding and fixing memory leaks, and reducing code complexity
* The easy-to-follow, two-column Timesaving Techniques format makes mastering each timesaver a snap
* C++ is one of today's most widely used programming languages, with compilers offered by Microsoft, Borland, and Code Warrior
* This book is the perfect companion to C++ For Dummies, Fifth Edition (0-7645-6852-3)

Download Link 1
Download Link 2
Download Link 3

Friday, August 1, 2008

C++: The Complete Reference

C++ The Complete Reference

C++: The Complete Reference


Book Description
Author Herb Schildt is the world's best-selling C++ author with more than 2 million books sold. The most complete coverage of the newly updated ANSI C++ Standard--including updated material on the STL, namespace naming methods, an new classes. An easy-to-follow, three-part organization: I) Description of the root of C++; II) Detailed coverage of C++'s OOP components and classes; III) Effective C++ software application development.

Book Info
Provides a lasting resource for the C++ programmer that will help maximize programming efforts by covering the entire C++ language. Paper.

Download Link 1
Download Link 2
Download Link 3

C/C++ Programmer's Reference, Third Edition

C/C++ Programmer

C/C++ Programmer's Reference, Third Edition


Product Description
Like having a brain in your back pocket. Provides clear explanations of all C and C++ programming syntax, keywords, commands, functions, and class libraries. Since no programmer can remember the precise syntax of every C/C++ element, this quick-access guide assists programmers in implementing efficient solutions on demand.

Book Info
A fully updated best-selling classic, gives programmers a quick reference to syntax, keywords, libraries, and more. Softcover. Previous ed. c2000.

Download Link 1
Download Link 2

Core C++: A Software Engineering Approach

Core C++

Core C++: A Software Engineering Approach



Aimed at the Visual C++ newcomer, Core C++: A Software Engineering Approach provides a rich and sometimes densely packed tour of the language, with plenty of advice on the best ways to use this powerful programming language effectively. It's full to the brim with useful advice for creating and using classes effectively, and gaining an expert's understanding of the language.

The writing style and presentation of C++ in this book are outstanding. The explanations of key C++ concepts, from basic language features to class design to advanced C++ whistles and bells, are by turns colloquial, garrulous, and almost always enjoyable and understandable. While it's not uncommon for today's computer book to weigh in at over 1,000 pages, the raw word count here is quite exceptional. You're challenged repeatedly to think for yourself, and the intricacies of C++ are exposed thoroughly, from language features that are indispensable to what to avoid in your code.

You'll get pretty much everything that you need to learn C++ effectively, starting with basic keywords, data types, flow-control statements, and arrays. The guide to understanding object-oriented concepts, like coupling and cohesion, will help you design better classes. Even experienced programmers will appreciate the thorough coverage of memory-management techniques in C++ (including the five kinds of scopes for variables).

An important middle section provides a blueprint for the methods and functions that most C++ code should offer, including such methods as default and copy constructors, destructors, and overloaded assignment operators. (By following this idiom, you'll be able to write reusable C++ classes.) The book also illustrates class design with basic UML notation, excels at presenting the details of how to overload C++ operators to provide easier syntax for custom C++ classes, and provides excellent explanations of the pros and cons of composition and inheritance for getting classes to work together. A look at more advanced C++ features, like templates and exception handling, wraps things up. Along the way, you get a taste of UML notation and a thorough introduction to some of the best practices for writing C++ code effectively.

Core C++ is certainly no quick read, and, if you're in a rush to learn quickly, there are plenty of more concise treatments that are available. But, if you're ambitious and want to master the intricacies of C++ class design with some of its underlying design principles, this is an original and thorough package that offers unique strengths. --Richard Dragan

Topics covered:

# The software crisis
# Software project-management techniques
# Design-quality principles
# Introduction to the C++ language
# A minimum C++ application explained
# C++ data types
# Operators and flow control
# Arrays
# C/C++ structures
# Unions
# Enumerations and bit fields
# Memory-management techniques (including stack and heap allocation, dynamic allocation, avoiding memory leaks)
# File I/O with and without stream classes
# Basic C++ class design
# Parameter passing in C++ (options and best practices)
# Creating custom programmer-defined data types

# Cohesion
# Coupling
# Data encapsulation and information hiding
# Guidelines for C++ class design: constructors (default, conversion, and copy constructors), overloading the assignment operator, destructors
# In-depth guide to overloading C++ operators
# Introduction to UML class diagrams
# Aggregation and inheritance
# C++ class syntax
# Inheritance vs. composition
# Virtual methods and late binding
# Multiple inheritance
# Advanced operator overloading techniques
# C++ templates and exceptions
# Standard C++ type cast operators
# Review of material covered


Book Description
Teaches C++ by applying the best software engineering practices and methodologies to programming in C++. Shows the user how to build code that is more robust, easier to maintain and modify, and more valuable. Softcover. DLC: C++ (Computer programming language).

Download Link 1

Download Link 2