c++ aufräumen



  • bis vor kurzem habe ich noch nicht einmal gewusst dass es
    std::TR1::Array
    (bei groß/kleinschreibung grad nicht sicher)

    hast du schon irgendwo eine klasse der std.-library gesehen in deren namen grossbuchstaben vorkommen?
    🙄



  • nunja hier soll nicht über meine blödheit diskutiert werden sondern eher um das was ich als kern betrachte nämlich dass es sehr viele veraltete dateien gibt und testnamensräume und überhaupt

    vielleicht fällt jemandem ein besseres beispiel ein?



  • shisha schrieb:

    nunja hier soll nicht über meine blödheit diskutiert werden sondern eher um das was ich als kern betrachte nämlich dass es sehr viele veraltete dateien gibt und testnamensräume und überhaupt

    Testnamensraum ist nicht das richtige Wort. TR1 ist Teil des Standards von 2003, ist aber noch nicht überall verbreitet. Und was soll veraltet sein? Dateien aus der C-Standardbibliothek?

    shisha schrieb:

    vielleicht fällt jemandem ein besseres beispiel ein?

    Wir wissen ja gar nicht, was du meinst. Und du scheinst dich nicht sehr auszukennen, wie auch hustbaers Hinweis zeigt. Der erste Eindruck eines Anfängers ist aber nicht unbedingt ein gutes Argument. Vielleicht gelingt es dir ja, bessere zu finden.



  • otze schrieb:

    iostream.h war eine Bibliothek vor dem Standard - und man kann sie immer noch verwenden.

    Man kann sie verwenden, wenn sie der Compiler anbietet! Laut Standard müssen sie aber nicht vorhanden sein, und dann kann man sie auch nicht nutzen, wenn der Compiler sie nicht drin hat.

    Mein Compiler kennt sie jedenfalls nicht mehr:

    MSVC 2005 schrieb:

    fatal error C1083: Cannot open include file: 'iostream.h': No such file or directory

    Ein Anfänger brauch von diesen Sachen überhaupt nichts zu wissen. Sie sind praktisch in C++ nicht existent.



  • shisha schrieb:

    nunja hier soll nicht über meine blödheit diskutiert werden sondern eher um das was ich als kern betrachte nämlich dass es sehr viele veraltete dateien gibt und testnamensräume und überhaupt

    Welche veralteten dateien oder testnamensräume? Was kann der C++-Standard dafür, wenn Du veraltete Literatur liest, die dir NICHT den Standard beibringt? Jede seriöse C++-Literatur von Heute wird von iostream.h kein Wort verlieren, da es nie im Standard existierte.

    Und TR1 ist kein Testnamensraum. Es ist ein Standard bzw. eine Standard-Erweiterung, die hoch offiziell als ISO-Papier existiert. Und jede seriöse C++-Literatur von Heute wird dich über TR1 aufklären. Tut sie das nicht, ist das die Schuld des Buchautors, und nicht des Standards.

    Kramt nicht in veralteten Büchern und Tutorials, sondern in seriöse Literatur, dann werdet ihr auch nicht verwirrt werden.



  • shisha schrieb:

    zB in manchen büchern die ich habe fängt es noch so an

    #<include iostream.h>

    später hieß es dann das ist veraltet man nehme doch bitte
    <iostream>
    using namepace std;

    Ehm, stimmt nicht. Im Standard steht nicht drin, das man <iostream.h> vergessen soll. Dieser Header stand da nämlich nie drin, somit kann er auch nicht von "vergessen" sprechen. <iostream.h> ist eine freiwillige Datei vor dem C++-Standard gewesen. Tut aber, wenn wir vom ISO-C++ aka C++ reden, nichts zur Sache. Wer seit 1998 (erschien ISO-C++) immernoch mit <iostream.h> ankommt, sollte in seine Höhle zurück kriechen!

    shisha schrieb:

    bis vor kurzem habe ich noch nicht einmal gewusst dass es
    std::TR1::Array

    TR1 gibt es doch erst seit 2006. Wenn du seriöse Bücher, die nach 2006 neu aufgelegt wurden, kaufst, müsstest du darüber etwas erfahren. In einem 2006er Buch verständlicherweise noch schwierig, das ein Buchautor den endgültigen TR1 voraussehen konnte. Ein wenig realistisch und fair sollte man schon bleiben.



  • Ich kann gut nachvollziehen, dass die ganze C++-Action mit Pre-Standard, Standard '98, boost, TR1, C++09, TR2 und was-weiß-ich-noch sehr verwirrend sein kann. Plus, dass bekannterweise jede Menge beschissener Bücher auf dem Markt sind.



  • ja an der schlechten literatur wird es wohl liegen müssen,
    ist ja schön und gut dass sachen wie <iostream.h> nie standard waren
    bloß woher soll ich das wissen
    als ich mich 2002 das erste mal mit c++ befasst habe habe ich mir das buch

    c++ das einsteigerseminar gekauft
    von: niemann und heitsiek
    bhv-verlag
    erschienen : 2002

    darin wird noch mit iostream.h gearbeitet
    dass das nicht gut ist kann ich als käufer ja nicht wissen...

    auch dinge wie initialisierungslisten werden mit keiner einzigen silbe erwähnt

    und jetzt bitte keine diskussion darüber dass 2002 schon wieder lange her ist, ok?

    ich finde es halt nur verwirrned dass sich einige miner bücher selbst widersprechen



  • Wie gesagt, C++ kann nichts dafür, dass massenhaft schlechte Bücher existieren. Ist das somit geklärt oder findest du wirklich Punkte, die dir unaufgeräumt/chaotisch scheinen? Es gäbe da vielleicht schon gewisse Dinge, auch im neuen Standard...



  • shisha schrieb:

    ich finde es halt nur verwirrned dass sich einige miner bücher selbst widersprechen

    Dann sollten dir die Aussagen in diesem Thread ja schonmal gute Hinweise gegeben haben welche der Bücher du umweltfreundlicherweise der Altpapierverwertung zuführen kannst 😉



  • pumuckl schrieb:

    welche der Bücher du umweltfreundlicherweise der Altpapierverwertung zuführen kannst 😉

    Es gibt Dinge, bei denen man Ausnahmen machen kann und der Nachwelt in möglichst keiner Form hinterlassen sollte und somit ist es durchaus moralisch vertretbar den besagten Gegenstand zu verbrennen. :p



  • shisha schrieb:

    ich finde es halt nur verwirrned dass sich einige miner bücher selbst widersprechen

    Willkommen in der Wirklichkeit!



  • Bulli schrieb:

    Und TR1 ist kein Testnamensraum. Es ist ein Standard bzw. eine Standard-Erweiterung, die hoch offiziell als ISO-Papier existiert.

    Nein, ist es nicht:

    C++ Technical Report 1 (TR1) is the common name for ISO/IEC TR 19768, C++ Library Extensions, which is a document proposing additions to the C++ standard library. The additions include regular expressions, smart pointers, hash tables, and random number generators. TR1 is not a standard itself; formally it's a draft document. However, most of its proposals are likely to become part of the next official standard. In the meantime, vendors can use this document as a guide to create extensions. The report's goal is "to build more widespread existing practice for an expanded C++ standard library."

    http://en.wikipedia.org/wiki/Technical_Report_1


  • Administrator

    @otze,
    Also das was du zitierst hast, das würde ich in Deutsch in etwa so zusammenfassen, was Bulli geschrieben hat.
    - Es ist ein offizielles ISO-Papier

    ISO/IEC TR 19768

    - Es ist eine Standard-Erweiterung (kein Standard, sondern eine Erweiterung)

    ..., which is a document proposing additions to the C++ standard library.

    TR1 is not a standard itself; formally it's a draft document.

    Es kommt natürlich jetzt drauf an, wie genau man draft wirklich übersetzen möchte:
    http://dict.leo.org/ende?lp=ende&lang=de&searchLoc=0&cmpType=relaxed&sectHdr=on&spellToler=on&chinese=both&pinyin=diacritic&search=draft&relink=on

    Oder versteh ich das falsch? 🙂

    Grüssli



  • ..., which is a document proposing additions to the C++ standard library.

    ...das ein Dokument ist, welches Erweiterungen der Standardbibliothek vorschlägt

    most of its proposals are likely to become part of the next official standard.

    Die meisten der Vorschläge werden wahrscheinlich Teil des nächsten offiziellen Standards.

    und die Übersetzung von "draft" ist in diesem Kontext immer nur "Entwurf" oder "Konzept". Deswegen wird, wenn hier der link zum C++ standard gebracht wird immer mindestens einmal gesagt: "Das ist nicht der Standard, das ist nur der draft".

    //edit Wikipedia wird sogar noch genauer:

    Compilers need not include the TR1 components to be conforming, as the TR1 proposals are not yet officially part of the standard.



  • www.iso.org schrieb:

    ISO/IEC TR 19768:2007 specifies a series of extensions to the standard library for the programming language C++, as specified by ISO/IEC 14882, in order to build more widespread existing practice for an expanded C++ standard library. Some of the components in ISO/IEC TR 19768:2007 could be considered for standardization in a future version of C++.

    Es ist ein offizielles ISO dokument dass Erweiterungen der C++ Standard Library spezifiziert. Alles hoch offiziell.



  • Am offiziell hänge ich mich ja auch nicht auf. Woran ich mich aufhänge, sind aber formulierungen wie diese dort:

    Some of the components in ISO/IEC TR 19768:2007 could be considered for standardization in a future version of C++.

    Mit anderen Worten: Sie sind nicht standartisiert. Also kein Teil von C++(im Gegensatz zur STL oder anderen standartisierten Komponenten).

    //edit
    Hinzu kommt, die Art, wie der TR1 angekündigt wurde(bzw wie Stroustrup und andere über ihn gesprochen haben). Ich kann das jetzt nicht mehr durch einen Link belegen, aber ich meine, dass der Wortlaut in etwa so ging:

    "Wir wollen den TR1 rausgeben, um die Wartezeit bis zum nächsten Standard zu verkürzen und damit sich die Programmierer auf die kommenden Neuerungen einzustimmen. Natürlich geben wir keine Garantie, dass auch nur irgendwas davon so in den endgültigen Standard einzug haben wird, aber wir sind uns ziemlich sicher"

    damit ist das Ding nicht Teil von C++(auch wenn es offiziell ist), es ist nicht sicher, dass auch nur irgendeiner der Vorschläge durch kommt, und alles in allem ist das nur spielerei => quasi-Testnamensraum. Einfach mal ausprobieren, ob das klappt.



  • Warum müsst ihr aus einer einfachen Frage so etwas kompliziertes produzieren? Und dann wundert ihr euch, wenn Leute wie der Threadersteller völlig verwirrt sind?!
    Ist doch egal ob der Inhalt von TR1 in den nächsten Standard kommt oder nicht, wenn wir von std::tr1 reden ist doch klar was da drin enthalten ist, das jetzt ja TR1-Standard-Dokument.
    Ob das jetzt in den Standard aufgenommen wird und damit nach std:: wandert (wird es das überhaupt, das ist die nächste Frage, denn std::tr1 wird es zwecks Abwärtskompatibilität weiterhin geben und genau aus dem Grund ist es auch unwahrscheinlich, dass etwas entfernt wird, denn die Compilerhersteller werden weiterhin das gesamte std::tr1 ausliefern), oder in std::tr1 bleibt ist doch egal.



  • otze schrieb:

    Am offiziell hänge ich mich ja auch nicht auf. Woran ich mich aufhänge, sind aber formulierungen wie diese dort:

    Some of the components in ISO/IEC TR 19768:2007 could be considered for standardization in a future version of C++.

    Mit anderen Worten: Sie sind nicht standartisiert. Also kein Teil von C++(im Gegensatz zur STL oder anderen standartisierten Komponenten).

    Sie sind standardisiert. Nur eben nicht im C++ Standard "ISO/IEC 14882" sondern eben als "Extension" unter dem Namen ISO/IEC TR 19768:2007.

    Aber diese Diskussion ist langweilig.



  • Shade Of Mine schrieb:

    otze schrieb:

    Am offiziell hänge ich mich ja auch nicht auf. Woran ich mich aufhänge, sind aber formulierungen wie diese dort:

    Some of the components in ISO/IEC TR 19768:2007 could be considered for standardization in a future version of C++.

    Mit anderen Worten: Sie sind nicht standartisiert. Also kein Teil von C++(im Gegensatz zur STL oder anderen standartisierten Komponenten).

    Sie sind standardisiert. Nur eben nicht im C++ Standard "ISO/IEC 14882" sondern eben als "Extension" unter dem Namen ISO/IEC TR 19768:2007.

    Aber diese Diskussion ist langweilig.

    Lass uns heiraten!


Anmelden zum Antworten