C++ Books

Tuesday, May 14, 2013

Dr. Stroustrup's Fourth Edition just released...

...and sold out! "I got my copy (the very first copy!) on Friday [May 10, 2013]. At 9am Monday, it became available on the publisher's site, InformIT, and at 10am it had sold out. Now, they have re-stocked, but this is all very scary for an author. I have worked hard on this for about four years (not counting the 13 years it took getting the C++11 standard out)," said Dr. Bjarne Stroustrup, designer and originator of C++.

What makes the fourth edition of "The C++ Programming Language" distinctive and appreciated is its inclusion of the new C++11 standard. C++11 "allows programmers to express ideas more clearly, simply, and directly, and to write faster, more efficient code," writes Dr. Stroustrup.

The C++ Programming Language, Fourth Edition has been extensively rewritten to introduce the C++11 language, the C++11 standard library, and the programming techniques they support. This includes "support for concurrency; regular expressions, resource management pointers, random numbers, and improved containers; general and uniform initialization, simplified for statements, move semantics, and Unicode support; Lambdas, general constant expressions, control over class defaults, variadic templates, template aliases, and user-defined literals; and compatibility issues."

Dr. Bjarne Stroustrup is a University Distinguished Professor and the holder of the College of Engineering Chair in Computer Science at Texas A&M University. The recipient of numerous honors, Dr. Stroustrup is a member of the National Academy of Engineering, an IEEE Fellow, and an ACM Fellow. His research interests include distributed systems, simulation, design, programming techniques, software development tools, and programming languages. He remains actively involved in the ANSI/ISO standardization of C++. Dr. Stroustrup holds an advanced degree from the University of Aarhus in his native Denmark and a Ph.D. in Computer Science from Cambridge University, England.

Written by Kathy Flores

Tuesday, November 6, 2012

Open and Efficient Type Switch for C++

by Yuriy Solodkyy, Gabriel Dos Reis, and Bjarne Stroustrup

Selecting operations based on the run-time type of an object is key to many object-oriented and functional programming techniques. We present a technique for implementing open and efficient type switching on hierarchical extensible data types. The technique is general and copes well with C++ multiple inheritance.

To simplify experimentation and gain realistic performance using production-quality compilers and tool chains, we implement a type switch construct as an ISO C++11 library, called Mach7. This library-only implementation provides concise notation and outperforms the visitor design pattern, commonly used for case analysis on types in object-oriented programming. For closed sets of types, its performance roughly equals equivalent code in functional languages, such as OCaml and Haskell. The type-switching code is easier to use and is more expressive than hand-coded visitors are. The library is non-intrusive and circumvents most of the extensibility restrictions typical of the visitor design pattern. It was motivated by applications involving large, typed, abstract syntax trees.

See also: OOPSLA'12 paper, slides, notes, extras, Mach7 Library

Where do you go to find out about C++?

by Kathy Flores

Texas A&M University's Department of Computer Science and Engineering is one of the founding members of the Standard C++ Foundation. Other founding members of the Foundation are Microsoft, Google, Intel, IBM, HP, ARM, Pearson, Bloomberg, OpenMP, BD Software... The Foundation is a not-for-profit organization with the mission to convey up-to-date information about C++ and to make available both standard and community libraries to developers of modern C++. It does this primarily through its isocpp.org website.

Among the initial contents, you can find a sample from Texas A&M's own Bjarne Stroustrup's forthcoming book: The C++ Programming Language (4th Edition).

The directors and officers of the Foundation are Chandler Carruth (Google) [Treasurer], Beman Dawes (Boost C++ Libraries), Stefanus Du Toit (Intel) [Secretary], Bjarne Stroustrup (Texas A&M University), Herb Sutter (Microsoft) [Chairman, President], and Michael Wong (IBM) [Vice President].

Wednesday, September 26, 2012

HotDrink: A Library for Web User Interfaces

by John Freeman, Jaakko Järvi, and Gabriel Foust

HotDrink is a JavaScript library for constructing forms, dialogs, and other common user interfaces for Web applications. With HotDrink, instead of writing event handlers, developers declare a "view-model" in JavaScript and a set of "bindings" between the view-model and the HTML elements comprising the view. These specifications tend to be small, but they are enough for HotDrink to provide a fully operational GUI with multi-way dataflows, enabling/disabling of values, activation/deactivation of commands, and data validation. HotDrink implements these rich behaviors, expected of high-quality user interfaces, as generic reusable algorithms. This paper/tool demonstration introduces developers to the HotDrink library by stepping through the construction of an example web application GUI.

The library is a concrete realization of our prior work on the "property models" approach to declarative GUI programming. To encourage adoption among developers, we have packaged the technology following established web programming conventions.

See also: GPCE'12 paper, property models, demo, project

Sunday, April 22, 2012


Workshop on Quality Software: A Festschrift for Bjarne Stroustrup

Texas A&M University, College Station, TX
April 27-28, 2012

The Workshop on Quality Software: A Festschrift for Bjarne Stroustrup will be held to honor and celebrate the career of Bjarne Stroustrup. The workshop will be held at Texas A&M University in College Station, TX. The program includes an opening reception on the evening of Thursday, April 26, technical presentations on April 27-28, and a banquet with reminiscences about Bjarne on the evening of Friday, April 27.

Monday, May 23, 2011

Tech Icons: Bjarne Stroustrup

Meet Bjarne Stroustrup, inventor of C++, and Hero of the Digital Revolution is the title of a March 2011 video released by Tech Icons, an AT&T Tech Channel show. Tech Icons focuses on the Heroes of the Digital Revolution in a series of fascinating biographies. The focal point of this video is Dr. Stroustrup, his creation of C++ and it's worldwide and interplanetary applications.

This audiovisual program highlights Dr. Stroustrup's journey from AT&T Bell Labs to Texas A&M University, emphasizing the history of C++ design and it's revolutionary affect on today's technology. C++0x* is also referenced as Dr. Stroustrup continues to improve C++ for future technologies. He says in the video, "C++...is my vehicle to get to interesting places and see interesting people." We are privileged that he has chosen Texas A&M as an interesting place on his incredible journey.

Dr. Bjarne Stroustrup is the Distinguished Professor and College of Engineering Endowed Chair in Computer Science in Texas A&M Engineering's Department of Computer Science and Engineering.

Written by Kathy Flores

Wednesday, March 30, 2011

An Automatic Parallelization Framework for Algebraic Computation Systems

A paper "An Automatic Parallelization Framework for Algebraic Computation Systems" by Yue Li and Gabriel Dos Reis was accepted by ISSAC 2011

This paper proposes an automatic parallelization framework for an existing computer algebra system. The framework performs a semantics-based static analysis to extract reductions in library components. Reductions using associative binary operators are automatically transformed to their parallel versions. Our implementation is evaluated using algebraic library functions and a self-implemented application. Experimental results show that up to 5 times speed-up for the application is obtained. It is feasible to adapt the core of this framework to other algebraic computation systems and programming languages. The adaptation requires a type system which is able to provide semantics algebraic information from users.

Tuesday, November 23, 2010

Extending Type Systems in a Library

Type-safe XML processing in C++
by Yuriy Solodkyy and Jaakko Järvi


Type systems built directly into the compiler or interpreter of a programming language cannot be easily extended to keep track of run-time invariants of new abstractions. Yet, programming with domain-specific abstractions could benefit from additional static checking. This paper presents library techniques for extending the type system of C++ to support domain-specific abstractions. The main contribution is a programmable “subtype” relation. As a demonstration of the techniques, we implement a type system for defining type qualifiers in C++, as well as a type system for the XML processing language, capable of, e.g., statically guaranteeing that a program only produces valid XML documents according to a given XML schema.

Research highlights

  • Metaprogramming capabilities of C++ enable domain-specific type system extensions.
  • A template library for building new type system extensions.
  • Type system extensions for type qualifiers.
  • Type system extensions for regular expression types for typing XML.

Keywords: Type systems; XML; Type qualifiers; C++; Template metaprogramming; Active libraries

Wednesday, October 13, 2010

25th Anniversary of C++

This Thursday will mark the 25th anniversary of the commercial release of the programming language C++, which was designed and implemented by our very own Distinguished Professor and College of Engineering Chair in Computer Science Dr. Bjarne Stroustrup. C++ is one of the most popular programming languages in the world. The first commercial release of the language and the publication of the first edition of the book entitled "The C++ Programming Language" happened on October 14, 1985.

Thursday, September 23, 2010

Literature Search for Computer Science

Interesting talk by Todd Veldhuizen that was presented by Dr. Jaakko Jarvi during our PTTL Reading Group gathering last Friday.

Literature Search for Computer Science

by Todd Veldhuizen
Why read the literature?
  • Because sometimes "a year of hard work can save a week of reading".
  • Increase the likelihood that someone will care about your research:
    • Not duplicate an already known result.
    • Identify communities of people who will appreciate what you are doing.
  • Be able to give a convincing treatment of your research problem:
    • Using standard terminology and notations;
    • Comparing your contribution to related work;
    • Avoiding obvious ‘newbie ’ mistakes
    • Not getting crushed by some crusty professor who claims to have published your result twenty years ago.