design
c++
embedded c++
embedded linux
|
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
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
- 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
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
- Library extensions
- TR1
- file system
- threads
- RPC
C++/CLI
- ECMA/TC39-TG5
- CLI == OS API for MS Windows Longhorn (WinFX)
- C++ Binding
- pure extensions wherever possible
- making C++ a first class language for CLI
- no library-only binding
- xyz class X;
- properties
- delegates (managed pointers)
- events
- GC
- Templates + generics
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:
- 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
|
|