C++ Books

Tuesday, April 15, 2008

Bjarne Stroustrup on the Evolution of Languages

by Howard Dierking

Every once in a while, an evolutionary leap rapidly advances and reshapes the entire field of engineering. Such a leap occurred in software development with the introduction of the C++ programming language. This leap was not inherent in the language itself: object-oriented languages such as Simula67 and Smalltalk existed prior to C++. But because C++ was built on top of the C programming language (and could compile existing C programs), it was able to bring the abstractions of object-oriented thinking into the mainstream.
C++ has inspired a great deal of thought surrounding software design and development, from design patterns to meta-programming. And because of its portability among hardware platforms and its lower-level expressiveness, C++ will assuredly be essential in a world of faster, smaller hardware.
I recently had the pleasure of talking to Bjarne Stroustrup, the creator of C++, about a host of topics, from his thoughts on languages to general industry trends to his own personal reading list. Many of the questions asked were suggested by readers via my blog, so thanks to everyone who contributed questions. And of course, thanks to Bjarne. Continue to the interview ...

Monday, March 31, 2008

An Interview with Bjarne Stroustrup

by James Buchanan

C++ creator Bjarne Stroustrup discusses the evolving C++0x standard, the education of programmers, and the future of programming.

http://www.ddj.com/cpp/207000124

Thursday, March 27, 2008

Dr. Dobb's Excellence in Programming Award

Santa Clara, Calif. - Best-selling author Bjarne Stroustrup, inventor of C++ and author of the Addison-Wesley title The C++ Programming Language, has received the Dr. Dobb's Journal Excellence in Programming Award.

The Dr. Dobb's Journal Excellence in Programming Award is annually bestowed on individuals who, in the spirit of innovation and cooperation, have made significant contributions to the advancement of software development. Stroustrup's award acknowledges significant achievements in object-oriented programming, software architecture and modeling.

"I'm especially pleased to receive this award because it reflects the views of real-world software developers and shows that with persistence and a bit of luck an individual can still make a difference", Stroustrup said. This award has been bestowed on few of the industry elite, including Linus Torvalds, the inventor of the LINUX operating system, Guido van Rossum, the Python programming language creator, and Larry Wall, author of the Perl programming language.

In addition to the The C++ Programming Language, now in its third edition, Stroustrup is the author of The Design and Evolution of C++, The Annotated C++ Reference Manual, and the forthcoming Programming: Principles and Practice Using C++, to be published in August.

Bjarne Stroustrup is the designer and original implementer of C++ and the author of The C++ Programming Language and The Design and Evolution of C++ from Addison-Wesley. His research interests include distributed systems, simulation, design, programming techniques, software development tools and programming languages. Stroustrup is the College of Engineering Chair in Computer Science at Texas A&M University and an AT&T Fellow. He is a member of the National Academy of Engineering, an AT&T Bell Laboratories Fellow, an IEEE Fellow and an ACM Fellow. He is actively involved in the ANSI/ISO standardization of C++.

This article was written by Andrea Bledsoe for Engineering Weekly; with contributions by Tony Okonski

Friday, December 7, 2007

C++ Chronicles

Nostalgic recollections of some early days of C++ :-)

Friday, September 21, 2007

Open Multi-Methods for C++

We've recently got our paper on multi-methods accepted to GPCE'07 and Peter will do a dry run of the presentation on Tuesday, September 25, 2007 at 16:00 in HRBB 302. Please stop by and give us your feedback. Thanks!

Abstract


Multiple dispatch -- the selection of a function to be invoked based on the
dynamic type of two or more arguments -- is a solution to several classical
problems in object-oriented programming. Open multi-methods generalize multiple dispatch towards open-class extensions, which improve separation of concerns and provisions for retroactive design. We present the rationale, design, implementation, and performance of a language feature, called open multi-methods, for C++. Our open multi-methods support both repeated and virtual inheritance. Our call resolution rules generalize both virtual function dispatch and overload resolution semantics. After using all information from argument types, these rules can resolve further ambiguities by using covariant return types. Great care was taken to integrate open multi-methods with existing C++ language features and rules. We describe a model
implementation and compare its performance and space requirements to existing open multi-method extensions and workaround techniques for C++. Compared to these techniques, our approach is simpler to use, catches more user mistakes, and resolves more ambiguities through link-time analysis, runs significantly faster, and requires less memory.

In particular, the runtime cost of calling an open multimethod is constant and
less than the cost of a double dispatch (two virtual function calls). Finally,
we provide a sketch of a design for open multi-methods in the presence of
dynamic loading and linking of libraries.

Technical report on this work can be found here

More information about Peter Pirkelbauer can be found on his webpage.

Wednesday, September 12, 2007

The Future of C++

by Bjarne Stroustrup

In a rare public talk, C++ creator Dr. Bjarne Stroustrup discusses his ideal in programming languages, as well how he sees the next version (and beyond) of C++ developing. He explains the general selection criteria used for adding new features, some of the legacy of C++, and many other interesting topics. Especially interesting is during the Q&A he explains his views of the embrace and extend mentality some implementations, such as VC++, have taken.


Get the Flash Player to see this video using Flash Player.




Source: University of Waterloo

Tuesday, July 31, 2007

C++0x: An overview

by Bjarne Stroustrup

A good programming language is far more than a simple collection of features. My ideal is to provide a set of facilities that smoothly work together to support design and programming styles of a generality beyond my imagination. Here, I briefly outline rules of thumb (guidelines, principles) that are being applied in the design of C++0x. Then, I present the state of the standards process (we are aiming for C++09) and give examples of a few of the proposals such as concepts, generalized initialization, being considered in the ISO C++ standards committee. Since there are far more proposals than could be presented in an hour, I'll take questions.



Source: Google Speaker Series

Wednesday, February 21, 2007

Concepts: Extending C++ Templates For Generic Programming

by Doug Gregor

Concepts are a major addition to C++0x that make templates more robust, more powerful, ... all » and easier to write and use. At their most basic level, concepts provide a type system for templates. Using concepts, the C++ compiler is able to detect errors in the definition and use of templates before they are instantiated. One immediately obvious benefit of this separate type-checking capability is a dramatic improvement in error messages resulting from improper use of templates. Look a little deeper and we find that concepts support an entirely new programming paradigm, Generic Programming, enabling the construction of a new breed of generic libraries that provide better extensibility, composability, and usability than what is possible with today's C++.

This talk will provide an overview of the new features introduced by concepts and how they will benefit C++ programmers. We will see how concepts can be used to express the core components of the C++ Standard (Template) Library, and explore some of the new capabilities that concepts bring to the C++ language.



Source: Google Tech Talks

C++0x Initialization Lists

by Bjarne Stroustrup

Getting initialization right is an important part of programming. Over the years, this ... all » has led to a mess of language facilities and techniques. This talk describes how C++0x (most likely) will address two issues: how to get a uniform syntax and semantics for all initialization and how to allow initialization by general lists. Obviously, people will want the solution to be really simple and completely compatible. As ever, the resolution is to be almost completely compatible and almost simple. This talk will describe sequence constructors, homogeneous and heterogeneous initializer lists, and (as far as time allows) fit generalized constant expressions, prevention of narrowing conversions, and variadic templates into this picture.



Source: Google Tech Talks

Wednesday, September 13, 2006

Concur and C++ Futures

by Herb Sutter

Discussions of concurrency & C++ futures September 2006 meeting of the Northwest C++ Users Group



Source: Northwest C++ Users Group