C++ Books

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

Bjarnefest

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


Abstract:
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

Abstract

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
Abstract
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.

Friday, April 30, 2010

Dr. Stroustrup named Distinguished Professor

by Tony Okonski

Dr. Bjarne Stroustrup has earned promotion to the academic rank of Distinguished Professor in recognition of his contributions to computer science and software development at Texas A&M University. The promotion will take effect on September 1, 2010.

Dr. Stroustrup's 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.

He is the author of three editions of the definitive book on C++, The C++ Programming Language, The Design and Evolution of C++ (1994), The Annotated C++ Reference Manual (1989), and a textbook for freshmen and beginning programmers, Programming Principles and Practice Using C++ (2009). These books have been translated in numerous languages.

C++ is one of the most widely used programming languages. It is used for everyday applications such as internet browsers and cell phones as well as scientific applications, such as NASA's Mars Rovers and the human genome project. Its key strength is in infrastructure applications, such as wind turbine control, micro-electronics industrial tools, and Google.

Stroustrup is a member of the National Academy of Engineering, an IEEE Fellow, an AT&T Fellow, and an ACM Fellow. He is actively involved in the ANSI/ISO standardization of C++.

In 1993 he received the ACM Grace Murray Hopper award "for his early work laying the foundations for the C++ programming language. Based on those foundations and Dr. Stroustrup's continuing efforts, C++ has become one of the most influential programming languages in the history of computing." In 2008, Stroustrup received the Dr. Dobb's Excellence in Programming award for "advancing the craft of computer programming."

Stroustrup is also a recipient of the 2009 Association of Former Students at Texas A&M University Distinguished Achievement Award in the Category of Research at both the College of Engineering and University levels. His elevation to Distinguished Professor is a very noteworthy achievement as it signifies the excellence and quality of Dr. Stroustrup's teaching and research in programming languages.