Vorteil von Initialisierungslisten



  • Fellhuhn schrieb:

    ... sie sind dazu nohc unübersichtlich und häßlich. :p

    Das ist Geschmackssache, ich persönlich empfinde sie sogar als lesbarer - von den ganzen anderen Vorteilen mal ganz zu schweigen.

    cu André



  • Klugscheißer schrieb:

    ...Optimal ist aber der Superlativ! Du Prolet!

    Von was ?



  • Simon2 schrieb:

    Klugscheißer schrieb:

    ...Optimal ist aber der Superlativ! Du Prolet!

    Von was ?

    Optimal ist abgeleitet vom lateinischen optimum (das beste), dem Superlativ von bonum (gut).
    Damit bedeutet optimal sein soviel wie "das Beste sein" und kann tatsaechlich nicht gesteigert werden.

    Optimieren bedeutet dementsprechend eigentlich "zum Besten machen", tatsaechlich und vor allem Im Zusammenhang mit Compilern nur "besser machen". Man kann sich jetzt drueber streiten ob man "optimal" genauso abschwaecht und im Zusammenhang mit Compilern als "verbessert" uebersetzt, so dass "optimaler" als "besser verbessert" oder "mehr verbessert" als fachsprachlich halblegales Wort anzusehen ist 😛



  • pumuckl schrieb:

    ...
    Optimal ist abgeleitet vom lateinischen optimum (das beste), dem Superlativ von bonum (gut)....

    Mag alles sein, aber die lateinischen Wurzeln schreiben üblicherweise nicht vor, wie Worte in der deutschen Grammatik zu verwenden sind. Selbst bei Wiktionary wird zwar postuliert, warum "optimaler" verboten sei (mit einer IMO ebenso unzulässigen Begründung), es wird aber trotzdem als "positiv" und nicht als "superlativ" einsortiert.
    Dass es sich (im Deutschen) also NICHT um einen Superlativ handelt, ist eigentlich unstrittig.

    Wer über die Anwendung ausländischer Grammatiken auf fremdstämmige Begriffe philosophieren möchte, dem sei mal Sebastian Sick/Zwiebelfisch ans Herz gelegt.

    Gruß,

    Simon2.



  • Optimal hat auch imd eutschen die bedeutung "das beste".

    Aber nehmen wir mal an, es gäbe die Steigerung "optimaler". Was ist eine optimalere Lösung? Eine Lösung die besser ist als "die beste". Was ist aber eine Lösung die besser ist als die beste? richtig, irgendwie doch die beste. Also wird aus der optimaleren lösung automatisch die Optimale lösung, und aus der alten Optimalen Lösung wird eine gute Lösung 😉



  • otze schrieb:

    Optimal hat auch imd eutschen die bedeutung "das beste".

    Aber nehmen wir mal an, es gäbe die Steigerung "optimaler". Was ist eine optimalere Lösung? Eine Lösung die besser ist als "die beste". Was ist aber eine Lösung die besser ist als die beste? richtig, irgendwie doch die beste. Also wird aus der optimaleren lösung automatisch die Optimale lösung, und aus der alten Optimalen Lösung wird eine gute Lösung 😉

    Manchmal ist die optimale Lösung keine gute Lösung. Vielleicht gibt es keine gute Lösung. Dann wäre die am wenigsten schlechte Lösung die optimale Lösung ohne gut zu sein. Daher wäre die vorige optimale Lösung, die ja doch nicht optimal war, auch keine gute Lösung 😃 .

    Ansonsten sehe ich es genauso, daß es keine optimalere Lösung geben kann. Höchtens einen Lösung, die näher an der optimalen Lösung dran ist. Das wäre dann eine optimierte Lösung. Und das ist es, was der Optimierer im Compiler macht.



  • Simon2 schrieb:

    Dass es sich (im Deutschen) also NICHT um einen Superlativ handelt, ist eigentlich unstrittig.

    Was aber trotzdem nicht bedeutet, dass es dazu einen Komparativ und Superlativ geben muss. Nehmen wir beispielsweise Worte wie "endgueltig", "positiv", "neutral", "leer" usw. die absolute Eigenschaften beschreiben (im Vergleich zu relativen, wie hell, laut, schnell etc.) Es gibt nichts "endgueltigeres", "positiveres", "neutraleres" oder "leereres", "optimaleres".

    http://de.wikipedia.org/wiki/Adjektiv#Steigerungsformen
    http://de.wikipedia.org/wiki/Absolutadjektiv
    http://de.wikipedia.org/wiki/Pleonasmus



  • Och, ich würde schon sagen das es "positiver" gibt. Genauso wie es "größer" gibt. "Positiver" ist ferner der Null als "positiv". Man kann etwas "positiver" sehen als jemand anders. Ob das sprachlich richtig ist, ist mir allerdings schnurz.



  • Rein mathematisch ist positiv rechts von der Null, nicht fern der Null. Und rechter als etwas anderes sein kenne ich eigentlich nur im politischen Sinne. 😃



  • Wenn Fellhuhn recht hätte mit seiner definition, wäre negativ auch recht positiv...ausser wir definieren negativ so, dass es näher an null ist:D

    5 ist negativer als 6 👍



  • Negativ ist ja schon kleiner als 0 per Definition. 😛
    -4 ist negativer als 4 und -5 ist negativer als -4. 😉



  • argh... seitwann kann eine Zahl negativer sein, als eine andere? Entweder, sie ist negativ, positiv oder 0.
    eine Zahl kann größer oder kleiner als eine andere sein, aber nicht "positiver"

    genauso kann eine Lösung besser oder schlechter als eine andere sein, aber optimal bleibt das beste, was man aus der gegenwärtigen Situation erreichen kann, es kann aber durchaus bessere Lösungen als die optimale geben, allerdings sind diese dann nicht machbar. Besser als die Initialisierungsliste wäreeine automatisch richtige Initialisierung, aber das ist schlicht nicht möglich, daher stellt die Initialisierungsliste die optimale (bestmögliche) Lösung dar

    Ihr definiert doch einen boolean doch auch nicht als Fließkommazahl



  • Aber wenn ein Wert boolscher ist als ein anderer... :p



  • pumuckl schrieb:

    ...Es gibt nichts ..."leereres"...

    Hmmm, dann ist das halbvoll Glas nicht leerer als das volle ?

    tntnet schrieb:

    ...Ansonsten sehe ich es genauso, daß es keine optimalere Lösung geben kann. Höchtens einen Lösung, die näher an der optimalen Lösung dran ist. Das wäre dann eine optimierte Lösung...

    Also "optimiert" ist von der Wortverwendung äquivalent zu "verbessert" - und das drückt nicht dasselbe aus wie "besser" (bezieht sich auf einen Prozess und weniger auf einen Zustand).

    An alle, die unter "Komparativ" immer nur "Steigerungsform" verstehen (wollen): Ist Dunkelgrau "schwärzer" als Hellgrau ? Ein Halbvolles Glas "leerer" als ein volles ? Ein 50m hohes Gebäude "tiefer" als ein 100m hohes ? ...

    Ihr stellt Euch selbst ein Bein, indem ihr die Vergleichsform aus der deutschen Sprache streicht und wenn dann noch mathematische Definition von Steigerung herangezogen werden, wird's ganz krude (man käme ja auch nicht auf die Idee, an einen Kerl mit stetigem Charakter die epsilon-delta-Definition anzulegen).

    Gruß,

    Simon2.



  • Simon, mir scheint Du verwechselst die Tätigkeit des Optimerens mit dem Zustand des Optimalen. Natürlich ist ein optimierter Code noch lange nicht optimal. Wäre er das, dann könnte man keinen optimaleren schreiben.



  • Simon2 schrieb:

    Hmmm, dann ist das halbvoll Glas nicht leerer als das volle ?

    ein Glas ist entweder voll, leer oder irgendwas dazwischen... aber ein Glas kann nicht "leerer" oder "voller" als ein anderes sein, da beides ein fest definierter Zustand und kein variabler ist.

    tntnet schrieb:

    An alle, die unter "Komparativ" immer nur "Steigerungsform" verstehen (wollen): Ist Dunkelgrau "schwärzer" als Hellgrau ? Ein Halbvolles Glas "leerer" als ein volles ? Ein 50m hohes Gebäude "tiefer" als ein 100m hohes ? ...

    dunkelgrau ist dunkler als hellgrau, in einem halbvollen Glas ist weniger Inahlt als in einem vollen und das 50m Gebäude ist niedriger als ein 100m hohes (wobei "tief" durchaus gesteigert werden kann, aber eher bei negativen Höhen Verwendung findet

    Adjektive, die einen festen Zustand definieren (wahr, falsch, voll, leer, weiß, schwarz, usw) machen einfach keinen Sinn, gesteigert zu werden. Genauso ist optimal bereits das "Bestmögliche", lediglich ein anderes Wort dafür



  • Bis auf den ersten Punkt war aber jetzt kein wirklicher Vorteil der Initialisierungslisten dabei. Und den Nachteil das ein Schritt dazu kommt könnte auch jeder Optimerer weg machen, wenn er erkennt, dass die Variable sowieso gleich anders Initialisiert wird, was ja nicht so schwer ist, wenn man nicht gerade durch Pointer auf Pointer oder so initialisiert.
    Die anderen Sachen sind halt anders nicht erlaubt. Beim Basiskonstruktoraufruf könnte man auch einfach an den Anfang vom Konstruktor schreiben, wobei da der Aufruf über die Initialisierungsliste eigentlich ok ist. Aber bei const Variablen wäre es genauso im Konstruktor möglich. Der Compiler er sagt mir ja so schon, dass es in die Initialisierungsliste muss, dann könnte er auch so tun, als ob es da wäre.

    Am optimalersten 😉 wäre es, wenn es einfach so möglich wäre:

    class foo {
       ...
       const int i = 4;
    }
    

    Dann wäre es auch gleich für alle Konstruktoren initialisiert. Oder gibts nen anderen weg, ne Variable einmal so zu initialisieren, dass sie für alle Konstruktoren initialisiert ist?



  • rofl
    Da hab ich ja was losgetreten.

    Die Sache ist doch relativ einfach. Da "optimal" ein Superlativ ist, gibt es keine Abstufungen von "optimal". Damit auch keine Steigerungsform.

    Logisch bzw. mathematisch betrachtet könnte man sagen dass ein leeres Glas "leerer" als ein nicht leeres Glas ist. Ähnliche Aussagen wären...
    * Ein rotes Tuch ist roter als ein grünes Tuch
    * Kurt Cobain ist toter als Madonna
    * Ein gesetztes Bit ist gesetzter als ein ungesetztes Bit
    * Eine geschlossene Tür ist geschlossener als eine offene Tür
    * Eine verheiratete Person ist verheirateter als eine nicht verheiratete Person
    etc.

    Logisch betrachtet machen diese Aussagen Sinn, allerdings vom Sprachlichen her kommen sie jedem komisch vor, und das mit Recht; wenn ich mich nicht irre sind sie im Deutschen nämlich allesamt Blödsinn.

    Und mit "optimal" ist es im Prinzip genau dasselbe. Wieso bloss kommt "toter" oder "geschlossener" gleich jedem komisch und falsch vor, aber bei "optimaler" denkt sich keiner was? Hm.



  • @hbjkl: Was wolltest Du jetzt eigentlich hören? Der „Vorteil“ von Initialisierungslisten ist halt, dass es ohne sie in C++ nicht geht. Man kann argumentieren, inwiefern sie wirklich nötig sind und ob man es beim Sprachdesign anders hätte lösen können. War es das, was Du diskutieren wolltest?

    Oder war Deine Frage konkret auf den Vorteil in C++ bezogen (das sollte ja jetzt beantwortet sein)?



  • Gibt es denn einen Weg von dieser zwanghaften Code duplication weg zu kommen?

    class a{
    public:
       a():klasse(8,7,6){}
       a(int n):klasse(8,7,6){}
       a(double n):klasse(8,7,6){}
    private:
       Klasse klasse;
    };
    

    Also sowas in der Art

    class a{
    public:
       a(){}
       a(int n){}
       a(double n){}
    private:
       Klasse klasse(8,7,6);
    };
    

Anmelden zum Antworten