Methoden mit bool-Parametern und "Lesbarkeit" im Kontext
-
@CStoll: Warum tust du dir das an?
-
CStoll schrieb:
Xin schrieb:
Es sind auch schon Fälle dabei gewesen, die jahrelang gegen mich sticheln und mich für ignorant, arrogant usw. erklärten und wirklich böswillig gegen mich vorgingen, mir die Worte im Mund herumdrehten und damit auch erstmal kraftig Aufwind bekamen. Auf einer Welle mitschwimmen ist schließlich nicht schwer.
Die Welle bricht entweder mich oder die Welle bricht an mir.
Es ist noch kein Fall dabei gewesen, wo ein Derartiger sich auf Dauer nicht selbst mehr geschadet hat als mir oder ich einer Welle aus dem Weg gehen musste. Mit ein wenig Geduld hängt sich jeder irgendwann zu weit aus dem Fenster und stützt, dafür muss ich nicht eingreifen. Ich muss niemanden ans Fenster bringen, noch rausstoßen - aber ich fange auch nur die wenigsten auf.
Nur die Unregistrierten können sicher sein, dass sie nicht tief fallen.Meinst du nicht, daß du dich mit dieser Aussage gerade selber sehr weit aus dem Fenster gelehnt hast?
Unglaublich, dass ich das überlesen habe. Das ist ja der Hammer.
-
Erstaunlich aber, dass du meine "ach so unkonstruktiven Einwürfe" (Einheitenlosen Größen wie einem Cosinus oder einer Brechzahl können beliebig irgendwelche Butterbrote zugewiesen werden; in einer größeren Formel kann man nicht erkennen, wo der Typ verloren ging) 5 Seiten später nach heftiger Erklärungsnot als "Geschmackssache" beziehungsweise "Compiler-Unzulänglichkeit" einstufen musstest.
-
Thread schließen
-
Undertaker schrieb:
Shade Of Mine schrieb:
Was natürlich möglich wäre - wäre eine "static" Vererbung wie sie manchmal gefordert wird. Also eine Vererbung die keine ist-ein Beziehung repräsentiert, sondern lediglich Code-Reuse Zwecken dient. Hier gäbe es dann keine Konvertierung von Derived zu Base. Ich kenne aber keine Sprache die dieses Konzept nutzt - ich habe in C++ ein paar mal Forderungen diesbezüglich gesehen, aber ich glaube das Standardisierungs Komitee ist Meilenweit davon entfernt sowas zu integrieren.
huch? ich dachte immer sprachen wie C++ können von haus aus *nur* statische vererbung, also wer von wem erbt, ist im fest im quellcode verankert. deshalb gibt es ja auch verschiedene software-tricks (z.b. decorator-pattern) und laufzeitumgebungen (sowas wie COM), um dynamik reinzubringen.

Mir fehlen die Vokabeln für diese Art Beziehung die ich meine. In C++ kam es unter dem Namen "static Vererbung" auf, da man statt ": public Foo" einfach ": static Foo" schreiben können sollte - zum Reuse der Schlüsselwörter.
Lassen wir den Namen also einfach mal aussen vor - meines wissens gibt es keine Sprache die dieses Konzept direkt unterstützt.
Worum es dabei geht ist, eine Vererbung einzuführen die keine ist-ein Beziehung bedeutet. Wenn also Meter von Integer erbt, dann hat Meter alle Methoden von Integer aber ist eben kein Integer. Das würde sich darin Niederschlagen dass es keine Konvertierung von Meter zu Integer gibt (es sei denn man definiert sie sich explizit selber). Diese Vererbung wird also eher als ein "has-a" oder "is-implemented-in-terms-of" verstanden - auch wenn sie aussieht wie eine public Vererbung.
Der Vorteil davon ist besserer Code-Reuse. So könnte zB ein Stream static von seinem stream-buffer erben und man muss in stream nicht die ganzen streambuffer Methoden forwarden. Das wird eben dann interessant wenn man value types hat wo man keine ist-ein Beziehung haben will, aber dennoch die Vorteile der public Vererbung (keine forward methoden) haben will. Anderes Beispiel: ich will dass bei vector::operator[] eine exception fliegt. Also erbe ich static von vector und verdecke den operator[]. Das wäre mit public Vererbung sehr ungut, da man einfach einen impliziten upcast machen könnte und schon hat man den range check umgangen - vermutlich sogar ohne es gewollt zu haben. Wenn man nun static erben würde, wäre ein Upcast nicht möglich, da range_checked_vector kein vector ist. Dennoch muss aber die Methoden nicht forwarden, wie es bei Komposition nötig wäre. Das wird eben dann interessant, wenn wir mit Templates hantieren wo ich die anderen Methoden garnicht kenne. zB könnte vector ja ebenfalls static von einem Policy erben dass je nachdem wie vector nun implementiert ist, slicing operationen anbietet oder nicht. Das nur mal so als Gedankenspiel.
Xins super Sprache mag diese static-Vererbung haben und somit seine Ansätze rechtfertigen. Denn wie gesagt - sobald man von einem value typen erbt und es kein ist-ein bedeutet, hat man fast alle Probleme seines Ansatzes eliminiert.
Da C++ dies aber nicht bietet - würde ich eben eine C++ Lösung nehmen die ebenfalls keine dieser genannten Nachteile hat. Zumal der Ansatz mit Meter/Meter einfach nur genial ist.
PS:
@Xin:
weisst du auch warum die Diskussionen so verlaufen? Ich meine dass Unregistrierte dich anpöbeln und so weiter? Weil dich keiner mehr ernst nehmen kann. Nicht falsch verstehen - wir haben versucht zu diskutieren aber du lässt dich ja auch keien Diskussion ein. Ich widerkäue keine längst widerlegten Sachen sondern lediglich Sachen die du einfach ignorierst. So ziemlich jeder hier denkt ähnlich über deinen Ansatz: nämlich dass er Quark ist.Ich kann mich deshalb nur noch einmal wiederholen: wirf uns keinen Kindergarten vor oder beleidige uns weil wir anders denken als du. Es ist nicht nur unhöflich sondern auch sehr unreif sich so zu verhalten.
Wenn du von deinem hohen Ross dass du unfehlbar bist einmal herunter kommst, könnte man versuchen weiter zu diskutieren. Aber ein kleiner Tipp: Niemand ist unfehlbar. Niemand weiß alles. Jeder macht Fehler. Es mag sein, dass wir allesamt falsch liegen und du den einzig wahren Weg gefunden hast - ich habe das bereits zweimal gesagt. Lediglich solltest du irgendwann zu einem Punkt kommen wo du Reflektieren solltest ob die Welt nicht vielleicht gegen dich ist weil du Blödsinn laberst und es garnichts persönliches ist was die Leute gegen dich haben. Es ist leicht zu sagen "die Welt ist gegen mich" und "alles sind Idioten" - aber meine Erfahrungen haben mir bis jetzt immer gezeigt, dass dies nie so ist.
Ich war schon öfters in der Situation wo ich mir gedacht habe "warum macht das denn Niemand so? Mein Konzept ist soviel besser". Irgendwann kam ich dann eben auf die Schwachstellen drauf und musste einsehen, dass die Welt doch nicht komplett verdummt ist, sondern ich einfach arrogant und blind war.
Deshalb wäre ich sehr vorsichtig mit solchen Aussagen wie du sie tätigst.
-
@Mr.N: Weiß ich selber nicht so recht.
@Xin: Wenn ich auf eine Frage keine verwertbare Antwort erhalte, frage ich nach - besonders wenn die vorhandenen Antworten dem Thema nur ausweichen. Du hast zwar auf meine Fragen (anfangs) reagiert, aber dabei auch an der Frage vorbeigeredet.
Und spätestens an dem Punkt, wo du angefangen hast, alles und jeden als "Kindergarten" zu bezeichnen, ist das Niveau des Threads endgültig in den Keller gegangen. (das begann etwa auf Seite 20 - und auch ein "das soll keine Beleidigung sein" als Einleitung mindert den Effekt nur unwesentlich)
(vorher hattest du die Bezeichung "Kindergarten" schon zweimal erwähnt - gegenüber ulfbulf und als Reaktion auf "Post 101")---
OK, mein Vorschlag: Wir vergessen den kompletten Thread und fangen noch einmal bei 0 an (am besten in einem neuen Thread). Einverstanden?
-
CStoll schrieb:
@Xin: Wenn ich auf eine Frage keine verwertbare Antwort erhalte, frage ich nach - besonders wenn die vorhandenen Antworten dem Thema nur ausweichen. Du hast zwar auf meine Fragen (anfangs) reagiert, aber dabei auch an der Frage vorbeigeredet.
Ja, das kann er gut.
OK, mein Vorschlag: Wir vergessen den kompletten Thread und fangen noch einmal bei 0 an (am besten in einem neuen Thread). Einverstanden?
In nem anderen Forum bitte.
-
Shade Of Mine schrieb:
Was natürlich möglich wäre - wäre eine "static" Vererbung wie sie manchmal gefordert wird. Also eine Vererbung die keine ist-ein Beziehung repräsentiert, sondern lediglich Code-Reuse Zwecken dient. Hier gäbe es dann keine Konvertierung von Derived zu Base. Ich kenne aber keine Sprache die dieses Konzept nutzt - ich habe in C++ ein paar mal Forderungen diesbezüglich gesehen, aber ich glaube das Standardisierungs Komitee ist Meilenweit davon entfernt sowas zu integrieren.
Mit einer static-Vererbung wäre der ganze Ansatz von Xin natürlich weit besser - da man eine Menge Nachteile ausgleichen würde da es keine impliziten Konvertierungen mehr gibt. Dann wäre es sogar möglich, dass Xins Ansatz eine ziemlich ideale Lösung ist - je nachdem wie static-Vererbung implementiert ist.
Mir fällt dazu grade nur private Vererbung ein, aber ich vermute, ich missverstehe, was Du meinst.
Ich wäre aber interessiert, das genau zu verstehen.Shade Of Mine schrieb:
Was deine Literatur Hinweise betrifft: wir haben dir versucht zu erklären was du falsch verstanden/interpretiert hast. Aber auch dort wolltest du nicht hören.
Erklärt wurde viel, leider meist haarscharf an der Logik vorbei und häufig auch komplett in die andere Richtung.
Darauf wollte ich wirklich nicht hören.
-
Wo Du grad so eifrig postest und ja auch auf alles eingehst, könntest Du da noch schnell was zu CStolls Ausgabe-Beispiel mit dem Volumen sagen?
-
Shade Of Mine schrieb:
Worum es dabei geht ist, eine Vererbung einzuführen die keine ist-ein Beziehung bedeutet. Wenn also Meter von Integer erbt, dann hat Meter alle Methoden von Integer aber ist eben kein Integer. Das würde sich darin Niederschlagen dass es keine Konvertierung von Meter zu Integer gibt (es sei denn man definiert sie sich explizit selber). Diese Vererbung wird also eher als ein "has-a" oder "is-implemented-in-terms-of" verstanden - auch wenn sie aussieht wie eine public Vererbung.
Willkommen in Genesys.
Das ist etwa das, wovon ich die WindowFlags abgeleitet habe.
Shade Of Mine schrieb:
Da C++ dies aber nicht bietet - würde ich eben eine C++ Lösung nehmen die ebenfalls keine dieser genannten Nachteile hat. Zumal der Ansatz mit Meter/Meter einfach nur genial ist.
Würde ich auch... und muss ich auch, weil C++ keine Ableitung von int erlaubt.
Edit: Was eben nicht bedeutet, dass die theoretische Möglichkeit bestünde, es auch auf dem Ansatz zu machen, dessen theoretische Existenz ich hier verteidige.Den Ansatz Meter/Meter hat mir noch keiner gezeigt. Davon wurde hier gesprochen, aber umgesetzt hat ihn noch niemand. Dazu vielleicht nochmal mein Beispiel: Zwei Kräfte zeigen in orthogonale Richtungen. Hier kürzt sich kg*m/s² mit kg*m/s². Ist das jetzt die gleiche Einheit wie Meter/Meter? Und wenn ja wieso kürzt sich kg/s² raus, aber Meter/Meter bliebt?
CStoll schrieb:
Und spätestens an dem Punkt, wo du angefangen hast, alles und jeden als "Kindergarten" zu bezeichnen, ist das Niveau des Threads endgültig in den Keller gegangen. (das begann etwa auf Seite 20 - und auch ein "das soll keine Beleidigung sein" als Einleitung mindert den Effekt nur unwesentlich)
Der Thread war etwa ab Seite 15 kaputt. Und wenn ich nach 15 Seiten Beleidigungen das ganze als Kindergarten einstufe, dann ist das nicht der Punkt, wo ich derjenige bin, der mit Beleidigungen anfängt.
CStoll schrieb:
(vorher hattest du die Bezeichung "Kindergarten" schon zweimal erwähnt - gegenüber ulfbulf und als Reaktion auf "Post 101")
Das würde ich jetzt auch nicht anders einstufen.
CStoll schrieb:
OK, mein Vorschlag: Wir vergessen den kompletten Thread und fangen noch einmal bei 0 an (am besten in einem neuen Thread). Einverstanden?
Zwischen uns? Sicher, warum nicht.
Das Herr der Unregistrierten hat sich ja bereits dazu geäußert.
Jester schrieb:
Wo Du grad so eifrig postest und ja auch auf alles eingehst, könntest Du da noch schnell was zu CStolls Ausgabe-Beispiel mit dem Volumen sagen?
Nein, den das habe ich im Verlauf des Threads schon zwei- oder dreimal gesagt. Ich übertitelte das Protokoll nicht um sonst als Post-Mortem. Ich werde das Thema auf keinen Fall weiterführen.
-
Xin schrieb:
Mir fällt dazu grade nur private Vererbung ein, aber ich vermute, ich missverstehe, was Du meinst.
Ich wäre aber interessiert, das genau zu verstehen.Kleines Code Beispiel:
class Vector { public: int get(int pos) {} int size() {} }; class RangeCheckedVector : static Vector { public: int get(int pos) { if(0 <= pos && pos < size()) return Vector::get(pos); else throw range_exception(); } };Wenn wir hier nun static durch public ersetzen, ist folgender Code fehlerhaft:
int foo(Vector const& vec) { return vec.get(10); } RangeCheckedVector v; foo(v);Mit static würde dieser Code einen Fehler liefern. Ohne static Vererbung müsste man den Code also so schreiben:
class RangeCheckedVector { private: Vector impl; public: int get(int pos) { if(0 <= pos && pos < size()) return impl.get(pos); else throw range_exception(); } int size() { return impl.size(); } };Der Vorteil von static ist nun, dass wir size nicht forwarden müssen - was interessant wird, wenn wir ein Policy haben:
template<typename Policy> class Vector : static Policy { public: int get(int pos) {} int size() {} }; template<typename Policy> class RangeCheckedVector : static Vector<Policy> { public: int get(int pos) { if(0 <= pos && pos < size()) return Vector::get(pos); else throw range_exception(); } }; class Policy { public: int sum_all_elements() {} }; RangeCheckedVector<Policy> v; v.sum_all_elements();Dies wäre mit Komposition oder private Vererbung nicht möglich.
In wie weit dies sinnvoll ist, sei mal dahin gestellt. Denn wie gesagt es gibt AFAIK keien Sprache die das bietet - denn so nett es auch aussieht, man kommt sehr gut ohne aus. Es ist aber vorallem dann interessant, wenn man von value typen erben will - denn public von value typen erben ist böse.
Nachtrag:
Xin schrieb:
Würde ich auch... und muss ich auch, weil C++ keine Ableitung von int erlaubt.
Edit: Was eben nicht bedeutet, dass die theoretische Möglichkeit bestünde, es auch auf dem Ansatz zu machen, dessen theoretische Existenz ich hier verteidige.C++ bietet aber keine static Vererbung und somit ist es nicht möglich. Du hast in allen deinen Posts nicht ein Wort davon verloren dass du ein Konzept wie diese static Vererbung haben willst.
Du hast argumentiert dass man um die Konvertierung die eine ist-ein Beziehung bedeutet herum kommen kann und hast abstrusive Bedingungen aufgestellt wie eben nur explicit CTors und dergleichen und hast somit versucht die Symptome zu bekämpfen nicht aber die Ursache der Probleme.
-
Xin schrieb:
Zwei Kräfte zeigen in orthogonale Richtungen. Hier kürzt sich kg*m/s² mit kg*m/s².
Wieso das?
Xin schrieb:
Ist das jetzt die gleiche Einheit wie Meter/Meter? Und wenn ja wieso kürzt sich kg/s² raus, aber Meter/Meter bliebt?
meter/Meter wird natürlich zu "einheitenlos", allerdings nur solche konstruktionen, in deinem Ansatz ist alles implizit einheitenlos.
-
Xin schrieb:
Den Ansatz Meter/Meter hat mir noch keiner gezeigt. Davon wurde hier gesprochen, aber umgesetzt hat ihn noch niemand.
http://boost-consulting.com/vault/index.php?&direction=0&order=&directory=Units
-
Shade Of Mine schrieb:
Xin schrieb:
Mir fällt dazu grade nur private Vererbung ein, aber ich vermute, ich missverstehe, was Du meinst.
Ich wäre aber interessiert, das genau zu verstehen.Kleines Code Beispiel:
Dies wäre mit Komposition oder private Vererbung nicht möglich.
Ich verstehe Deine Idee, ich finde sie gut, weil ich komme ja gewissermaßen von dieser Idee mit den WindowFlags in diesen Thread.
Aber Dein Codebeispiel hakt an einer Stelle: Der RangedCheckedVector ist kein Vector, ergo musst Du eine Basisklasse haben oder zwei foo()-Funktionen.Die optimale Lösung hier wäre OOP zu verwenden, also die get Funktion virtuell zu machen und öffentlich abzuleiten.
Wenn das nicht möglich ist, weil das Interface von Vector Dir das nicht erlaubt, könnte die "static-Vererbung" Dir eine Basisklasse geben, die sich wie ein Vector verhält, aber nachträglich die Funktion get() virtuell macht.
Womit wir uns von OOP in Richtung AOP bewegen. (Aspektorientierte Programmierung)Shade Of Mine schrieb:
In wie weit dies sinnvoll ist, sei mal dahin gestellt. Denn wie gesagt es gibt AFAIK keien Sprache die das bietet - denn so nett es auch aussieht, man kommt sehr gut ohne aus. Es ist aber vorallem dann interessant, wenn man von value typen erben will - denn public von value typen erben ist böse.
AOP ist ein Ansatz, der noch recht jung ist. OOP ist seit sagen wir 10 Jahren Massentauglich, C++ gibt's seit 20 Jahren und Simula noch viel länger. Bis AOP in C++ existiert und massentauglich wird, vergeht noch das eine oder andere Jahrzehnt.
Shade Of Mine schrieb:
Nachtrag:
Xin schrieb:
Würde ich auch... und muss ich auch, weil C++ keine Ableitung von int erlaubt.
Edit: Was eben nicht bedeutet, dass die theoretische Möglichkeit bestünde, es auch auf dem Ansatz zu machen, dessen theoretische Existenz ich hier verteidige.C++ bietet aber keine static Vererbung und somit ist es nicht möglich. Du hast in allen deinen Posts nicht ein Wort davon verloren dass du ein Konzept wie diese static Vererbung haben willst.
Doch, ziemlich weit vorne, als ich sagte, dass ich die WindowFlags aus einem Genesys-Konzept übernommen habe und natürlich nicht perfekt auf C++ umsetzen konnte. Dort beschrieb ich es nicht als "static Vererbung", sondern aus Mischung von privater Vererbung (keine ist-ein-Beziehung) und öffentlicher (die Elemente werden in den Namensraum der abgeleiteten Klasse übernommen).
Shade Of Mine schrieb:
Du hast argumentiert dass man um die Konvertierung die eine ist-ein Beziehung bedeutet herum kommen kann und hast abstrusive Bedingungen aufgestellt wie eben nur explicit CTors und dergleichen und hast somit versucht die Symptome zu bekämpfen nicht aber die Ursache der Probleme.
An den expliziten CTors kommt man leider immernoch nicht vorbei. ^^
-
@Shade
Du willst durch static Vererbung die Methoden und Attribute erben, aber die implizite Typumwandlung verbieten? Also eine zweite Vererbungsmöglichkeit ganz ohne Typen?
Da würde ich mich eher Code erzeugender Programmiermodelle bedienen, da sind wir imho im Bereich der Metaprogrammierung.
Sowas würde ich nicht gerne in einem Klassenmodell sehen, sondern davon abgekapselt.
Es geht ja nicht darum einen Typ zu definieren, eine Vererbungshirachie, sondern nur darum Code/Schreibarbeit zu sparen.
Meiner Meinung nach trennt man die beiden Bereiche "Code Redundanzen" und "OOP - Typ- / Klassensystem" leider viel zu selten.So sehe ich das.
-
Xin schrieb:
Shade Of Mine schrieb:
Worum es dabei geht ist, eine Vererbung einzuführen die keine ist-ein Beziehung bedeutet. Wenn also Meter von Integer erbt, dann hat Meter alle Methoden von Integer aber ist eben kein Integer. Das würde sich darin Niederschlagen dass es keine Konvertierung von Meter zu Integer gibt (es sei denn man definiert sie sich explizit selber). Diese Vererbung wird also eher als ein "has-a" oder "is-implemented-in-terms-of" verstanden - auch wenn sie aussieht wie eine public Vererbung.
Willkommen in Genesys.
Das ist etwa das, wovon ich die WindowFlags abgeleitet habe.
OK, das Problem hatten wir schon weiter vorne in diesem Thread - C++ ist nicht Genesys, und manche Sprachkonstrukte, die du in Genesys integriert hast, lassen sich nur ungenügend in C++ nachbilden. Du hast deine (afair) Typerweiterungen - und eine Länge als "Erweiterung" von int wäre durchaus sinnvoll - und du nimmst dir die C++ Vererbung und versuchst, das Konzept damit umzusetzen. Letzteres scheitert an der unterschiedlichen Semantik.
Xin schrieb:
Shade Of Mine schrieb:
Da C++ dies aber nicht bietet - würde ich eben eine C++ Lösung nehmen die ebenfalls keine dieser genannten Nachteile hat. Zumal der Ansatz mit Meter/Meter einfach nur genial ist.
Würde ich auch... und muss ich auch, weil C++ keine Ableitung von int erlaubt.
Edit: Was eben nicht bedeutet, dass die theoretische Möglichkeit bestünde, es auch auf dem Ansatz zu machen, dessen theoretische Existenz ich hier verteidige.Nein, du hast hier die (theoretische) Möglichkeit thematisiert, mit C++ Mitteln von build-in's abzuleiten. Daß du dir ein neues Ableitungs-Konzept mit eigener Semantik wünschst, hast du nie erwähnt.
Xin schrieb:
Den Ansatz Meter/Meter hat mir noch keiner gezeigt. Davon wurde hier gesprochen, aber umgesetzt hat ihn noch niemand. Dazu vielleicht nochmal mein Beispiel: Zwei Kräfte zeigen in orthogonale Richtungen. Hier kürzt sich kg*m/s² mit kg*m/s². Ist das jetzt die gleiche Einheit wie Meter/Meter? Und wenn ja wieso kürzt sich kg/s² raus, aber Meter/Meter bliebt?
Meter/Meter kürzt sich genauso heraus wie alle übrigen Einheiten - wenn zwei gleichartige Größen dividiert werden, bleibt in jedem Fall ein einheitenloser Wert übrig.
(btw, was die Orthogonalität damit zu tun hat, müsstest du mir nochmal erklären)Xin schrieb:
CStoll schrieb:
Und spätestens an dem Punkt, wo du angefangen hast, alles und jeden als "Kindergarten" zu bezeichnen, ist das Niveau des Threads endgültig in den Keller gegangen. (das begann etwa auf Seite 20 - und auch ein "das soll keine Beleidigung sein" als Einleitung mindert den Effekt nur unwesentlich)
Der Thread war etwa ab Seite 15 kaputt. Und wenn ich nach 15 Seiten Beleidigungen das ganze als Kindergarten einstufe, dann ist das nicht der Punkt, wo ich derjenige bin, der mit Beleidigungen anfängt.
Wenn du der Meinung bist, von irgendwem beleidigt worden zu sein, kannst du das dem betroffenen auch direkt sagen - zu dem Zeitpunkt wäre es vermutlich noch möglich gewesen, die Missverständnisse aufzuklären. Aber blind auf alles zu schießen, was sich bewegt, hilft niemandem.
Xin schrieb:
CStoll schrieb:
OK, mein Vorschlag: Wir vergessen den kompletten Thread und fangen noch einmal bei 0 an (am besten in einem neuen Thread). Einverstanden?
Zwischen uns? Sicher, warum nicht.
OK, das ist ein Wort.
Xin schrieb:
Jester schrieb:
Wo Du grad so eifrig postest und ja auch auf alles eingehst, könntest Du da noch schnell was zu CStolls Ausgabe-Beispiel mit dem Volumen sagen?
Nein, den das habe ich im Verlauf des Threads schon zwei- oder dreimal gesagt. Ich übertitelte das Protokoll nicht um sonst als Post-Mortem. Ich werde das Thema auf keinen Fall weiterführen.
Ja, du stufst solche Fehler als "Angelegenheit des Programmierers" ein - und erwartest demzufolge, daß er keine Tipfehler in seine Programme einbaut.
-
Xin schrieb:
Nein, den das habe ich im Verlauf des Threads schon zwei- oder dreimal gesagt. Ich übertitelte das Protokoll nicht um sonst als Post-Mortem. Ich werde das Thema auf keinen Fall weiterführen.
In diesem Fall geht ganz offensichtlich Typinformation verloren bzw. wird nicht verwendet, so dass ein Fehler der im einen Fall zur Compilezeit bemerkt wird, hier erst zur Laufzeit eintritt. Das ist ein handfester Vorteil des Systems ohne implizite int-Umwandlung und eben keine Geschmacksache mehr. Inwiefern Du darauf dann eingegangen bist sehe ich ehrlich gesagt nicht. Und nein: Jegliche berechtigte Kritik als Geschmacksache abzutun ist nicht darauf eingegangen.
-
CStoll schrieb:
Xin schrieb:
Shade Of Mine schrieb:
Worum es dabei geht ist, eine Vererbung einzuführen die keine ist-ein Beziehung bedeutet. Wenn also Meter von Integer erbt, dann hat Meter alle Methoden von Integer aber ist eben kein Integer. Das würde sich darin Niederschlagen dass es keine Konvertierung von Meter zu Integer gibt (es sei denn man definiert sie sich explizit selber). Diese Vererbung wird also eher als ein "has-a" oder "is-implemented-in-terms-of" verstanden - auch wenn sie aussieht wie eine public Vererbung.
Willkommen in Genesys.
Das ist etwa das, wovon ich die WindowFlags abgeleitet habe.
OK, das Problem hatten wir schon weiter vorne in diesem Thread - C++ ist nicht Genesys, und manche Sprachkonstrukte, die du in Genesys integriert hast, lassen sich nur ungenügend in C++ nachbilden. Du hast deine (afair) Typerweiterungen - und eine Länge als "Erweiterung" von int wäre durchaus sinnvoll - und du nimmst dir die C++ Vererbung und versuchst, das Konzept damit umzusetzen. Letzteres scheitert an der unterschiedlichen Semantik.
Xin schrieb:
Shade Of Mine schrieb:
Da C++ dies aber nicht bietet - würde ich eben eine C++ Lösung nehmen die ebenfalls keine dieser genannten Nachteile hat. Zumal der Ansatz mit Meter/Meter einfach nur genial ist.
Würde ich auch... und muss ich auch, weil C++ keine Ableitung von int erlaubt.
Edit: Was eben nicht bedeutet, dass die theoretische Möglichkeit bestünde, es auch auf dem Ansatz zu machen, dessen theoretische Existenz ich hier verteidige.Nein, du hast hier die (theoretische) Möglichkeit thematisiert, mit C++ Mitteln von build-in's abzuleiten. Daß du dir ein neues Ableitungs-Konzept mit eigener Semantik wünschst, hast du nie erwähnt.
!?!?
Mir fehlen die Worte. Das sind die Punkte, wo ich etwas schreibe, wie "Liebelein" oder "<stirnklatsch>".
Schau Dir an, was Du unterhalb von "Willkommen in Genesys" schreibst und dann direkt darunter dies.CStoll schrieb:
Xin schrieb:
Den Ansatz Meter/Meter hat mir noch keiner gezeigt. Davon wurde hier gesprochen, aber umgesetzt hat ihn noch niemand. Dazu vielleicht nochmal mein Beispiel: Zwei Kräfte zeigen in orthogonale Richtungen. Hier kürzt sich kg*m/s² mit kg*m/s². Ist das jetzt die gleiche Einheit wie Meter/Meter? Und wenn ja wieso kürzt sich kg/s² raus, aber Meter/Meter bliebt?
Meter/Meter kürzt sich genauso heraus wie alle übrigen Einheiten - wenn zwei gleichartige Größen dividiert werden, bleibt in jedem Fall ein einheitenloser Wert übrig.
(btw, was die Orthogonalität damit zu tun hat, müsstest du mir nochmal erklären)Meter/Meter ergibt einen Winkel, wenn die Teilkräfte/Teilstrecken rechtwinklig sind. Satz des Pythagoras, Gegenkathete ist rechtwinklig zur Ankathete. Sind die Größen abhängig hast Du eine Hypothenuse von 0, also kein Dreieck, keine Winkel.
CStoll schrieb:
Xin schrieb:
Der Thread war etwa ab Seite 15 kaputt. Und wenn ich nach 15 Seiten Beleidigungen das ganze als Kindergarten einstufe, dann ist das nicht der Punkt, wo ich derjenige bin, der mit Beleidigungen anfängt.
Wenn du der Meinung bist, von irgendwem beleidigt worden zu sein, kannst du das dem betroffenen auch direkt sagen - zu dem Zeitpunkt wäre es vermutlich noch möglich gewesen, die Missverständnisse aufzuklären. Aber blind auf alles zu schießen, was sich bewegt, hilft niemandem.
Ich schieße nicht auf jeden. Ich beschränke mich auf diejenigen, die es in meinen Augen verdient haben.
-
Mr. N schrieb:
Xin schrieb:
Den Ansatz Meter/Meter hat mir noch keiner gezeigt. Davon wurde hier gesprochen, aber umgesetzt hat ihn noch niemand.
http://boost-consulting.com/vault/index.php?&direction=0&order=&directory=Units
Nachdem ich das mal genauer angesehen habe, stelle ich fest, dass die fast genau den von mir skizzierten Weg gehen. :p
-
Xin schrieb:
Ich schieße nicht auf jeden. Ich beschränke mich auf diejenigen, die es in meinen Augen verdient haben.
Oder anders gesagt: Du widerlegst nur die Aussagen bei denen Dir auf die schnelle was einfällt. Alles andere wird einfach ignoriert, pardon, haben's nicht verdient.