Thursday, July 31, 2008

C++/CLI in Action (Manning)

C++/CLI in Action (Manning)


Product Description
C++ is the language of choice for thousands of applications and millions of lines of code. With C++/CLI, developers can integrate existing C++ code into the .NET platform without rewriting their applications. This book explores the C++/CLI syntax, teaches how to mix native C++ and managed .NET code, and shows how to integrate C++ with Windows Forms, WPF (Avalon), and WCF (Indigo).

Imagine taking a C++-based program you've been using for a decade and giving it a snazzy new interface using Windows Presentation Foundation. How about making your old business applications talk to your new ones using Windows Communication Foundation. C++/CLI makes this--and more--possible. C++/CLI in Action shows you how to bridge the gap between your existing C++ code and the .NET platform. C++/CLI in Action will help you if:
# You're hesitant to migrate to .NET because it means rewriting code in C# or VB.
# You have significant C++ expertise that you want to leverage in the .NET.
# You only need to use pieces of the .NET framework, such as Windows Forms or web services.

There's no fluff here. Designed for readers who already know C++, this book starts by teaching the unique aspects of the C++/CLI language. After a quick tour through the basics, readers work through examples of integrating standard C++ into the .NET-based applications and building programs that mix C++ and .NET code for maximum performance and efficiency.

About the Author
Nishant Sivakumar has been programming since 19909, and has extensive experience with Visual C++, MFC, C#, and the .NET Framework. Nish has been a Microsoft Visual C++ MVP since 2002, and maintains an MVP tips and tricks website (www.voidnish.com) along with a Microsoft Technology blog (blog.voidnish.com). He works for The Code Project and is in charge of the MFC libraries Ultimate Toolbox, Ultimate Grid and Ultimate TCP/IP products sold through The Code Project Storefront. Nish has been working with Microsoft Technologies since the DOS days and is currently exploring .NET 3.0 technologies such as WPF and WCF. Nish loves reading Science Fiction, P G Wodehouse and Agatha Christie. In addition to C++/CLI in Action, Nish has authored Extending MFC applications with the .NET Framework as well as Summer Love and Some More Cricket, a romantic comedy. Presently, he lives in Toronto with his loving wife Smitha.

Download Link 1
Download Link 2

Data Structures and Problem Solving Using C++


Data Structures and Problem Solving Using C++

Book Description
Data Structures and Problem Solving Using C++ provides an introduction to data structures and algorithms from the viewpoint of abstract thinking and problem solving, as well as the use of C++. It is a complete revision of Weiss' successful CS2 book Algorithms, Data Structures, and Problem Solving with C++.

Throughout this edition, Mark Allen Weiss has included the latest features of the C++ programming language-making prevalent use of the Standard Template Library (STL) wherever appropriate. He has also included a new chapter covering Patterns, as well as new material on templates, vectors and push_back.

C++ allows the programmer to write the interface and implementation separately, to place them in separate files and compile separately, and to hide the implementation details. This book goes a step further: The interface and implementation are discussed in separate parts of the book. Part I (Objects and C++), Part II (Algorithms and Building Blocks), and Part III (Applications) lay the groundwork by discussing basic concepts and tools and providing some practical examples, but implementation of data structures are not shown until Part IV (Implementations). This separation of interface and implementation promotes abstract thinking. Class interfaces are written and used before the implementation is known, forcing the reader to think about the functionality and potential efficiency of the various data structures (e.g. hash tables are written well before the hash table is implemented). --This text refers to the Hardcover edition.

Book Info
Introduces data structures and algorithms from the viewpoint of abstract thinking and problem solving and illustrates the use of the C++ programming language. DLC: C++ (Computer program language). --This text refers to the Hardcover edition.

Download Link 1
Download Link 2

Designing Components With the C++ Stl: A New Approach to Programming


Designing Components With the C++ Stl: A New Approach to Programming

'This book is the most accurate and up-to-date source of information on the STL currently available. ... It has an approach and appeal of its own: it explains techniques for building data structures and algorithms on top of the STL, and in this way appreciates the STL for what it is - a framework.' Angelika Langer, Independent Consultant and C Report Columnist

"A superbly authored treatment of the STL......an excellent book which belongs in any serious C developer's library." Jim Armstrong, President 2112 F/X, Texas.

The C Standard Template Library (STL) represents a breakthrough in C programming techniques. With it, software developers can achieve vast improvements in the reliability of their software, and increase their own productivity.

Designing Components with the C STL has three aims:


* to introduce the reader to the STL
* to show how this powerful resource can be exploited
* to extend its use to the construction of new components.



This revised edition is fully compliant with the new ISO/IEC C Standard with an associated web site containing numerous, fully up-to-date examples for downloading.

The author shows how to make practical use of the STL through a wealth of examples and by drawing on his extensive experience and knowledge gained working with the C Standardization Committee. Unique insight into the internals of the STL takes the reader beyond simply using it, to show how the components supplied in the STL can be used to design more complex data structures and algorithms, and powerful abstract data types. Throughout, the author maintains an elegant and sophisticated coding style, adhering faithfully to the current ISO/ANSI standards, helping to ensure that your software will be even more portable, maintainable and reusable than ever.

Download Link 1
Download Link 2

Effective C++: 55 Specific Ways to Improve Your Programs and Designs


Effective C++: 55 Specific Ways to Improve Your Programs and Designs

This exceptionally useful text offers Scott Myers's expertise in C++ class design and programming tips. The second edition incorporates recent advances to C++ included in the ISO standard, including namespaces and built-in template classes, and is required reading for any working C developer.

The book opens with some hints for porting code from C to C++ and then moves on to the proper use of the new and delete operators in C++ for more robust memory management. The text then proceeds to class design, including the proper use of constructors, destructors, and overloaded operator functions for assignment within classes. (These guidelines ensure that you will create custom C++ classes that are fully functional data types, which can be copied and assigned just like built-in C++ classes.)

The author also provides a handful of suggestions for general class design, including strategies for using different types of inheritance and encapsulation. Never doctrinaire and always intelligent, these guidelines can make your C++ classes more robust and easier to maintain. --Richard Dragan

Download Link 1

Download Link 2

Efficient C++: Performance Programming Techniques


Efficient C++: Performance Programming Techniques

Book Info
Demonstrates the potential of C++ to produce highly efficient programs. Reveals practical, everyday object-oriented design principles and C++ coding techniques that can yield large performance improvements. Focuses on combining C++'s power and flexibility with high performance and scalability. Softcover. DLC: C++ (Computer program language).

From the Inside Flap

If you conducted an informal survey of software developers on the issue of C++ performance, you would undoubtedly find that the vast majority of them view performance issues as the Achilles' heel of an otherwise fine language. We have heard it repeatedly ever since C++ burst on the corporate scene: C++ is a poor choice for implementing performance-critical applications. In the mind of developers, this particular application domain was ruled by plain C and, occasionally, even assembly language.

As part of that software community we had the opportunity to watch that myth develop and gather steam. Years ago, we participated in the wave that embraced C++ with enthusiasm. All around us, many development projects plunged in headfirst. Some time later, software solutions implemented in C++ began rolling out. Their performance was typically less than optimal, to put it gently. Enthusiasm over C++ in performance-critical domains has cooled. We were in the business of supplying networking software whose execution speed was not up for negotiation--speed was top priority. Since networking software is pretty low on the software food-chain, its performance is crucial. Large numbers of applications were going to sit on top of it and depend on it. Poor performance in the low levels ripples all the way up to higher level applications.

Our experience was not unique. All around, early adopters of C++ had difficulties with the resulting performance of their C++ code. Instead of attributing the difficulties to the steep learning curve of the new object-oriented software development paradigm, we blamed it on C++, the dominant language for the expression of the paradigm. Even though C++ compilers were still essentially in their infancy, the language was branded as inherently slow. This belief spread quickly and is now widely accepted as fact. Software organizations that passed on C++ frequently pointed to performance as their key concern. That concern was rooted in the perception that C++ cannot match the performance delivered by its C counterpart. Consequently, C++ has had little success penetrating software domains that view performance as top priority: operating system kernels, device drivers, networking systems (routers, gateways, protocol stacks), and more.

We have spent years dissecting large systems of C and C++ code trying to squeeze every ounce of performance out of them. It is through our experience of slugging it out in the trenches that we have come to appreciate the potential of C++ to produce highly efficient programs. We've seen it done in practice. This book is our attempt to share that experience and document the many lessons we have learned in our own pursuit of C++ efficiency. Writing efficient C++ is not trivial, nor is it rocket science. It takes the understanding of some performance principles, as well as information on C++ performance traps and pitfalls.

The 80-20 rule is an important principle in the world of software construction. We adopt it in the writing of this book as well: 20% of all performance bugs will show up 80% of the time. We therefore chose to concentrate our efforts where it counts the most. We are interested in those performance issues that arise frequently in industrial code and have significant impact. This book is not an exhaustive discussion of the set of all possible performance bugs and their solutions; hence, we will not cover what we consider esoteric and rare performance pitfalls.

Our point of view is undoubtedly biased by our practical experience as programmers of server-side, performance-critical communications software. This bias impacts the book in several ways:

The profile of performance issues that we encounter in practice may be slightly different in nature than those found in scientific computing, database applications, and other domains. That's not a problem. Generic performance principles transcend distinct domains, and apply equally well in domains other than networking software. At times, we invented contrived examples to drive a point home, although we tried to minimize this. We have made enough coding mistakes in the past to have a sizable collection of samples taken from real production-level code that we have worked on. Our expertise was earned the hard way--by learning from our own mistakes as well as those of our colleagues. As much as possible, we illustrated our points with real code samples. We do not delve into the asymptotic complexity of algorithms, data structures, and the latest and greatest techniques for accessing, sorting, searching, and compressing data. These are important topics, but they have been extensively covered elsewhere Knu73, BR95, KP74. Instead, we focus on simple, practical, everyday coding and design principles that yield large performance improvements. We point out common design and coding practices that lead to poor performance, whether it be through the unwitting use of language features that carry high hidden costs or through violating any number of subtle (and not so subtle) performance principles.

So how do we separate myth from reality? Is C++ performance truly inferior to that of C? It is our contention that the common perception of inferior C++ performance is invalid. We concede that in general, when comparing a C program to a C++ version of what appears to be the same thing, the C program is generally faster. However, we also claim that the apparent similarity of the two programs typically is based on their data handling functionality, not their correctness, robustness, or ease of maintenance. Our contention is that when C programs are brought up to the level of C++ programs in these regards, the speed differences disappear, or the C++ versions are faster.

Thus C++ is inherently neither slower nor faster. It could be either, depending on how it is used and what is required from it. It's the way it is used that matters: If used properly, C++ can yield software systems exhibiting not just acceptable performance, but yield superior software performance.

We would like to thank the many people who contributed to this work. The toughest part was getting started and it was our editor, Marina Lang, who was instrumental in getting this project off the ground. Julia Sime made a significant contribution to the early draft and Yomtov Meged contributed many valuable suggestions as well. He also was the one who pointed out to us the subtle difference between our opinions and the absolute truth. Although those two notions may coincide at times, they are still distinct.

Many thanks to the reviewers hired by Addison-Wesley; their feedback was extremely valuable.

Thanks also to our friends and colleagues who reviewed portions of the manuscript. They are, in no particular order, Cyndy Ross, Art Francis, Scott Snyder, Tricia York, Michael Fraenkel, Carol Jones, Heather Kreger, Kathryn Britton, Ruth Willenborg, David Wisler, Bala Rajaraman, Don "Spike" Washburn, and Nils Brubaker.

Last but not least, we would like to thank our wives, Cynthia Powers Bulka and Ruth Washington Mayhew.

Download Link 1
Download Link 2
Download Link 3

Essential C++ (C++ In-Depth Series)


Essential C++ (C++ In-Depth Series)

"Readers can pick up this book and become familiar with C++ in a short time. Stan has taken a very broad and complicated topic and reduced it to the essentials that budding C++ programmers need to know to write real programs. His case study is effective and provides a familiar thread throughout the book." -Steve Vinoski, IONA For the practicing programmer with little time to spare, Essential C++ offers a fast-track to learning and working with C++ on the job. This book is specifically designed to bring you up to speed in a short amount of time. It focuses on the elements of C++ programming that you are most likely to encounter and examines features and techniques that help solve real-world programming challenges.

Essential C++ presents the basics of C++ in the context of procedural, generic, objectbased, and object-oriented programming. It is organized around a series of increasingly complex programming problems, and language features are introduced as solutions to these problems. In this way you will not only learn about the functions and structure of C++, but will understand their purpose and rationale. You will find in-depth coverage of key topics such as:

• Generic programming and the Standard Template Library (STL)

• Object-based programming and class design

• Object-oriented programming and the design of class hierarchies

• Function and class template design and use

• Exception handling and Run-Time Type Identification

In addition, an invaluable appendix provides complete solutions to, and and detailed explanations of, the programming exercises found at the end of each chapter. A second appendix offers a quick reference handbook for the generic algorithms, providing an example of how each is used.

This concise tutorial will give you a working knowledge of C++ and a firm foundation on which to further your professional expertise.

Download Link 1
Download Link 2

Wednesday, July 30, 2008

Financial Instrument Pricing Using C (The Wiley Finance Series)


Financial Instrument Pricing Using C (The Wiley Finance Series)

One of the best languages for the development of financial engineering and instrument pricing applications is C . This book has several features that allow developers to write robust, flexible and extensible software systems. The book is an ANSI/ISO standard, fully object-oriented and interfaces with many third-party applications. It has support for templates and generic programming, massive reusability using templates (‘write once) and support for legacy C applications.

In this book, author Daniel J. Duffy brings C to the next level by applying it to the design and implementation of classes, libraries and applications for option and derivative pricing models. He employs modern software engineering techniques to produce industrial-strength applications:


* Using the Standard Template Library (STL) in finance
* Creating your own template classes and functions
* Reusable data structures for vectors, matrices and tensors
* Classes for numerical analysis (numerical linear algebra …)
* Solving the Black Scholes equations, exact and approximate solutions
* Implementing the Finite Difference Method in C
* Integration with the ‘Gang of Four Design Patterns
* Interfacing with Excel (output and Add-Ins)
* Financial engineering and XML
* Cash flow and yield curves

Download Link 1
Download Link 2