Array mit const initialisieren



  • HansKlaus schrieb:

    naja oop braucht eben einen gewissen Überbau der entsprechend Speicher und rechenzeit beansprucht. Deshalb werden Programme, die schnell sein müssen, auch weiterhin in c geschrieben.

    Falsch.

    Nehmen wir vergleichbare Programme, die im Falle eines Fehlers den Fehler nicht nur ignorieren, sondern dem Aufrufer melden oder die SetTopBox reinitialisieren oder sowas.
    Also nicht

    //ignore error
    startProcess(cblpkml);
    

    , sondern

    //do it well
    if(!startProcess(cblpkml)) goto cleanupAnReturnError;
    

    bzw

    //exceptionhandling does it as well
    startProcess(cblpkml);
    

    Im Prinzip musst Du in C jede verfickte Funktion in ein if packen, die wie unwahrscheinlich auch immer nicht klappen könnte. Jede Funktion, die eine Funktion aufruft, die eine Funktion aufruft, …, die eine Betriebssystemfunktion aufruft, die evtl nicht klappen könnte.

    Jedes einzelne if bezahlst Du mit mindestens einem Takt. In Wirklichkeit mit viel mehr, weil Du die Vorhersagetabellen des Prozessors total vollmüllst.

    In C++ bezahlst Du auf einem ordentlichen Compiler für nicht fliegende Exceptions NICHTS. FALLS die Exception doch man fliegt, zahlt man um so mehr! Da können auch mal recht viele Takte draufgehen. Kein Problem.

    Also die Exceptions sind ein Sprachmittel, das C++ über C erhebt. Ihr habt keine Entsprechung.

    Ich gehe mit Dir vollkommen {da core}.oder_wie_man_das_schreibt, daß es eine wirklich elende Pest ist, was C++-Programmierer üblicherweise machen.

    Die übliche C++-Programmierung ist
    - lahm: (std::string zum Übermitteln von String-Literalen, std::vector zum Übermitteln von Arrays, auf den Gipfel getrieben beim Erfassen der Kommandozeilenargumente in std::vectorstd::string>, nur um dann zu schauen, daß es nur ein einziges Argument gab und dessen .c_str() dann runterzugeben). Sowas macht mich traurig.
    - umständlich: (drei verschachtelte std::algos mit sogar einem Lamda drin satt einer einfachen for()if()-Schleife. Arcoth kann bei Bedarf Beispiele aus seinem Archiv holen; während aktueller Arcoth-Code leider vorbildlich ist, fürchte ich)
    - kontraproduktiv: Anstatt daß der Adept eine Winzigkleinigkeit wie eine Co>*o-Hashtable gerad mal macht, echt nur zwei Stunden, macht er eine voll templatisierte Version, echt nur ein Jahr.

    Das ist aber nur das Übliche. Ein ambitionierter Programmierer, der C++ UND C kann, kann immer in C++ den alten C-Programmierer im Regen stehen lassen.


Anmelden zum Antworten