[X] Der C++-Standardisierungs-Prozess



  • Der C++-Standardisierungs-Prozess

    Für viele ist C++ eine unbekannte Sprache, was die Organisation angeht. In diesem Artikel soll etwas Licht ins Dunkel gebracht werden.

    1 Weltweite Normen

    C++ ist eine der wenigen Programmiersprachen die in einem internationalen Standard (also einer Norm) festgelegt sind. Was heißt das genau? Es gibt von der ISO (International Standard Organisation) ein "Papier" in dem genau drin steht, wie die Sprache C++ auszusehen hat. Dabei wird jedes Detail, wie Syntax, Eigenschaften und Verhalten, beschrieben. Unter anderem auch undefiniertes Verhalten. Auch die zu C++ gehörende Bibliothek (C++ Standard Library) ist ausführlich beschrieben. Dies ergibt einen offiziellen Standard an den sich jeder Hersteller eines C++ Compilers und dessen Bibliothek halten sollte. Man kann das mit der DIN (Deutsches Institut für Normung) für z.B. Papier vergleichen. Jeder von uns hat schon mal standardisiertes Papier gekauft, z.B. DIN A4 Papier. Die DIN schreibt die Abmessungen (Breite mal Länge) für Papier bis auf den Millimeter genau vor. So kann man beim Papierkauf nicht sehr viel falsch machen. Und auch in 100 Jahren werden wir wahrscheinlich DIN A4 Schreibblöcke kaufen können.

    Die DIN ist eine nationale Organisation für deutsche Normen, entsprechend ist z.B. die ANSI (American National Standards Institute) die nationale Organisation für die USA. Für weltweit gültige Normen gibt es jedoch die ISO, welche aus den nationalen Normungs-Organisationen besteht. Genau hier wurde 1998 die C++ Sprache als Standard verabschiedet und die nationalen Organisationen haben den ISO-C++ Standard bei sich übernommen. C++ finden wir also nicht nur im ANSI sondern auch im DIN. Wir können somit auch bedenkenlos DIN-C++ sagen.

    2 Das Komitee

    Damit C++ überhaupt ein ISO-Standard werden konnte, mussten diverse Bedingungen erfüllt werden, die nicht nur für C++ gültig sind. Die ISO schreibt unter anderem vor, dass am Standardisierungsprozess nicht nur eine einzige rechtliche Person und auch nicht mehrere nur aus einem Land mitwirken dürfen. D.h. es müssen mehrere Personen aus mehreren Ländern sich auf einen Standard einigen. Denn immerhin handelt es sich ja um einen internationalen Standard. Vorzugsweise sind diese Personen von Firmen entsendet um am Prozess Einfluss zu haben. (denn die Akzeptanz für den Standard muss später bei den Firmen vorhanden sein) Z.B. waren und sind immer noch am Standardisierungsprozess für C++ Firmenvertreter von Microsoft, IBM, Intel, HP, Dinkumware u.a. beteiligt. Teilweise sind auch Mitglieder z.B. von der DIN as Berlin mit dabei. Alle Personen bilden das C++ Komitee um über den C++ Standard zu entscheiden.

    Doch wie arbeitet das C++ Komitee? Da die Mitglieder des Komitees aus aller Welt kommen, ist deren Handlung nicht ganz so flexibel, wie z.B. die einer lokalen Gruppe. Der wohl größte Teil des Komitees, wenn nicht sogar alle, sind zwar Angestellte namhafter Firmen, doch arbeiten diese letztendlich ehrenamtlich im C++ Komitee. D.h. die Arbeit über das Jahr und die Jahre geht meistens auf das Freizeitkonto. Die Kommunikation läuft dabei über eine geschlossene Mailingliste ab, in der sich die Mitglieder auf dem aktuellen Stand halten und diskutieren. Damit jedoch die Arbeit nicht im Sande verläuft, finden im April und Oktober eines jeden Jahres persönliche Treffen statt. Der Ort ist dabei immer in einem anderen Land, z.B. fand das Treffen im April 2006 in Berlin statt. Im kommenden Oktober 2006 findet es in Oregon, USA, statt. Die Zahl der Teilnehmer bewegt sich dabei in einer Größenordnung von ca. 50 Personen, weshalb diese Treffen meistens in Hotels mit entsprechenden Räumlichkeiten stattfinden. Da die Arbeit, wie bereits gesagt, ehrenamtlich ist, müssen Treffen dieser Art von jemandem gesponsert werden. In Berlin ist für die anfallenden Kosten die DIN e.V. aufgekommen. In Oregon werden Intel und die ANSI die Kosten übernehmen. Für die Hotelzimmer müssen selbstverständlich die jeweiligen Personen selbst aufkommen.

    3 Proposals

    Was passiert nun auf diesen persönlichen Treffen? Das dürfte wohl das interessanteste sein. Solch ein Treffen dauert meisten ca. eine Arbeitswoche in der sowohl der aktuelle Stand verkündet wird, als auch sich Arbeitsgruppen zurückziehen und neue Vorschläge (Proposals) ausarbeiten oder eher besprechen. Mit Vorschlägen sind tatsächlich neue Spracheigenschaften, Toolspezifikationen oder Bibliothekserweiterungen gemeint. Doch wo kommen diese her? Hier kommt auch der Leser dieses Artikels ins Spiel. Jeder interessierte Mensch, der eine Idee für den C++ Standard hat, darf beim C++ Komitee einen Vorschlag einreichen. Das Komitee bittet sogar darum, das sich die C++ Community mit Vorschlägen beteiligt. 2005 wurden vor allem Vorschlagswünsche offiziell vom Komitee geäußert, was bisher eigentlich nicht vorkam.

    Wer einen Vorschlag einreicht, muss diesen auf einem Treffen persönlich vortragen und für Antworten des Komitees zur Verfügung stehen. Sollte ein persönliches Erscheinen nicht möglich sein, kann man versuchen ein Mitglied frühzeitig mit dem Vorschlag vertraut zu machen. Dieses Mitglied kann dann die Vertretung übernehmen. Natürlich ist es aber besser, wenn der Initiator des Vorschlags selbst präsent ist.

    Da der Prozess für einen neuen Standard sehr langwierig ist, sind vor allem neue Bibliotheksvorschläge vom Komitee gerne gesehen. Neue Bibliotheken können nämlich in einen Technical Report (TR) eingebracht werden, der verhältnismäßig schnell verabschiedet werden kann. Im April 2006 wurde z.B. endlich der TR1 verabschiedet.

    Wie muss solch ein Vorschlag aussehen? Auf der Homepage des Komitees kann man viele bereits eingereichte Vorschläge vorfinden, auch eine kurze Beschreibung wie so etwas aussehen soll, ist vorhanden. Ein Vorschlag z.B. für eine XML-Bibliothek kann nur ein Konzept oder das Interface der Klassen beschreiben. Eine Implementierung muss nicht vorgewiesen werden. Hier erwartet das Komitee also keine Komplettlösungen. Denn meistens implementieren Compiler-Hersteller diese sowieso selbst oder kaufen sie ein. Es ist aber natürlich nicht von der Hand zu weisen, das eine Referenzimplementierung oder gar der Einsatz in kommerziellen produktiven Systemen ein gutes Argument für die Akzeptierung des Vorschlages sein kann. Es muss noch betont werden, dass nicht nur Bibliotheksvorschläge eingereicht werden können. Es kann zu jedem Thema bzgl. des C++ Standards von jedem ein Vorschlag eingereicht werden.

    4 Das Stimmrecht

    Die Akzeptierung eines Vorschlags läuft über das Komitee ab in dem jedes Mitglied für oder dagegen stimmen kann. Wer hat alles ein Stimmrecht? Im Prinzip jeder, der Mitglied ist. Und eine Mitgliedschaft kann man sich erkaufen. Wer in Deutschland lebt, kann z.B. über eine DIN-Mitgliedschaft versuchen ein Stimmrecht zu erhalten. Ein paar DIN-Mitglieder können hier sicherlich mehr Auskunft geben und sind in den Protokollen der Komitee Homepage auffindbar.

    Meistens wird nicht direkt nach einem Vortrag des Vorschlags abgestimmt, sondern in einem späteren Meeting, wenn sich die Mitglieder über die Mailingliste genauer ausgetauscht haben. Auch werden manchmal vom Komitee Kritikpunkte genannt die der Einreicher zu einem späteren Termin nachbessern kann und eine neue Chance bekommt. Es kommt aber auch vor, das Vorschläge komplett abgelehnt werden, weil sie den Vorstellungen des Komitees in keiner Weise entsprechen.

    Im TR1 wurden z.B. spezielle mathematische Funktionen bei der Abstimmung aus reinen Kostengründen abgelehnt. Hier haben Compiler- und Library-Hersteller ihre Bedenken bzgl. des Aufwandes für Implementierung und vor allem der QS (Qualitätssicherung) geäußert. Denn ein Dilemma a la export-Schlüsselwort aus dem 1998er Standard, will man nicht wieder erleben.

    5 Verabschiedung

    Wie man sehr schön sieht, ist der Standardisierungsprozess für C++ mit viel Aufwand verbunden. Bis ein Standard verabschiedet wird, gehen viele Jahre ins Land. Das hatte bereits der erste C++ Standard gezeigt und der nächste kommt hoffentlich in diesem Jahrzehnt. Um hier etwas schneller voranzukommen, wurden die TRs eingeführt, die in vielen anderen ISO-Standards schon gängig sind.

    Letztendlich muss sich das gesamte Komitee für den nächsten Standard in allen Punkten bzw. Vorschlägen einig sein. Am Ende wird dann ein Entwurf zusammengefasst, der als offizielles ISO-Dokument erscheint.

    6 Die Zukunft

    Was bringt die Zukunft? Der nächste C++ Standard hat den Arbeitstitel C++0x und soll verdeutlichen, das dieser noch in diesem Jahrzehnt verabschiedet wird. Einige Komiteemitglieder scherzen jedoch, dass der Platzhalter ein Hexadezimalwert sei. Es könnte also auch C++0A werden. Es ist jedoch mit 2009 mit dem nächsten C++ Standard zu Rechnen. Denn nur noch bis Frühjahr 2007 werden Proposals für C++0x angenommen und für den TR2 ist schon im Oktober 2006 Einsendeschluss.

    Da Technical Reports nur optionale Standards sind, wird der TR1 vermutlich (teilweise) mit in den C++0x Standard einfliessen. Hier hat das Komitee noch keine Entscheidung getroffen. Da der TR1 aber "nur" auf C++ von 1998 bzw. 2003 aufbaut, wird dieser mittlerweile schon von diversen Organisationen implementiert, sowohl Dinkumware als auch Boost arbeiten an Implementierungen. STLport wird sicherlich nachziehen. Dinkumware wird wahrscheinlich seinen Großkunden Microsoft und Borland auch eine Implementierung anbieten. Es ist damit zu Rechnen, das die nächsten Versionen von VisualC++ und TurboC++ TR1 im Lieferumfang dabei haben werden.

    Zum Abschluss noch ein paar wichtige URLs:
    C++ Komitee Homepage: http://www.open-std.org/jtc1/sc22/wg21/
    C++ TR1 draft: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf
    C++ TR2 Wünsche: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1810.html
    Die ISO: http://www.iso.org
    Die DIN: http://www.din.de



  • Dieser Artikel war noch in der Pipeline. Ich habe ihn endlich mal zu ende geschrieben. Ich bitte um Kritik und Hinweise auf inhaltliche Fehler.



  • Hallo,

    Vielleicht könntest du noch einen Anhang in Richtung Zukunftaussichten machen.

    Sonst habe ich nur noch kleine grammatische Fehler entdeckt. Inhaltlich scheint sonst alles in Ordnung zu sein.

    MFG winexec*



  • Sehr interessant. 👍
    Find ich gut, dass man so auch mal etwas über die Vorgänge hinter den Kulissen erfährt.

    PS: Die Überschriften werden laut dem Standardlayout unterstrichen ;).



  • Yupp, liest sich interessant und flüssig. 👍



  • Hallo

    Wirklich sehr interessanter Beitrag. Villeicht wäre noch ein Link zum aktuellen Standard cool. (zum Beispiel als pdf)

    chrische



  • chrische5 schrieb:

    Hallo

    Wirklich sehr interessanter Beitrag. Villeicht wäre noch ein Link zum aktuellen Standard cool. (zum Beispiel als pdf)

    chrische

    Da der Standard kostenpflichtig ist, wäre ein Link zu einem illegalen PDF etwas problematisch 😉



  • Hallo

    GPC schrieb:

    chrische5 schrieb:

    Hallo

    Wirklich sehr interessanter Beitrag. Villeicht wäre noch ein Link zum aktuellen Standard cool. (zum Beispiel als pdf)

    chrische

    Da der Standard kostenpflichtig ist, wäre ein Link zu einem illegalen PDF etwas problematisch 😉

    Das wusste ich nicht. Warum ist denn der Standard kostenpflichtig? Ich habe also keine Möglichkeit legal ohne Geld auszugeben mir anzuschauen, was eigentlich im Standard steht und ob mein Programm standardkonform ist?

    chrische



  • chrische5 schrieb:

    Hallo

    GPC schrieb:

    chrische5 schrieb:

    Hallo

    Wirklich sehr interessanter Beitrag. Villeicht wäre noch ein Link zum aktuellen Standard cool. (zum Beispiel als pdf)

    chrische

    Da der Standard kostenpflichtig ist, wäre ein Link zu einem illegalen PDF etwas problematisch 😉

    Das wusste ich nicht. Warum ist denn der Standard kostenpflichtig?

    Keine Ahnung, vllt. 'n kleines Entgelt für die ISO? Es sind AFAIK alle Standards kostenpflichtig, abgesehen von dem Ada Standard. Vllt. gibt's auch noch weitere für lau, bin da nicht soo informiert.

    Ich habe also keine Möglichkeit legal ohne Geld auszugeben mir anzuschauen, was eigentlich im Standard steht und ob mein Programm standardkonform ist?

    So sieht's aus. EDIT: Man kann nur hoffen, dass der eigene Compiler standardkonform ist, und wenn man nicht gerade mit dem g++ 2.x, dem VC++ 6.0 oder sonst einer Gurke aus der Epoche rumeiert, stehen die Chancen nicht schlecht.

    MfG

    GPC



  • Danke für das Feedback. Werde die nächsten tage entsprechende Änderungen vornehmen.

    Der Standard ist nunmal ein Dokument, das in Jahrelanger Arbeit mit viel Aufwand zustande gekommen ist. Wenn jetzt die Organisation, wie die ISO, diese ganzen Standards auch noch archiviert, Nummern vergibt, darauf achtet das die Standards z.B. durch internationale Abstimmungen zustande gekommen ist usw. pp. Dann ist es mehr als legitim das ein Geldbetrag gezahlt werden muß. Wer es kostenlos verlangen will, kann sich sicher sein, das der ganze Laden nicht so funktionieren würde. Schliesslich gibts auch Mitarbeiter die den Laden am Laufen halten müssen.

    Wenn ihr in den Buchladen geht, fragt ihr ja auch nicht, warum die Bücher dort Geld kosten, oder? 🙄

    Letztendlich ist der Standard (egal ob Steckdose, Schraube oder Sprache) für Firmen wichtig, die entsprechendes Gut herstellen und sich danach richten wollen/müssen. Als Privatmann kann man sich ja den Stroustrup kaufen, der beschreibt ja auch den Standard, nur halt auf seine Art. Wer wissen will, wie der Standard geschrieben aussieht, kann sich ja zumindest den Entwurf anschauen:
    http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1905.pdf
    Dann bekommt man zumindest einen Eindruck, auch wenn es nur der Entwurf ist.



  • Hallo

    Artchi schrieb:

    Wenn ihr in den Buchladen geht, fragt ihr ja auch nicht, warum die Bücher dort Geld kosten, oder? 🙄

    Ich will mich sicher nicht streiten und es bringt eh nichts, weil der Standard nun mal Geld kostet, aber es gibt, wie ich finde, da schon noch einen Unterschied. Der Standard ist ja dafür da, dass alle sich daran halten (zumindest theoretisch) und da sollte man auch dafür sorgen, dass jeder diese Regeln einsehen kann.

    chrische



  • Da der Standard freiwillig ist, muß dieser niemandem zur Verfügung gestellt werden. Du kannst ja auch in Deutschland Steckdosen herstellen und verkaufen, die sich nicht an die DIN halten. Nur ob du die hier verkauft bekommst, ist eine andere Geschichte. Du hast da also eher einen Wettbewerbsnachteil, mehr nicht.

    Weiterhin kostet das Dokument auch nicht unsummen von Geld, das man sagen kann, es ist Abzocke oder eine Firma muß sich dafür einen Kredit aufnehmen. Da kostet selbst eine Visualstudio- oder Qt-Lizenz mehr Geld. Schau mal bei der DIN nach:

    ISO/IEC 14882, Ausgabe:2003-10
    Programmiersprachen - C++, CD-ROM
    Preis: 234,70 EUR.

    Warum muß z.B. ein C++ Programmierer zwingen DAS Standard-Dokument in seiner Schublade haben? Muß er nicht! Wer Elektromeister ist, muß auch nicht die ISO-/DIN-Doku zu den Steckdosen haben, die er benutzt. Derjenige der die Steckdosen herstellt schon. Genauso ist es mit dem Compiler: Du bist der Benutzer des Compilers. Wenn dein Code nicht vom Compiler geschluckt wird, wird es einen Error geben. Wenn ein Stecker nicht in die DIN-Steckdose passt, gibts auch einen "Error".

    Letztendlich sage ich immer: "Man bekommt nichts geschenkt!" Das wurde mir als Kind beigebracht. Das die ganzen Opensource-Fans die Kostenlos-Mentalität es auf ALLES übertragen wollen, finde ich pers. etwas unrealistisch. 😉



  • Artchi schrieb:

    ISO/IEC 14882, Ausgabe:2003-10
    Programmiersprachen - C++, CD-ROM
    Preis: 234,70 EUR.

    Was mich an diesem Standard so wundert, sind die unterschiedlichen Preise. Ok da ist jetzt ne CD-ROM dabei aber es gibt den Standard auf für 18 Dollar als PDF
    (irgendwo) und das ist sogar offiziell

    BR
    Vinzenz



  • Hem, also das kann ich jetzt auch nicht genau sagen. Wenn man bei iso.org nach dem Dokument sucht, bezahlt man etwas über 300 CHF, also kommt so ungefähr mit dem Preis (wenn man ihn in EUR umrechnet) von der DIN-Variante hin.

    Kann sein das man ihn auch für 18 EUR bekommt, aber ohne Bezugsquelle nicht hilfreich. 😃

    Jedenfalls weiß ich nicht was da jetzt so tragisch dran sein soll. Ich habe noch nie das Bedürfnis gehabt, dieses Dokument haben zu wollen. Es ist eh trocken geschrieben da es nur technische Vorgaben sind. Da ist selbst der Stroustrup erfrischender, und das soll was heißen! 😉 Und der beschreibt auch den kompletten Standard in Buchform für nur 49 EUR.



  • Hi!

    Hier gibts den INCITS/ISO/IEC 14882-2003 Standard für 30 Dollar: http://webstore.ansi.org/ansidocstore/product.asp?sku=INCITS%2FISO%2FIEC+14882-2003

    Oder gibts da einen Unterschied zum ISO/IEC 14882:2003 für 299 Dollar (http://webstore.ansi.org/ansidocstore/product.asp?sku=ISO%2FIEC+14882%3A2003)? 😕



  • Der C++ Standardisierungs-Prozess

    Für viele ist C++ eine unbekannte Sprache, was die Organisation angeht. In diesem Artikel soll etwas Licht ins Dunkel gebracht werden.

    1 Weltweite Normen

    C++ ist eine der wenigen Programmiersprachen die in einem internationalen Standard (also einer Norm) festgelegt sind. Was heißt das genau? Es gibt von der ISO (International Standard Organisation) ein "Papier" in dem genau drin steht, wie die Sprache C++ auszusehen hat. Dabei wird jedes Detail, wie Syntax, Eigenschaften und Verhalten, beschrieben. Unter anderem auch undefiniertes Verhalten. Auch die zu C++ gehörende Bibliothek (C++ Standard Library) ist ausführlich beschrieben. Dies ergibt einen offiziellen Standard an den sich jeder Hersteller eines C++ Compilers und dessen Bibliothek halten sollte (Normen sind nicht bindend!). Man kann das mit der DIN (Deutsches Institut für Normung) für z.B. Papier vergleichen. Jeder von uns hat schon mal standardisiertes Papier gekauft, z.B. DIN A4 Papier. Die DIN schreibt die Abmessungen (Breite mal Länge) für Papier bis auf den Millimeter genau vor. So kann man beim Papierkauf nicht sehr viel falsch machen. Und auch in 100 Jahren werden wir wahrscheinlich DIN A4 Schreibblöcke kaufen können.

    Die DIN ist eine nationale Organisation für deutsche Normen, entsprechend ist z.B. die ANSI (American National Standards Institute) die nationale Organisation für die USA. Für weltweit gültige Normen gibt es jedoch die ISO, welche aus den nationalen Normungs-Organisationen besteht. Genau hier wurde 1998 die C++ Sprache als Standard verabschiedet und die nationalen Organisationen haben den ISO-C++ Standard bei sich übernommen. C++ finden wir also nicht nur im ANSI sondern auch im DIN. Wir können somit auch bedenkenlos DIN-C++ sagen.

    2 Das Komitee

    Damit C++ überhaupt ein ISO-Standard werden konnte, mussten diverse Bedingungen erfüllt werden, die nicht nur für C++ gültig sind. Die ISO schreibt unter anderem vor, dass am Standardisierungsprozess nicht nur eine einzige rechtliche Person und auch nicht mehrere nur aus einem Land mitwirken dürfen. D.h. es müssen mehrere Personen aus mehreren Ländern sich auf einen Standard einigen. Denn immerhin handelt es sich ja um einen internationalen Standard. Vorzugsweise sind diese Personen von Firmen entsendet um am Prozess Einfluss zu haben. (denn die Akzeptanz für den Standard muss später bei den Firmen vorhanden sein) Z.B. waren und sind immer noch am Standardisierungsprozess für C++ Firmenvertreter von Microsoft, IBM, Intel, HP, Dinkumware u.a. beteiligt. Teilweise sind auch Mitglieder z.B. von der DIN as Berlin mit dabei. Alle Personen bilden das C++ Komitee um über den C++ Standard zu entscheiden.

    Doch wie arbeitet das C++ Komitee? Da die Mitglieder des Komitees aus aller Welt kommen, ist deren Handlung nicht ganz so flexibel, wie z.B. die einer lokalen Gruppe. Der wohl größte Teil des Komitees, wenn nicht sogar alle, sind zwar Angestellte namhafter Firmen, doch arbeiten diese letztendlich ehrenamtlich im C++ Komitee. D.h. die Arbeit über das Jahr und die Jahre geht meistens auf das Freizeitkonto. Die Kommunikation läuft dabei über eine geschlossene Mailingliste ab, in der sich die Mitglieder auf dem aktuellen Stand halten und diskutieren. Damit jedoch die Arbeit nicht im Sande verläuft, finden im April und Oktober eines jeden Jahres persönliche Treffen statt. Der Ort ist dabei immer in einem anderen Land, z.B. fand das Treffen im April 2006 in Berlin statt. Im kommenden Oktober 2006 findet es in Oregon, USA, statt. Die Zahl der Teilnehmer bewegt sich dabei in einer Größenordnung von ca. 50 Personen, weshalb diese Treffen meistens in Hotels mit entsprechenden Räumlichkeiten stattfinden. Da die Arbeit, wie bereits gesagt, ehrenamtlich ist, müssen Treffen dieser Art von jemandem gesponsert werden. In Berlin ist für die anfallenden Kosten die DIN e.V. aufgekommen. In Oregon werden Intel und die ANSI die Kosten übernehmen. Für die Hotelzimmer müssen selbstverständlich die jeweiligen Personen selbst aufkommen.

    3 Proposals

    Was passiert nun auf diesen persönlichen Treffen? Das dürfte wohl das interessanteste sein. Solch ein Treffen dauert meisten ca. eine Arbeitswoche in der sowohl der aktuelle Stand verkündet wird, als auch sich Arbeitsgruppen zurückziehen und neue Vorschläge (Proposals) ausarbeiten oder eher besprechen. Mit Vorschlägen sind tatsächlich neue Spracheigenschaften, Toolspezifikationen oder Bibliothekserweiterungen gemeint. Doch wo kommen diese her? Hier kommt auch der Leser dieses Artikels ins Spiel. Jeder interessierte Mensch, der eine Idee für den C++ Standard hat, darf beim C++ Komitee einen Vorschlag einreichen. Das Komitee bittet sogar darum, das sich die C++ Community mit Vorschlägen beteiligt. 2005 wurden vor allem Vorschlagswünsche offiziell vom Komitee geäußert, was bisher eigentlich nicht vorkam.

    Wer einen Vorschlag einreicht, muss diesen auf einem Treffen persönlich vortragen und für Antworten des Komitees zur Verfügung stehen. Sollte ein persönliches Erscheinen nicht möglich sein, kann man versuchen ein Mitglied frühzeitig mit dem Vorschlag vertraut zu machen. Dieses Mitglied kann dann die Vertretung übernehmen. Natürlich ist es aber besser, wenn der Initiator des Vorschlags selbst präsent ist.

    Da der Prozess für einen neuen Standard sehr langwierig ist, sind vor allem neue Bibliotheksvorschläge vom Komitee gerne gesehen. Neue Bibliotheken können nämlich in einen Technical Report (TR) eingebracht werden, der verhältnismäßig schnell verabschiedet werden kann. Im April 2006 wurde z.B. endlich der TR1 verabschiedet.

    Wie muss solch ein Vorschlag aussehen? Auf der Homepage des Komitees kann man viele bereits eingereichte Vorschläge vorfinden, auch eine kurze Beschreibung wie so etwas aussehen soll, ist vorhanden. Ein Vorschlag z.B. für eine XML-Bibliothek kann nur ein Konzept oder das Interface der Klassen beschreiben. Eine Implementierung muss nicht vorgewiesen werden. Hier erwartet das Komitee also keine Komplettlösungen. Denn meistens implementieren Compiler-Hersteller diese sowieso selbst oder kaufen sie ein. Es ist aber natürlich nicht von der Hand zu weisen, das eine Referenzimplementierung oder gar der Einsatz in kommerziellen produktiven Systemen ein gutes Argument für die Akzeptierung des Vorschlages sein kann. Es muss noch betont werden, dass nicht nur Bibliotheksvorschläge eingereicht werden können. Es kann zu jedem Thema bzgl. des C++ Standards von jedem ein Vorschlag eingereicht werden.

    4 Das Stimmrecht

    Die Akzeptierung eines Vorschlags läuft über das Komitee ab in dem jedes Mitglied für oder dagegen stimmen kann. Wer hat alles ein Stimmrecht? Im Prinzip jeder, der Mitglied ist. Und eine Mitgliedschaft kann man sich erkaufen. Wer in Deutschland lebt, kann z.B. über eine DIN-Mitgliedschaft versuchen ein Stimmrecht zu erhalten. Ein paar DIN-Mitglieder können hier sicherlich mehr Auskunft geben und sind in den Protokollen der Komitee Homepage auffindbar.

    Meistens wird nicht direkt nach einem Vortrag des Vorschlags abgestimmt, sondern in einem späteren Meeting, wenn sich die Mitglieder über die Mailingliste genauer ausgetauscht haben. Auch werden manchmal vom Komitee Kritikpunkte genannt die der Einreicher zu einem späteren Termin nachbessern kann und eine neue Chance bekommt. Es kommt aber auch vor, das Vorschläge komplett abgelehnt werden, weil sie den Vorstellungen des Komitees in keiner Weise entsprechen.

    Im TR1 wurden z.B. spezielle mathematische Funktionen bei der Abstimmung aus reinen Kostengründen abgelehnt. Hier haben Compiler- und Library-Hersteller ihre Bedenken bzgl. des Aufwandes für Implementierung und vor allem der QS (Qualitätssicherung) geäußert. Denn ein Dilemma a la export-Schlüsselwort aus dem 1998er Standard, will man nicht wieder erleben.

    5 Verabschiedung

    Wie man sehr schön sieht, ist der Standardisierungsprozess für C++ mit viel Aufwand verbunden. Bis ein Standard verabschiedet wird, gehen viele Jahre ins Land. Das hatte bereits der erste C++ Standard gezeigt und der nächste kommt hoffentlich in diesem Jahrzehnt. Um hier etwas schneller voranzukommen, wurden die TRs eingeführt, die in vielen anderen ISO-Standards schon gängig sind.

    Letztendlich muss sich das gesamte Komitee für den nächsten Standard in allen Punkten bzw. Vorschlägen einig sein. Am Ende wird dann ein Entwurf zusammengefasst, der als offizielles ISO-Dokument erscheint.

    6 Die Zukunft

    Was bringt die Zukunft? Der nächste C++ Standard hat den Arbeitstitel C++0x und soll verdeutlichen, das dieser noch in diesem Jahrzehnt verabschiedet wird. Einige Komiteemitglieder scherzen jedoch, dass der Platzhalter ein Hexadezimalwert sei. Es könnte also auch C++0A werden. Es ist jedoch mit 2009 mit dem nächsten C++ Standard zu Rechnen. Denn nur noch bis Frühjahr 2007 werden Proposals für C++0x angenommen und für den TR2 ist schon im Oktober 2006 Einsendeschluss.

    Da Technical Reports nur Erweiterungen zum Standard sind, wird der TR1 vermutlich (teilweise) mit in den C++0x Standard einfliessen. Hier hat das Komitee noch keine Entscheidung getroffen. Da der TR1 aber "nur" auf C++ von 1998 bzw. 2003 aufbaut und deshalb keinen C++0x Compiler benötigt, wird dieser mittlerweile schon von diversen Organisationen implementiert. Sowohl Dinkumware, GCC als auch Boost arbeiten an Implementierungen. STLport wird sicherlich nachziehen. Dinkumware wird wahrscheinlich seinen Großkunden Microsoft und Borland auch eine Implementierung anbieten. Somit werden wohl alle bekannteren C++ Compiler demnächst mit TR1 ausgeliefert oder sich damit leicht erweitern lassen.

    Zum Abschluss noch ein paar wichtige URLs:
    C++ Komitee Homepage: http://www.open-std.org/jtc1/sc22/wg21/
    C++ TR1 Entwurf: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf
    C++ TR2 Wünsche: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1810.html
    Die ISO: http://www.iso.org
    Die DIN: http://www.din.de



  • Habe kleinere Änderungen am alten Text gemacht und das Kapitel 6 ist neu dazu gekommen.



  • Für die libstdc++ des GCCs wird auch an einer TR1 Implementierung gearbeitet

    http://gcc.gnu.org/onlinedocs/libstdc++/ext/tr1.html



  • Danke! Hatte zwar danach Ausschau gehalten, konnte aber so nichts entdecken. Habe ich jetzt mal in den Artikel hinzugefügt.



  • Der C++-Standardisierungs-Prozess

    Für viele ist C++ eine unbekannte Sprache, was die Organisation angeht. In diesem Artikel soll etwas Licht ins Dunkel gebracht werden.

    1 Weltweite Normen

    C++ ist eine der wenigen Programmiersprachen die in einem internationalen Standard (also einer Norm) festgelegt sind. Was heißt das genau? Es gibt von der ISO (International Standard Organisation) ein "Papier" in dem genau drin steht, wie die Sprache C++ auszusehen hat. Dabei wird jedes Detail, wie Syntax, Eigenschaften und Verhalten, beschrieben. Unter anderem auch undefiniertes Verhalten. Auch die zu C++ gehörende Bibliothek (C++ Standard Library) ist ausführlich beschrieben. Dies ergibt einen offiziellen Standard an den sich jeder Hersteller eines C++ Compilers und dessen Bibliothek halten sollte (Normen sind nicht bindend!). Man kann das mit der DIN (Deutsches Institut für Normung) für z.B. Papier vergleichen. Jeder von uns hat schon mal standardisiertes Papier gekauft, z.B. DIN-A4-Papier. Die DIN schreibt die Abmessungen (Breite mal Länge) für Papier bis auf den Millimeter genau vor. So kann man beim Papierkauf nicht sehr viel falsch machen. Und auch in 100 Jahren werden wir wahrscheinlich DIN-A4-Schreibblöcke kaufen können.

    Die DIN ist eine nationale Organisation für deutsche Normen, entsprechend ist z.B. die ANSI (American National Standards Institute) die nationale Organisation für die USA. Für weltweit gültige Normen gibt es jedoch die ISO, welche aus den nationalen Normungs-Organisationen besteht. Genau hier wurde 1998 die C++-Sprache als Standard verabschiedet und die nationalen Organisationen haben den ISO-C++-Standard bei sich übernommen. C++ finden wir also nicht nur im ANSI sondern auch im DIN. Wir können somit auch bedenkenlos DIN-C++ sagen.

    2 Das Komitee

    Damit C++ überhaupt ein ISO-Standard werden konnte, mussten diverse Bedingungen erfüllt werden, die nicht nur für C++ gültig sind. Die ISO schreibt unter anderem vor, dass am Standardisierungsprozess nicht nur eine einzige rechtliche Person und auch nicht mehrere nur aus einem Land mitwirken dürfen. D.h. es müssen sich mehrere Personen aus mehreren Ländern auf einen Standard einigen. Denn immerhin handelt es sich ja um einen internationalen Standard. Vorzugsweise sind diese Personen von Firmen entsendet, um am Prozess Einfluss zu haben (denn die Akzeptanz für den Standard muss später bei den Firmen vorhanden sein). Zum Beispiel waren und sind immer noch am Standardisierungsprozess für C++ Firmenvertreter von Microsoft, IBM, Intel, HP, Dinkumware u.a. beteiligt. Teilweise sind auch Mitglieder z.B. von der DIN aus Berlin mit dabei. Alle Personen bilden das C++-Komitee um über den C++-Standard zu entscheiden.

    Doch wie arbeitet das C++-Komitee? Da die Mitglieder des Komitees aus aller Welt kommen, ist deren Handlung nicht ganz so flexibel, wie z.B. die einer lokalen Gruppe. Der wohl größte Teil des Komitees, wenn nicht sogar alle, sind zwar Angestellte namhafter Firmen, doch arbeiten diese letztendlich ehrenamtlich im C++-Komitee. D.h. die Arbeit über das Jahr und die Jahre geht meistens auf das Freizeitkonto. Die Kommunikation läuft dabei über eine geschlossene Mailingliste ab, in der sich die Mitglieder auf dem aktuellen Stand halten und diskutieren. Damit jedoch die Arbeit nicht im Sande verläuft, finden im April und Oktober eines jeden Jahres persönliche Treffen statt. Der Ort ist dabei immer in einem anderen Land, z.B. fand das Treffen im April 2006 in Berlin statt. Im kommenden Oktober 2006 findet es in Oregon, USA, statt. Die Zahl der Teilnehmer bewegt sich dabei in einer Größenordnung von ca. 50 Personen, weshalb diese Treffen meistens in Hotels mit entsprechenden Räumlichkeiten stattfinden. Da die Arbeit, wie bereits gesagt, ehrenamtlich ist, müssen Treffen dieser Art von jemandem gesponsert werden. In Berlin ist für die anfallenden Kosten die DIN e.V. aufgekommen. In Oregon werden Intel und die ANSI die Kosten übernehmen. Für die Hotelzimmer müssen selbstverständlich die jeweiligen Personen selbst aufkommen.

    3 Proposals

    Was passiert nun auf diesen persönlichen Treffen? Das dürfte wohl das interessanteste sein. Solch ein Treffen dauert meistens ca. eine Arbeitswoche in der sowohl der aktuelle Stand verkündet wird, als auch sich Arbeitsgruppen zurückziehen und neue Vorschläge (Proposals) ausarbeiten oder eher besprechen. Mit Vorschlägen sind tatsächlich neue Spracheigenschaften, Toolspezifikationen oder Bibliothekserweiterungen gemeint. Doch wo kommen diese her? Hier kommt auch der Leser dieses Artikels ins Spiel. Jeder interessierte Mensch, der eine Idee für den C++-Standard hat, darf beim C++-Komitee einen Vorschlag einreichen. Das Komitee bittet sogar darum, das sich die C++-Community mit Vorschlägen beteiligt. 2005 wurden vor allem Vorschlagswünsche offiziell vom Komitee geäußert, was bisher eigentlich nicht vorkam.

    Wer einen Vorschlag einreicht, muss diesen auf einem Treffen persönlich vortragen und für Antworten des Komitees zur Verfügung stehen. Sollte ein persönliches Erscheinen nicht möglich sein, kann man versuchen ein Mitglied frühzeitig mit dem Vorschlag vertraut zu machen. Dieses Mitglied kann dann die Vertretung übernehmen. Natürlich ist es aber besser, wenn der Initiator des Vorschlags selbst präsent ist.

    Da der Prozess für einen neuen Standard sehr langwierig ist, sind vor allem neue Bibliotheksvorschläge vom Komitee gerne gesehen. Neue Bibliotheken können nämlich in einen Technical Report (TR) eingebracht werden, der verhältnismäßig schnell verabschiedet werden kann. Im April 2006 wurde z.B. endlich der TR1 verabschiedet.

    Wie muss solch ein Vorschlag aussehen? Auf der Homepage des Komitees kann man viele bereits eingereichte Vorschläge vorfinden, auch eine kurze Beschreibung wie so etwas aussehen soll, ist vorhanden. Ein Vorschlag z.B. für eine XML-Bibliothek kann nur ein Konzept oder das Interface der Klassen beschreiben. Eine Implementierung muss nicht vorgewiesen werden. Hier erwartet das Komitee also keine Komplettlösungen. Denn meistens implementieren Compiler-Hersteller diese sowieso selbst oder kaufen sie ein. Es ist aber natürlich nicht von der Hand zu weisen, das eine Referenzimplementierung oder gar der Einsatz in kommerziellen produktiven Systemen ein gutes Argument für die Akzeptierung des Vorschlages sein kann. Es muss noch betont werden, dass nicht nur Bibliotheksvorschläge eingereicht werden können. Es kann zu jedem Thema bzgl. des C++ Standards von jedem ein Vorschlag eingereicht werden.

    4 Das Stimmrecht

    Die Akzeptierung eines Vorschlags läuft über das Komitee ab in dem jedes Mitglied für oder dagegen stimmen kann. Wer hat alles ein Stimmrecht? Im Prinzip jeder, der Mitglied ist. Und eine Mitgliedschaft kann man sich erkaufen. Wer in Deutschland lebt, kann z.B. über eine DIN-Mitgliedschaft versuchen ein Stimmrecht zu erhalten. Ein paar DIN-Mitglieder können hier sicherlich mehr Auskunft geben und sind in den Protokollen der Komitee-Homepage auffindbar.

    Meistens wird nicht direkt nach einem Vortrag des Vorschlags abgestimmt, sondern in einem späteren Meeting, wenn sich die Mitglieder über die Mailingliste genauer ausgetauscht haben. Auch werden manchmal vom Komitee Kritikpunkte genannt die der Einreicher zu einem späteren Termin nachbessern kann und eine neue Chance bekommt. Es kommt aber auch vor, dass Vorschläge komplett abgelehnt werden, weil sie den Vorstellungen des Komitees in keiner Weise entsprechen.

    Im TR1 wurden z.B. spezielle mathematische Funktionen bei der Abstimmung aus reinen Kostengründen abgelehnt. Hier haben Compiler- und Library-Hersteller ihre Bedenken bzgl. des Aufwandes für Implementierung und vor allem der QS (Qualitätssicherung) geäußert. Denn ein Dilemma à la export-Schlüsselwort aus dem 1998er Standard, will man nicht wieder erleben.

    5 Verabschiedung

    Wie man sehr schön sieht, ist der Standardisierungsprozess für C++ mit viel Aufwand verbunden. Bis ein Standard verabschiedet wird, gehen viele Jahre ins Land. Das hatte bereits der erste C++-Standard gezeigt und der nächste kommt hoffentlich in diesem Jahrzehnt. Um hier etwas schneller voranzukommen, wurden die TRs eingeführt, die in vielen anderen ISO-Standards schon gängig sind.

    Letztendlich muss sich das gesamte Komitee für den nächsten Standard in allen Punkten bzw. Vorschlägen einig sein. Am Ende wird dann ein Entwurf zusammengefasst, der als offizielles ISO-Dokument erscheint.

    6 Die Zukunft

    Was bringt die Zukunft? Der nächste C++-Standard hat den Arbeitstitel C++0x und soll verdeutlichen, das dieser noch in diesem Jahrzehnt verabschiedet wird. Einige Komiteemitglieder scherzen jedoch, dass der Platzhalter ein Hexadezimalwert sei. Es könnte also auch C++0A werden. Es ist jedoch 2009 mit dem nächsten C++-Standard zu rechnen. Denn nur noch bis Frühjahr 2007 werden Proposals für C++0x angenommen und für den TR2 ist schon im Oktober 2006 Einsendeschluss.

    Da Technical Reports nur Erweiterungen zum Standard sind, wird der TR1 vermutlich (teilweise) mit in den C++0x-Standard einfließen. Hier hat das Komitee noch keine Entscheidung getroffen. Da der TR1 aber "nur" auf C++ von 1998 bzw. 2003 aufbaut und deshalb keinen C++0x-Compiler benötigt, wird dieser mittlerweile schon von diversen Organisationen implementiert. Sowohl Dinkumware, GCC als auch Boost arbeiten an Implementierungen. STLport wird sicherlich nachziehen. Dinkumware wird wahrscheinlich seinen Großkunden Microsoft und Borland auch eine Implementierung anbieten. Somit werden wohl alle bekannteren C++-Compiler demnächst mit TR1 ausgeliefert oder sich damit leicht erweitern lassen.

    Zum Abschluss noch ein paar wichtige URLs:
    C++-Komitee-Homepage: http://www.open-std.org/jtc1/sc22/wg21/
    C++-TR1-Entwurf: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1836.pdf
    C++-TR2-Wünsche: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2005/n1810.html
    Die ISO: http://www.iso.org
    Die DIN: http://www.din.de



  • @Artchi: du musst dann noch den Titel anpassen: zwischen C++ und Standardisierungs-Prozess kommt ein Bindestrich. 🙂


Anmelden zum Antworten