besonderheiten der kompilation oop



  • hallo,

    ohne die übersetung des Quellcodes in die Maschinensprache kein ausführbares Programm....oder??

    aber was sind die besonderheiten der kompilation von oop´s gegenüber der der imperativen Programmiersprachen??



  • gaga schrieb:

    ohne die übersetung des Quellcodes in die Maschinensprache kein ausführbares Programm....oder??

    aber was sind die besonderheiten der kompilation von oop´s gegenüber der der imperativen Programmiersprachen??

    Du hast exakt die selbe Frage nocheinmal gestellt. Das bringt nix.
    Drueck dich klarer aus.

    Willst du wissen, was das OO-Konzept von anderen Konzepten unterscheidet? Oder willst du wissen, wie ein Compiler OO-Code uebersetzt? Oder etwas anderes?



  • Die Frage ist doch klar ausgedrückt. Ich kann sie nur leider nicht beantworten, weil ich kein Compilerbaubuch bin oder habe. Da steht sowas aber drin.



  • Shade Of Mine schrieb:

    Willst du wissen, was das OO-Konzept von anderen Konzepten unterscheidet?

    Genau das will ich wissen, also nochmal anders ausgedrückt:

    was unterscheidet die kompilation von oop´s gegenüber "normalen" Programmiersprachen....



  • was unterscheidet die kompilation von oop´s gegenüber "normalen" Programmiersprachen....

    Bei einer Kompilation von oop''s sind nur geile Hit'z beteiligt, während bei "normalen" Programmiersprachen auch immer eine bestimmte Quote an Schrott mit rein muss.



  • und was versteht man unter "geile" Hit´z ???
    ich meine dann kann ich mir den schrott zusammen reimen....
    aber mehr ist das nicht wie das, da muss doch mehr dahinter stecken, wie nur das....





  • sorry das ich eine ernst zunehmende frage gestellt habe...

    ich habe es ernst gemeint und wenn ich wüsste was die besondrheiten sind würde ich nicht fragen....

    aber ich würde behaupten ihr wisst es selber nicht, daher die "blöden" antworten.



  • da könnte was wahres dran sein, wenn du mal bashars post gelesen hast. wie genau ein komplier im detail funktioniert, weis wahrscheinlich keiner, bis auf die freaks, die gcc und konsorten machen. frag doch mal bei denen nach.



  • Ich denke wie sich die anderen User verhalten liegt ganz an dir, lies dir mal
    deine Postings durch und dann meines hier, vllt. entdeckst du einen Unterschied.



  • entschuldigung, das mein posting nicht so aussieht wie alle andere, ich werde mir gleich den still von allen zulegen und dann mich brav einreihen und mein tristes das sein in einer langen reihe von gleichen zu verbringen...
    man ich schreib anders wie alle anderen, und andere schreiben wieder anderes und was soll daran falsch sein..
    wenn wir alle gleich wären, wäre es wohl eich trist, oder??

    ich habe mein posting weder böse, noch frech verfasst
    ich möchte doch nur mal etwas über die besonderheiten von ... was wissen. Das ich kein freak bin wie alle anderen dürfte man eigentlich schon daran gemerkt haben, das ich so was frage.
    also kann man doch eine normale antwort verlangen, oder

    aber ich kann es auch lassen und mir jemand anderes suchen, der das erklären kann, aber dann dürft ihr euch hier nicht mehr forum nennen, weil unter forum ich verstehe das einem bei problemen geholfen wird.
    eine frage dazu, konnte man aus diesen antworten eine hilfe ersehen??
    und jetzt sollen die antworten die anfänger sind wie ich.

    so ich hoffe das die "anderen User" das nicht soooo böse auffassen, aber auf eine so d..fe antwort muss man so was mal los werden.



  • gaga schrieb:

    ich kein freak bin wie alle anderen [...]

    also kann man doch eine normale antwort verlangen, oder
    aber ich kann es auch lassen und mir jemand anderes suchen, der das erklären kann

    Merk Du was? Alle anderen sind ja Freaks! Aber da kann man schon ne ordentliche Antwort verlangen, nicht wahr?
    Damit triffst Du übrignes den Punkt der Sache: Du kannst hier garnichts verlangen. Wenn die Leute Lust haben Dir zu antworten, dann tun sie das auch und ansonsten nicht.
    Dennoch fühlen wir uns geehrt, daß gerade wir auserwählt wurden Dir das beantworten zu dürfen.

    So, und jetzt mal zur Frage:
    Die Frage ist einfach etwas ungünstig würde ich sagen. Denn alles, was mit mit OOP machen kann kann man auch so machen. Ob ich jetzt Objekt.Funktion(Parameter) schreibe oder Funktion(this-Zeiger vom Objekt, Parameter) ist eigentlich nur ein syntaktische Unterschied. Und schon bist Du mitten in einer "normalen" Sprache.
    Ob es da jetzt noch spezifische Unterschiede gibt kann ich Dir nicht sagen, aber meines wissens gab (oder gibt es?) C++ Compiler, die nach C übersetzt haben und das wird wohl so ähnlich gelaufen sein. Für virtuelle Funktionen ruft man halt nicht gleich die Funktion auf, sondern da hat der this-Zeiger den richtigen pointer für die Funktion dabei etc.
    Allerdings weiß ich nicht, ob es nicht vielleicht noch andere Wege gibt sowas zu übersetzen. Aber das ist zumindest ein möglicher und ich denke, daß es so auch in den meisten Fällen umgesetzt wird.

    MfG Jester



  • aber meines wissens gab (oder gibt es?) C++ Compiler, die nach C übersetzt haben

    Jo. CFront z.B. Wer mehr zum Thema Abbildung von C++ auf C wissen möchte, der sollte einen Blick in "Inside the C++ Object Model" von Lippman werfen. Ich fand die Lektüre sehr lohnend.

    @gaga
    Ich sehe beim Besten Willen nicht, wie ich dich ernst nehmen soll. Erst wiederholst du gebetsmühlenartig deine merkwüdige Frage trotz der Bitte doch mal zu erklären, was genau du wirklich wissen willst und dann heulst du rum, das du von bösen Freaks umzingelt bist.

    @Bashar
    Da du ja nun der einzige zu sein scheinst, der weiß worum es in diesem Thread gehen soll, wäre es vielleicht hilfreich (besonders für gaga), wenn du uns mal aufklären könntest. Ich zumindest komme mir hier mächtig veralbert vor.
    OOP ist meines Wissens nach hauptsächlich ein Denk- und Design-Modell. Kein fest definiertes Implementationsmodell. Nach dem Motto: "Der Unterschied bei OOP-Sprachen gegenüber Pascal ist, dass sie ihr Front-End orthogonal zur oo-Achse implementieren müssen. Ihr Back-End muss danach lauter unnütze noops einstreuen, weil Abstraktion und OOP nun mal langsamer ist."

    Ich könnte mir vorstellen, dass man nach den Besonderheiten der OOP gegenüber der prozeduralen Programmierung fragt. In Bezug auf die Hernagehensweise. In Bezug auf die Sichtweise der Abarbeitung eines Programms usw. Ich könne mir auch vorstellen, dass man an der Compilertechnik *konkreter* Compiler interessiert ist (ein völlig anderes Level) oder an Techniken Compiler in OOP-Manier zu schreiben.
    Nur was bitte soll "Kompilation der OOP sein?" Und was sind OOP's?



  • HumeSikkins schrieb:

    @Bashar
    Da du ja nun der einzige zu sein scheinst, der weiß worum es in diesem Thread gehen soll, wäre es vielleicht hilfreich (besonders für gaga), wenn du uns mal aufklären könntest. Ich zumindest komme mir hier mächtig veralbert vor.

    Ich glaube nicht, dass ich das im Detail kann. Schließlich hab ich "Modern Compiler Design" schon vor Monaten zurück in die Bibliothek gebracht. Allgemein ist schon alles gesagt: Es geht darum, ob Compiler für objektorientierte Sprachen irgendwelche Besonderheiten gegenüber solchen für prozedurale Sprachen haben. Das Kapitel darüber in MCD enthält meiner Erinnerung nach deutlich mehr Text als "Siehe prozedurale Programmierung", also kann es durchaus sein, dass es diese Besonderheiten gibt.
    Dass die meisten hier sich das nicht vorstellen können kann man akzeptieren. Aber warum dann gleich den Frager lächerlich machen?

    OOP ist meines Wissens nach hauptsächlich ein Denk- und Design-Modell. Kein fest definiertes Implementationsmodell.

    Es hat ja auch keiner unterstellt, dass es DIE Besonderheit gibt. Es gibt einige Dinge, die nur in OO-Sprachen von Bedeutung sind (Vererbung und Polymorphie z.B.), und wahrscheinlich einige, die sich erst aus dem anderen Charakter der Programme ergeben (kurze Prozeduren, viel Pointer-Indirektion, viel Heap-Allokation, etc.)



  • ich wollte keine verarschen, ect.
    Ausserdem verlange ich nicht das man mir antwortet, es wäre halt schöner..
    aber wenn man antwortet, dann bitte so das ich es auch verstehe.

    so dann, die frage so wie ich sie stellt war, hab ich als aufgabe bekommen um darüber eine ausarbeitung zumachen.
    Da ich aber keine ahnung hab was die besonderheiten sein sollen beim übersetzen dachte ich mir ich frag jemand der sich damit auskennt, um mir zumindest einen anstoss zu holen was vielleicht dazu gehören könnte ( als besonderheit).
    Es tut mir leid wenn sich jemand auf den schlips getreten fühlt, das war keine absicht.
    @ Bashar Danke, das du mir rückendeckung gibst



  • aber wenn man antwortet, dann bitte so das ich es auch verstehe.

    Eine vernünftige Antwort setzt eine vernünftige Frage voraus. Eine Frage die das Gebiet um das es geht einschränkt. Wer nach dem Leben, dem Universum und dem ganzen Rest fragt, darf sich über die Antwort "42" nicht wundern.

    Es geht darum, ob Compiler für objektorientierte Sprachen irgendwelche Besonderheiten gegenüber solchen für prozedurale Sprachen haben.

    Tatsächlich? Und das steht wo genau?

    Es gibt einige Dinge, die nur in OO-Sprachen von Bedeutung sind (Vererbung und Polymorphie z.B.), und wahrscheinlich einige, die sich erst aus dem anderen Charakter der Programme ergeben (kurze Prozeduren, viel Pointer-Indirektion, viel Heap-Allokation, etc.)

    Es gibt imo nicht einige Dinge sondern unzählige. Die meisten auf völlig verschiedenen Ebenen. Über Polymorphie und Vererbung kann man im Umfang von Büchern reden, ohne das Wort Compiler auch nur in dem Mund zu nehmen. Und genausogut kann ich das ganze von ganz unten betrachten, dann kommt da aber ebenso eine Menge Holz zusammen.
    Zusätzlich: Wenn ich A mit B in Vergleich setzen soll, dann bietet es sich an, wenn der Fragesteller bereits über Wissen zum Thema B verfügt. Ansonsten ist ein Vergleich imo nutzlos.

    Konkret: Wenn es hier um Implementationen auf Compilerebene geht, dann sollte der OP wohl zumindest ein grundlegendes Wissen zum Theme Compilerbau mitbringen (zumindest im Bereich der prozeduralen Sprachen). Danach sieht es mir aber nicht aus.

    Versteh mich nicht falsch, ich behaupte nicht, dass ich zu diesem Thema großartig viel sagen kann (Ich habe nur einen Kurs zum Thema Compilerbau gehört). Ich behaupte aber, dass eine derartig schwammig gestellte Frage überhaupt keine sinnvolle Antwort haben kann.
    Denn entweder man fängt einfach an zu labern (so wie ich), man erzählt willkürlich irgendwelche Sachen (nach dem Motto: Für die Implementation von später Bindung bietet sich das Konzept einer Indirektion über eine Methodentabelle an), oder, falls jemand mit mächtig viel Compiler-Bau-Erfahrung antwortet, wird der OP es nicht verstehen. Zumindest, wenn die Länge der Antwort nicht den Rahmen eines Forums sprengen soll.

    Ich sehe nach wie vor keine Themeneingrenzung. Unter der Annahme, dass du Recht hast (was ich bezweifle), scheint mir die einzig vernünftige Antwort bisher:
    1. Falls du keinerlei Erfahrung im Bereich Compilerbau hast, besorg dir das "Drachenbuch".
    2. Besorg dir das Buch "Modern Compiler Design".
    3. Lies es.
    4. Frag Bashar, wenn du was nicht verstehst.



  • Na also geht doch:

    ich wollte keine verarschen, ect.
    Ausserdem verlange ich nicht das man mir antwortet, es wäre halt schöner..
    aber wenn man antwortet, dann bitte so das ich es auch verstehe.

    so dann, die frage so wie ich sie stellt war, hab ich als aufgabe bekommen um darüber eine ausarbeitung zumachen.
    Da ich aber keine ahnung hab was die besonderheiten sein sollen beim übersetzen dachte ich mir ich frag jemand der sich damit auskennt, um mir zumindest einen anstoss zu holen was vielleicht dazu gehören könnte ( als besonderheit).
    Es tut mir leid wenn sich jemand auf den schlips getreten fühlt, das war keine absicht.
    @ Bashar Danke, das du mir rückendeckung gibst

    So sollte nen Posting aussehen.
    Du hast keine tausend Satzzeichen nacheinander verwendet und dich endlich mal
    deutlich ausgedrückt.
    Es geht hier nicht um deinen Stil den meinte ich nicht, sondern darum, dass man
    in richtigem und vor allem verständlichen Deutsch um Hilfe bitten sollte.

    Ich kenn mich mit Compilern zwar nicht aus, aber ich weiß dass es aufgesetztes
    und richtiges OOP gibt.
    C++ ist richtiges, da es direkt in ASM umgewandelt wird und nicht intern erst
    in C und dann in Assembler.
    Die Objektorientierung bleibt aber auch im Assembler-Code enthalten, sonst wäre
    OOP nicht langsamer als ein prozedurales Programm.



  • SirLant schrieb:

    Ich kenn mich mit Compilern zwar nicht aus, aber ich weiß dass es aufgesetztes
    und richtiges OOP gibt.

    ?

    C++ ist richtiges, da es direkt in ASM umgewandelt wird und nicht intern erst
    in C und dann in Assembler.

    Wo steht das, und hast du schonmal von cfront gehört?

    Die Objektorientierung bleibt aber auch im Assembler-Code enthalten, sonst wäre
    OOP nicht langsamer als ein prozedurales Programm.

    Ist es?



  • SirLant schrieb:

    Ich kenn mich mit Compilern zwar nicht aus, aber ich weiß dass es aufgesetztes
    und richtiges OOP gibt.
    C++ ist richtiges, da es direkt in ASM umgewandelt wird und nicht intern erst
    in C und dann in Assembler.

    Und was ist mit CFront? Das ist ein Compiler, der aus dem C++ Code C code generiert.

    Die Objektorientierung bleibt aber auch im Assembler-Code enthalten, sonst wäre
    OOP nicht langsamer als ein prozedurales Programm.

    Interessant. Wie definiere ich in Assembler denn eine Klasse?



  • Das meinte ich doch nicht, ich meinte die Art wie etwas OOP mäßig erledigt wird,
    also Objekte usw. die werden auch gekapselt abgelegt wie Strukturen in C, nur sind
    Objekte halt komplexer (bei weitem).

    Und für richtige C++ Compiler ist es meines Wissens nach pflicht direkt in ASM
    und nicht über C zu compilieren.


Anmelden zum Antworten