vollmann engineering gmbh

 
   engineering  training  presentations  publications  blog   
home
sitemap
c++ standardization  

 
 
 

design
c++
embedded c++
embedded linux
 
 
 
                  
vollmann engineering
publications
presentations
blog
person

Keywords of the presentation about the current state of C++ standardization on April 26 and 27 2004 in Zurich and Berne.

Abbreviations

ISO/IEC JTC1 SC22 WG21
C++ standardization committee
ISO
International Standardization Organization
NB
National Body
INCITS
InterNational Committee for Information Technology Standards
ANSI
American National Standards Institute
SNV
Schweizerische Normanvereinigung
IEC
International Electrotechnical Commission
JTC1
Joint Technical Committee of ISO and IEC
TK149
Technisches Komitee der SNV zu JTC1
SC
Sub-Committee
SC22
SC for programming languages, their environments and system software interfaces
WG
Working Group
WG21
WG for C++
CWG
Core Working Group
LWG
Library Working Group
EWG
Evolution Working Group
IS
International Standard
TC
Technical Corrigendum
TR
Technical Report
CD
Committee Draft
DR
Defect Report
ECMA
European Computer Manufacturer Association
Fast-Track
ISO procedure for other standardization organizations to get a standard ISO approved within six months

History of C++ Standardization

1982:
C with Classes: "Classes: An Abstract Data Type Facility for the C Language", ACM SIGPLAN Notices Vol 17, no1
1986:
"The C++ Programming Language"
1989:
"The Annotated C++ Reference Manual (ARM)"
1991:
First meeting of WG21
1994:
CD1
1996:
"Embedded C++" (Current Common C++ Subset)
1996:
CD2
1997:
FDIS
1998:
C++ Standard (C++98)
2003:
TC1 (C++03)
2004:
Performance TR
2005(?):
Library TR 1
2005/6(?):
Decimal TR
2007/8(?):
Library TR 2
200x:
Next C++ Standard (C++0x)

Technical Corrigendum (TC1)

only very minor changes
mainly corrections and clarifications
probably most significant change (DR45) is not included: nested type is member
 class X
 {
   int x;
   class Y
   {
     void f() { x = 1; }  // ok
   }
 public:
   void g();
 };

Performance TR

  • Overhead of languages features
    • namespaces
    • inheritance
    • casts (RTTI)
    • exception handling
    • templates
  • Programmer Directed Optimizations
  • Efficient Libraries
    • iostreams
    • optimizing

C++ for embedded and real-time environments

  • "Embedded C++"
    • bad excuse for vendors
    • missing important safety-critical features
      • namespaces
      • exceptions
      • strong typing through templates
      • RTTI
      • specific casts
    • missing important performance features
      • templates
      • exceptions
  • ROMability
  • Hard Real-Time Considerations
  • <hardware>

Library TR 1

  • std::tr1
  • Utilities
    • shared_ptr
    • regular expressions
    • random numbers
  • Meta-Template-Programming
    • reference_wrapper
    • lambda binders and adaptors
    • type_traits
    • tuples
  • Containers
    • arrays
    • hash containers

C++0x Directions

  • Keep C++ alive, but keep traditional objectives
    • compatible with C++98
    • zero-overhead principle
    • mainly library based
    • C compatibility
  • Language of choice for systems programming and library building
    • improve support for generic programming
    • improve support for low-level embedded programming
    • decltype(typeof)
  • Make C++ easier to teach and learn
    • allow vector<list<int>>
    • itoa
    • garbage collection
  • Language extensions
    • reflection
    • auto
  • Library extensions
    • TR1
    • file system
    • threads
    • RPC

C++/CLI

  • ECMA/TC39-TG5
  • CLI == OS API for MS Windows Longhorn (WinFX)
    • Mono
    • DotGNU
  • C++ Binding
    • pure extensions wherever possible
      • contextual keywords
    • making C++ a first class language for CLI
      • no library-only binding
      • xyz class X;
        • ref
        • value
        • interface
        • enum
      • properties
      • delegates (managed pointers)
      • events
    • GC
      • destructors + finalizers
    • Templates + generics
      • namespace stdcli

C++/CLI Timeline

Aggressive ECMA timeline:
  • Oct 1, 2003: Ecma TC39 plenary. Kicked off TG5
  • Nov 21, 2003: Submitted base document to Ecma
  • Dec 2003 - Sep 2004: TG5 meetings (7)
  • Dec 2004: Vote on whether to adopt as Ecma standard
  • Q1 2005: If successful, submit for ISO fast-track process
  • Q1 2006: If ready, vote on whether to adopt ISO standard

Choosing a Language for .NET

Q: Which .NET language should you use?
Microsoft's answer, in our Whidbey release:
  • C++ is the recommended path to .NET and Longhorn.
  • If you have an existing C++ code base:
    • Keep using C++.
  • If you want to make frequent use of native code/libs:
    • Use C++. It's far simpler (seamless) and faster.
  • If you want to write brand-new pure-.NET apps that rarely or never interop with native code:
    • Use whatever language you're already comfortable with, and pick based on language features. The .NET features and Frameworks library are available equally through all languages.

Links

Performance TR
Library TR
Boost
C++ proposal papers
C++/CLI binding
Free Microsoft compiler
 
vollmann engineering gmbh
  home sitemap engineering consulting coaching training presentations publications blog contact
copyright © 2003-2015 vollmann engineering gmbh