<Split aus "C/C++ oder C#">



  • Letztlich ist es also schlicht quatsch zu versuchen die Mächtigkeit von sowas als formales Argument anzuführen.

    also wenn du vorher nicht definierst was du unter mächtig verstehst ist es wohl zuerst als Vergleich zu sehen

    und ein Vergleich setzt nun mal pro/contra aussagen voraus. Du hast mit deiner Aussage Verergung == nicht Vererbung gesetzt also sind die gleichwertig. Das können sie aber nur sein wenn sie in allen Punkten gleich sind. Das sind wir uns wohl Einig das das nicht der Fall sein kann.

    welche Rolle die Mehrfachvererbung nun gegenüber der Vererbung spielt...das kann ich dir nicht sagen, darum ging es mir auch nie.

    Villeicht hab ich dich wirklich falsch verstanden...

    aber:

    was ist realisierbar. Antwort: mit Vererbung alles und ohne auch. => kein Unterschied

    diese Aussage ist wohl absolut Relativ. Es stellt sich nicht die Frage was ist realisierbar sondern was will ich machen und wie kann ich es realisieren.
    Wie willst du .Net z.B. realiesieren mit dem Konzept das es beinhaltet. Es bassiert absolut auf Vererbung, also wäre es ohne diese nicht zu realisieren!



  • Wenn man nicht definiert was "gleichmächtig" heißt, dann kann man auch nicht sagen wann zwei Dinge gleichmächtig sind. Ich habe also mal eine Definition zugrundegelegt. Und zwar eine die man wenigstens ordentlich nachprüfen kann. Und es kam irgendwie nichts brauchbares raus. Wenn wir aber ein Definition wählen die nicht nachprüfbar ist, dann kann jeder alles behaupten und wir sind kein Stück weiter.

    Realisierbar sollte hier heißen: Welche denkbaren Programme sind damit implementierbar. Im Sinne von Turing-Mächtigkeit. Das ist Absolut, nicht relativ. 😉

    Wie gesagt, wenn Dir eine schlaue Vergleichsmöglichkeit einfällt, die *nicht* subjektiv ist und die sich einfach nachprüfen läßt... nur her damit. Ich finde keine. Und ich glaube auch nicht, daß es wirklich ne gute gibt. Darauf wollte ich hinweisen.



  • Jester schrieb:

    [...]

    Realisierbar sollte hier heißen: Welche denkbaren Programme sind damit implementierbar. Im Sinne von Turing-Mächtigkeit. Das ist Absolut, nicht relativ. 😉

    ich könnte jetzt behaupten das du deine allgemeine Aussage jetzt so subjektiv umformst das sie deinen Kriterien entspricht 😉

    Wie gesagt, wenn Dir eine schlaue Vergleichsmöglichkeit einfällt, die *nicht* subjektiv ist und die sich einfach nachprüfen läßt... nur her damit. Ich finde keine. Und ich glaube auch nicht, daß es wirklich ne gute gibt. Darauf wollte ich hinweisen.

    Man kann kein abgeschlossenes System messen. Jede Messung hat einen subjektiven Einfluss auf das Ergebnis.



  • Online schrieb:

    Man kann kein abgeschlossenes System messen. Jede Messung hat einen subjektiven Einfluss auf das Ergebnis.

    Wenn ich eine zwei Programmiersprachen habe kann ich mir anschaun ob beide Turing-Mächtig sind. Ist es eine nicht, so ist die andere klar mächtiger. Wo da irgendwelche subjektiven Einflüsse reinkommen ist mir schleiferhaft. Eine Sprache wird nicht turingmächtig weil ich mir das so arg wünsche.



  • Was ist mit Polymorphie? Ohne Vererbung nichts zu machen.

    Ach? Dann versuchs mal mit 'ner Scriptsprache wie PHP. ODer versuchs mal mit 'ner Sprache, die auf strukturelles statt nominatives Subtyping setzt, wie O'Caml oder die abstract interfacces von Nice.



  • Jester schrieb:

    Online schrieb:

    Man kann kein abgeschlossenes System messen. Jede Messung hat einen subjektiven Einfluss auf das Ergebnis.

    Wenn ich eine zwei Programmiersprachen habe kann ich mir anschaun ob beide Turing-Mächtig sind. Ist es eine nicht, so ist die andere klar mächtiger. Wo da irgendwelche subjektiven Einflüsse reinkommen ist mir schleiferhaft. Eine Sprache wird nicht turingmächtig weil ich mir das so arg wünsche.

    das und das hier:

    [...]Welche denkbaren Programme sind damit implementierbar. Im Sinne von Turing-Mächtigkeit.[...]

    ...das wiederspricht sich irgendwie oder? Du schreibst was von denkbaren Programmen und gleichzeitig schreibst du [...]irgendwelche subjektiven Einflüsse reinkommen ist mir schleiferhaft

    Du denkst dir also das Messverfahren aus und hast keine Subjektiven Einflüße drin? Hast du schon mal in irgendeiner Weise Messtechnik gehabt?
    Leitspruch: wer misst, misst Mist!

    Helium schrieb:

    Ach? Dann versuchs mal mit 'ner Scriptsprache wie PHP.

    kenn mich mit PHP nicht aus aber ich könnte jetzt schreien "ist doch keine P." ich lass das Thema mal lieber.

    Helium schrieb:

    die auf strukturelles statt nominatives Subtyping setzt,

    keine Ahnung wo der Unterschied ist.

    Helium schrieb:

    abstract interfacces von Nice.

    ich kenn Nice nicht aber muss man die Interface nicht vererben damit man was mit denen anfangen kann?

    Na ja gut, vielleicht hab ich Polymorphie nur falsch verstanden oder ich benutze die falschen Sprachen.



  • Online: Du willst es nicht kapieren oder?

    Turing-Mächtig heißt: Jedes Programm das man schreiben kann kann man auch damit schreiben. Das ist eine Eigenschaft, die man nachweisen oder widerlegen kann.

    Genauso wie man von einer Zahl feststellen kann, ob sie >=5 ist oder nicht. Da gibt es keine Fehler!

    Ich messe hier nichts, ich vergleiche was. Sagst Du, wenn auch, wenn Du 3+4 ausgerechnet hast und es kommt 7 raus, daß das wahrscheinlich fehlerbehaftet ist und möglicherweise 17 richtig ist?

    Und genau solche Kriterie suche ich (und versuche Dir das seit 2 Tagen zu erklären). Ich will nicht solche die butterweich sind, sondern solche die man nachprüfen kann.



  • die auf strukturelles statt nominatives Subtyping setzt,

    keine Ahnung wo der Unterschied ist.

    Bei ersterem kommt es auf die Struktur an. Wenn etwas die entsprechenden Methoden bietet ist es ein Subtyp.
    Bei letzterem kommt es an, ob ich namentlich angegeben habe, dass es sich um einen Subtyp handelt.



  • Online schrieb:

    Na ja gut, vielleicht hab ich Polymorphie nur falsch verstanden oder ich benutze die falschen Sprachen.

    Ne, weder falsch verstanden (zumindest lässt sich das nicht hieraus schließen) noch beutzt die falschen Sprachen (zumindest lässt sich das nicht hieraus schließen) - aber dein Horizont reicht nicht weit genug.



  • Jester schrieb:

    Online: Du willst es nicht kapieren oder?

    Turing-Mächtig heißt: Jedes Programm das man schreiben kann kann man auch damit schreiben. Das ist eine Eigenschaft, die man nachweisen oder widerlegen kann.

    [..]

    das war mir schon klar, du kannst viel theoretisch auseinandernehmen

    ich versuche dir die gaze Zeit zu sagen das Theorie oft an der Praxis vorbei geht. Würde Vererbung gleichwertig sein mit "Nichtvererbung" so hätte es Vererbung nie in diesem Umfang gegeben.

    Du hast in theoretischen Punkt recht aber an der Parxis geht das total vorbei

    Shade Of Mine schrieb:

    aber dein Horizont reicht nicht weit genug

    vielleicht schaue ich in eine andere Richtung



  • Online schrieb:

    ich versuche dir die gaze Zeit zu sagen das Theorie oft an der Praxis vorbei geht. Würde Vererbung gleichwertig sein mit "Nichtvererbung" so hätte es Vererbung nie in diesem Umfang gegeben.

    Was natürlich Blödsinn ist. Denn Vererbung ist eben _ein_ beliebtes Mittel - aber nicht zwangsläufig _das_ Mittel schlecht hin.

    Wenn dir Heliums Beispiele zu 'realitätsfern' sind, dann schau dir doch mal C++ an. Hier kann man zB Interfaces nahezu gänzlich ohne Vererbung machen, indem man statische Polymorphie mit Templates verwendet. Deshalb hat man in C++ ja auch größtenteils sehr flache Vererbungshierachien.

    Man muss also nicht von einem Interface erben um es zu implementieren.

    Wenn wir uns jetzt Python ansehen:
    da kann man eine Klasse erweitern ohne von ihr zu erben 🙂

    Du hast in theoretischen Punkt recht aber an der Parxis geht das total vorbei

    Was ist für dich denn 'Praxis'? Nice, Heron, BIL sind für dich nicht 'Praxis'?

    Sicher, Vererbung ist heutzutage ein sehr beliebtes Mittel - allerdings gibt es OO Ansätze die ohne Vererbung auskommen.

    Und in 10 Jahren wird man vielleicht garnicht mehr Objekt Orientiert Programmieren wollen, weil es dann etwas besseres gibt.

    Insofern sehe ich nicht, dass Vererbung essentiell ist (schließlich ist Vererbung ja nur ein abstraktes Mittel)

    Shade Of Mine schrieb:

    aber dein Horizont reicht nicht weit genug

    vielleicht schaue ich in eine andere Richtung

    Und verschließt deine Augen?
    Hast du dich jemals mit anderen OO Konzepten als sie C++, Java, C#, D,... verwenden auseinander gesetzt?



  • Man muss also nicht von einem Interface erben um es zu implementieren.

    Wenn wir uns jetzt Python ansehen:
    da kann man eine Klasse erweitern ohne von ihr zu erben

    hm...heißt Vererben nicht vorhandenes Weiterbenutzen und erweitern?
    Ein Interface ist doch was vorhandenes und wird dann irgendwo eingesetzt oder wie läuft es denn in C++?
    Und wenn du eine Klasse erweiterst benutzt du doch bestimmt das vorherige mit oder? Also setzt Vorhandenes ein und erweiterst es auch. Ist das nicht Vererbung?

    Was verstehst du unter Vererben?

    Was ist für dich denn 'Praxis'? Nice, Heron, BIL sind für dich nicht 'Praxis'?

    Sag mir, wo werden diese Sprachen eingesetzt? Sind sie Weltweit verbreitet, Dominant? Werden damit 100.000 von Programmen geschrieben? Oder sind das nur Nischenprodukte?

    Was ist für dich denn 'Praxis'?

    Unter Praxis versteh ich etwas das umfassend eingesetzt wird. Wird es umfassend eingesetzt wurde es vom Makrt für gut befunden und es hat sich somit durchgesetzt. Das nenn ich Praxis.

    Sicher, Vererbung ist heutzutage ein sehr beliebtes Mittel - allerdings gibt es OO Ansätze die ohne Vererbung auskommen.

    Und in 10 Jahren wird man vielleicht garnicht mehr Objekt Orientiert Programmieren wollen, weil es dann etwas besseres gibt.

    Es geht mir darum was belibt ist und was bevorzugt wird nicht was irgendwo irgend wann möglich ist. Beliebt ist immer das was gut ist oder? Irgendwas tolle muss es an dieser Vererbung geben das sie so oft eingesetzt wird oder?

    Und verschließt deine Augen?
    Hast du dich jemals mit anderen OO Konzepten als sie C++, Java, C#, D,... verwenden auseinander gesetzt?

    eigentlich studiere ich Technische Informatik und nicht Programmiersprachen.
    Man kann nicht alles wissen und erst recht nicht in jede Richtung schauen.



  • Online schrieb:

    Beliebt ist immer das was gut ist oder?

    Ne. Popmusik ist ja auch beliebt. 🙂 ...und Windows und Moorhuhn auch. 😃



  • Online schrieb:

    Es geht mir darum was belibt ist und was bevorzugt wird nicht was irgendwo irgend wann möglich ist. Beliebt ist immer das was gut ist oder? Irgendwas tolle muss es an dieser Vererbung geben das sie so oft eingesetzt wird oder?

    Beliebt ist es auch, nicht RAII in C++ zu benutzen...

    Aber klar, wenn du nur von beliebtheit ausgehst, dann muss man auf Java/C# sehen. Dann sind die C++ Templates bald Schnee von Gestern und wir alle erben von bald von einer ultimativen ABC genannt Object.

    Nicht dass ich jetzt Java schlecht machen will - aber es gibt halt nicht nur einen Weg etwas zu machen. Und der beliebteste ist nicht immer der beste.

    zB ist das Python Konzept von Klassen mit self als ersten Parameter viel besser als das herkömmliche Methode gehört _in_ Klasse. Weil man in C++ immer das Problem:

    v.sort() versus sort(v)
    hat.
    in Python hat man einfach nur
    v.sort() und gut (bzw. man hat eigentlich beides, aber man muss nur eine Funktion dafür schreiben).

    Aber dennoch verwendet man das herkömmliche Prinzip, wo man eben sort(v) und v.sort() hat, weil es alle machen. Wie du siehst, ist "was alle machen" nicht zwangsläufig das beste.



  • @Online: Wo es dir so sehr auf die Beliebtheit ankommt, interessiert dich vielleicht der Tiobe Programming Community Index, der letztendlich Programmiersprachen anhand ihrer Popularität ordnen soll:

    http://www.tiobe.com/tpci.htm

    also... C solltest du mal lernen. Scheint äußerst beliebt zu sein, unterstützt aber nicht gerade OOP. (...gerade als TI-Student solltest du C auf jeden Fall daruf haben.)



  • Shade Of Mine schrieb:

    Aber klar, wenn du nur von beliebtheit ausgehst, dann muss man auf Java/C# sehen. Dann sind die C++ Templates bald Schnee von Gestern und wir alle erben von bald von einer ultimativen ABC genannt Object.

    gut, man muss dan auch noch differenzeiren.
    Sprachen, die grundlegend Vererbung einsetzen werde auch massenhaft im Desktop-Bereich eingesetzt.
    C++ hat ja auch Vererbung und warum sollten die Templates aussterben? Kann man Templates-Klassen nicht vererben? Die Sprache ist aber für meinen Begriff viel zu vollgestopft. Und sie kontrolliert sich nicht selbst. Will jetzt aber hier keine C++/C#/Java Diskussion einleiten

    Dann gibts ja auch den Bereich Microcontroller z.B. da ist weniger Vererbung und mehr Geschwingkeit vom Vorteil. Speicher ist auch so ein Ding. Das wird sich aber auch Irgendwann relativieren.
    Wenn ich mir die Zukunft anschaue was es so für schöne Entwicklungsumgebungen geben wird. KlickKlick und du hast dein MicroC. Layout und nen passenden Compiler. Das schreit so richtig nach Vererbung.

    Gregor schrieb:

    also... C solltest du mal lernen. Scheint äußerst beliebt zu sein, unterstützt aber nicht gerade OOP. (...gerade als TI-Student solltest du C auf jeden Fall daruf haben.)

    Jop C ist beliebt geht aber am Thema vorbei weil es um OOP geht.
    Aber du kannst mir mal verraten warum ich denn unbedingt C als TI-Student drauf haben muss?
    Wenn man erst programmieren kann, dann ist die Sprache völlig wurst.



  • Gregor schrieb:

    Online schrieb:

    Beliebt ist immer das was gut ist oder?

    Ne. Popmusik ist ja auch beliebt. 🙂 ...und Windows und Moorhuhn auch. 😃

    in der freien Wirtschaft entscheidet nun mal die Masse und nicht die Klasse. Es gibt zwar Nischenprodukte aber die zeigen nun mal leider nicht die Laufrichtung!



  • Online schrieb:

    ich versuche dir die gaze Zeit zu sagen das Theorie oft an der Praxis vorbei geht. Würde Vererbung gleichwertig sein mit "Nichtvererbung" so hätte es Vererbung nie in diesem Umfang gegeben.

    Ne, Du versuchst mit die ganze Zeit zu erklären, daß man theoretisch mit si alles bauen kann was auch mit mi geht. Und das scheint ja ein praxistaugliches Argument zu sein. Wenn man das gleiche Spiel aber eine Ebene weiter unten spielt und si emuliert, dann ist es völlig praxisfern. 😃

    Aber wenn Du mich schon die ganze Zeit verstanden hast ist ja gut. Daß Du Probleme damit hast die Brücke zwischen Theorie und Praxis zu schlagen ist ja nicht mein Problem.



  • Online schrieb:

    Dann gibts ja auch den Bereich Microcontroller z.B. da ist weniger Vererbung und mehr Geschwingkeit vom Vorteil.

    Soll ich daraus jetzt schließen "Vererbung == langsam" ?

    Jop C ist beliebt geht aber am Thema vorbei weil es um OOP geht.

    Aber laut Gregors Seite ist C am beliebtesten - somit ist non OOP verdammt beliebt und Vererbung somit nicht so wichtig, oder?



  • [quote="Jester"]

    Online schrieb:

    [...] Daß Du Probleme damit hast die Brücke zwischen Theorie und Praxis zu schlagen ist ja nicht mein Problem.

    also Probleme hab ich nicht nur ist es oft der Fall das in der Praxis die Theorie nie wirklich funktioniert 😉

    diesen Standard-Spruch den ich immer höre: "hm, also theoretisch müsste das hier eigentlich funktionieren...." 😃

    Shade OF Mine schrieb:

    Aber laut Gregors Seite ist C am beliebtesten - somit ist non OOP verdammt beliebt und Vererbung somit nicht so wichtig, oder?

    jop, genau richtig. Wenn man die Programme betrachtet für die C benutzt wird dann braucht man da auch nicht unbedingt OOP oder?
    Aber wenn ich OOP benutze dann eher mit Vererbung als ohne wie es diese Seite dann auch bestätigen würde mit Java und C++.

    Ich hab auch nicht behauptet das OOP wichtig ist, ich meinte nur das die meisten Programme sich schneller und einfacher mit Vererbung als ohne implementieren lassen.

    Shade OF Mine schrieb:

    Soll ich daraus jetzt schließen "Vererbung == langsam" ?

    kommt drauf an wie es in der Sprache implementiert ist oder? ich mein C wird oft bei MicroC. eingesetzt oder auch ASM und die sind schneller als die meisten OOP-Sprachen oder? 😃


Anmelden zum Antworten