* Faculty       * Staff       * Students & Alumni       * Committees       * Contact       * Institute Directory
* Undergraduate Program       * Graduate Program       * Courses       * Institute Catalog      
* Undergraduate       * Graduate       * Institute Admissions: Undergraduate | Graduate      
* Colloquia       * Seminars       * News       * Events       * Institute Events      
* Overview       * Lab Manual       * Institute Computing      
No Menu Selected

* News


Language Support for Generic Programming, C++200X and Beyond

Jeremy Siek
Department of Computer Science
University of Colorado

Thursday, March 15, 2007

Conventional wisdom in programming language design suggests there is tension between flexibility and safety and between abstraction and performance. A language can be flexible, like Python, or safe, like Java. A language can provide abstractions, such as objects, or it can be high-performance and provide only low-level programming constructs. What are the root causes of these tensions in language design and how can we resolve them?

In this talk I show how the tension between flexibility and safety in C++ templates can be resolved by integrating a rich interface description language, known as ``concepts'', into the C++ type system. I then discuss the tension between abstraction and performance in the context of a new programming language named G. The root cause of performance loss is not abstraction but instead separate compilation. This tension is fundamental but we can offer choices to the programmer, such as providing fast compilation during development using separate compilation, and fast run-time for final production by applying whole-program optimizations. Finally, I return to the issue of flexibility versus safety and describe new research on gradual typing, a technology that allows a programmer to mix statically and dynamically typed code in the same program and in the same programming language.

Biography:Jeremy Siek is a Visiting Assistant Professor in the Department of Computer Science at the University of Colorado at Boulder and a Research Scientist at LogicBlox, Inc. His research interests are in programming languages, type systems, generic programming, and high-performance software libraries. Jeremy is the author of the Boost Graph Library, a member of the ANSI/ISO C++ Standards Committee, and one of the architects of the ``concepts'' extension planned for the next revision of the C++ Standard (C++200X). Jeremy earned a Ph.D. at Indiana University and a B.S. and M.S. at the University of Notre Dame.

Administrative support: Jacky Carley (x8291)