Programmier-"Niveau"



  • cooky, ja es ist echt mau in meinem Umfeld. Das Niveau, das wir versuchen im C++ Forum zu erreichen, habe ich noch nie in meinem beruflichen und studentischen Leben gesehen.

    Jeder programmiert so wie er lustig ist und jeder denkt er könne C++. Es hängt einfach damit zusammen, dass Leute wie wir leidenschaftlich sich mit der Sprache beschäftigen, der Rest lernt es weil er es lernen oder können muss. Die Zeit für die Sprache nehmen sich diese Leute nicht und können es auch gar nicht.



  • cooky451 schrieb:

    Hi,
    mir fällt immer mehr auf, dass meine Vorstellung von "programmieren können" und die von den meisten anderen ziemlich weit auseinander geht. In meinem Umfeld interessiert sich eigentlich niemand wirklich für den Standard, Patterns, etc. Das bleibt größtenteils auch so bei Studenten in höheren Semestern, und viele Profs oder Angestellte die sich mit so etwas beschäftigen scheint es auch nicht zu geben.

    Bei Studenten würde ich sagen das viele auch im Grundstudium vom Programmieren mehr oder weniger abgeschreckt werden. Dazu kommt auch das ein bestimmter Teil vorher noch nie wirklich was mit Programmieren oder Informatik zu tun gehabt hat. Deswegen reicht es für diese Leute wenn sie nur irgendwie die Programmier-Übungen oder Klausuren bestehen. Dementsprechend sind dann die Kenntnisse in der jeweiligen Programmiersprache die sie "können".

    "Hauptsache es läuft" 👍



  • Xin schrieb:

    Seit bald 30 Jahre programmiere ich, aber was RAII ist, habe ich vor etwa 2 Jahren gelernt. Frag mich nicht wie lange ich es schon benutze. Für mich ist es durchaus ein Problem, dass für jede Technik alle 5 Jahre ein neues Buzzword rauskommt. Teilweise können Informatiker nicht miteinander reden, weil sie erstmal damit beschäftigt sind, ihr Vokabular abzugleichen.

    Viele gute Programmierer haben gelernt, was funktioniert. Sie vermeiden zu tun, was sie nicht kennen. Ich kann Dir nicht die Namen der Design Pattern nicht runterbeten, aber als ich mir das GoF-Buch durchgelesen habe, stellte ich fest, dass ich das soweit schon alles kenne. Trotzdem eine gute Zusammenfassung. Diese Programmierer, die direkt nach Pattern arbeiten, sind fachlich hochkompetent und haben gleichzeitig Scheuklappen an, weil alles was sie nicht gelernt haben, auch nicht denkbar ist.

    Mit langjaehriger Erfahrung lernt man natuerlich jede Menge Konzepte kennen, die man dann auch nutzt. Und diese Konzepte werden dann halt irgendwann von irgendwelchen Leuten als "Pattern" benannt. Als Standardloesungen fuer bestimmte Probleme. Natuerlich ist der Nutzen dieser Namensgebung fuer Leute, die derartiges auf natuerliche Weise kennengelernt haben, recht gering. Es bringt ihnen praktisch nur etwas bei der Kommunikation mit anderen Leuten, die die entsprechende Fachsprache auch sprechen.

    Bei Studenten ist das aber etwas anderes. Die haben keinen Programmierhintergrund von einigen Jahrzehnten und trotzdem sollen sie moeglichst schnell guten Code schreiben koennen. Deswegen muss man ihnen diese Konzepte explizit naeherbringen und dafuer muss man sie entsprechend formal definieren. Aus meiner Sicht macht es also einen Unterschied, wer einen auf die Frage nach Patterns eine ablehnende Antwort gibt. Spricht aus demjenigen Erfahrung oder einfach fehlendes Interesse?



  • knivil schrieb:

    Nicht jeder kann alles...

    Das ist richtig und auch okay wenn man bereit ist sich weiteres Wissen anzueignen. Ich kenne es aber aus einigen Firmen wie folgt: Wenn jemand der etwas zu sagen hat nicht mit deinen Code (weil für ihn 20 Jahre zu neu) klar kommt, blockiert er alles von dir. Und statt dem C++ std::vector soll man bloss seine Strukturen (mit 5fach-Zeigern etc. [JA, das ist ein Beispiel aus der Praxis...]) verwenden, weil der std::vector ja sooo langsam ist - zumindest hat er das gehört.

    Ich mag nicht der beste Softwareentwickler sein, aber wenn ich von Leuten wie den oberen dann auch ständig hören muss wie langsam ich bin, weil die etwas in 3 Tagen zusammenklatschen, wofür ich 3 Wochen brauche mag das auf dem ersten Blick so stimmen, wenn bei mir vielleicht noch 1 Woche an Fehlerkorrekturen drauf geht wo selbiger 2 Monate braucht bis es so läuft wie der Kunde wünscht, kann ich nur sagen: Nicht selten zählt sich Nachdenken, sauberes Design und sauberer Code doch aus.

    knivil schrieb:

    ...Der Quelltext ist grauenhaft und Bugfixing ist die Hoelle. Aber trotzdem: Code von Person A oder B wuerde ich ungesehen vertrauen...

    In dem Fall würde ich dem Code niemals vertrauen. Man programmiert in den meisten Firmen nicht für sich alleine; der Code muss jederzeit auch von Anderen übernommen werden können. Da ist ein gewisses gemeinsames Grundwissen nicht verkehrt, und wenn das fehlt so sollte es eigentlich durchaus möglich sein, das man sich gegenseitig etwas beibringt.

    knivil schrieb:

    Softwarequalitaet besteht nicht nur aus schoenem Design oder klarem verstaendlichen Code.

    Es gibt natürlich immer auch Negativextreme wie z.B. beim Design das Overengineering. Was wiederum lesbaren Code angeht habe ich noch kein Negativbeispiel gesehen (Überpflasterung mit Kommentaren ist kein lesbarer Code).

    Für mich kann ein Stück Software nur dann auch wirklich "Qualität" bedeuten, wenn es zumindest im Grundsatz verständlich bleibt. Code den niemand außer einem selbst verstehen kann ist niemals inakzeptabel (außer vielleicht in einer 1-Mann Klitsche).



  • Code den niemand außer einem selbst verstehen kann ist niemals inakzeptabel

    Code den nur einer versteht gibt es nicht. Sich einzuarbeiten ist manchmal ungemein schwieriger aber machbar.

    Nicht selten zählt sich Nachdenken, sauberes Design und sauberer Code doch aus.

    Leider ist das Management nicht so vorausschauend.

    fehlt so sollte es eigentlich durchaus möglich sein, das man sich gegenseitig etwas beibringt

    Es fehlt nicht, es aendert sich. Auch ist es schwer jemanden von 15 Jahren Gewohnheit in dieser Firma "umzulernen".



  • Gregor schrieb:

    Xin schrieb:

    Seit bald 30 Jahre programmiere ich, aber was RAII ist, habe ich vor etwa 2 Jahren gelernt. Frag mich nicht wie lange ich es schon benutze. Für mich ist es durchaus ein Problem, dass für jede Technik alle 5 Jahre ein neues Buzzword rauskommt. Teilweise können Informatiker nicht miteinander reden, weil sie erstmal damit beschäftigt sind, ihr Vokabular abzugleichen.

    Viele gute Programmierer haben gelernt, was funktioniert. Sie vermeiden zu tun, was sie nicht kennen. Ich kann Dir nicht die Namen der Design Pattern nicht runterbeten, aber als ich mir das GoF-Buch durchgelesen habe, stellte ich fest, dass ich das soweit schon alles kenne. Trotzdem eine gute Zusammenfassung. Diese Programmierer, die direkt nach Pattern arbeiten, sind fachlich hochkompetent und haben gleichzeitig Scheuklappen an, weil alles was sie nicht gelernt haben, auch nicht denkbar ist.

    Mit langjaehriger Erfahrung lernt man natuerlich jede Menge Konzepte kennen, die man dann auch nutzt. Und diese Konzepte werden dann halt irgendwann von irgendwelchen Leuten als "Pattern" benannt. Als Standardloesungen fuer bestimmte Probleme. Natuerlich ist der Nutzen dieser Namensgebung fuer Leute, die derartiges auf natuerliche Weise kennengelernt haben, recht gering. Es bringt ihnen praktisch nur etwas bei der Kommunikation mit anderen Leuten, die die entsprechende Fachsprache auch sprechen.

    Richtig, wir sprachen eigentlich immer davon, dass die Variablen/Objekte auf dem Stack liegen. Irgendwann hieß das dann RAII und ich wunderte mich, dass es eine neue Technik gibt und stelle fest, dass RAII auch nur Variablen auf den Stack legt...
    Bei vielen Dingen kommen halt im 5 Jahres Takt neue Buzzwords raus und man wundert sich immer wieder, was das für eine Aktion ist, um schlussendlich festzustellen, dass es ein alter Hut ist.

    Gregor schrieb:

    Bei Studenten ist das aber etwas anderes. Die haben keinen Programmierhintergrund von einigen Jahrzehnten und trotzdem sollen sie moeglichst schnell guten Code schreiben koennen. Deswegen muss man ihnen diese Konzepte explizit naeherbringen und dafuer muss man sie entsprechend formal definieren. Aus meiner Sicht macht es also einen Unterschied, wer einen auf die Frage nach Patterns eine ablehnende Antwort gibt. Spricht aus demjenigen Erfahrung oder einfach fehlendes Interesse?

    Mit formalen Definitionen erreiche ich in der Regel nur Verwirrung. Wenn die Leute verstanden haben, was lokale Variablen sind und wann sie nicht mehr sind, dann sind Objekte auf dem Stack eine logische Schlussfolgerung.

    Formal definierte Aussagen sind auch gut, aber imho erst, nachdem sie "begriffen" wurden, um das Begriffene dann auch scharf zu definieren. Eine scharfe Abgrenzung von einem Gedankengebilde hingegen erscheint mir eher ein solides Fundament für ein Luftschloss zu sein. 😉


  • Mod

    Xin schrieb:

    Richtig, wir sprachen eigentlich immer davon, dass die Variablen/Objekte auf dem Stack liegen. Irgendwann hieß das dann RAII und ich wunderte mich, dass es eine neue Technik gibt und stelle fest, dass RAII auch nur Variablen auf den Stack legt...

    Entweder hast du das Beispiel schlecht gewählt oder du hast RAII selber nicht verstanden. Nicht jeder Fachbegriff ist ein Buzzword für etwas altbekanntes.



  • SeppJ schrieb:

    Xin schrieb:

    Richtig, wir sprachen eigentlich immer davon, dass die Variablen/Objekte auf dem Stack liegen. Irgendwann hieß das dann RAII und ich wunderte mich, dass es eine neue Technik gibt und stelle fest, dass RAII auch nur Variablen auf den Stack legt...

    Entweder hast du das Beispiel schlecht gewählt oder du hast RAII selber nicht verstanden.

    Aktuell gehe ich davon aus, dass das Beispiel okay ist und ich RAII verstanden habe. Aber ich lasse mich gerne eines Besseren belehren, wenn Du was besseres im Angebot hast.

    Die Klasse, die die benötigten Resourcen bereitstellt, wird als lokale Variable auf dem Stack instantiiert und initialisiert. In der Funktion verwendet man die Resource über den entsprechenden Variablennamen und mit Verlassen des Scopes wird die Resource über den Destruktor abgebaut.

    Eine Variable/Objekt auf'm Stack. Was habe ich falsch gewählt oder falsch verstanden?


  • Mod

    Bei RAII ist es vollkommen egal, ob ein Objekt im automatischen oder im Freispeicher liegt. Es geht darum, dass es bei seiner Initialisierung selbstständig seine Ressourcen belegt und diese bei seiner Zerstörung selber wieder freigibt.
    Das kann dann ziemlich cool werden, wenn man es mit der automatischen Stackabwicklung von C++ kombiniert, weil es einem so hübsche Konstrukte wie

    [ ...]
    // Begin of critical section
    {
      Lock lock(mutex);  // Acquire lock
      // critical Code, may throw
    }
    // End of critical section, lock is released
    [ ... ]
    

    ermöglicht. Aber ich denke, du bist auch ganz froh, dass ein vector<string> hinter sich aufräumt, obwohl die Strings im Freispeicher liegen.



  • knivil schrieb:

    Code den niemand außer einem selbst verstehen kann ist niemals inakzeptabel

    Code den nur einer versteht gibt es nicht. Sich einzuarbeiten ist manchmal ungemein schwieriger aber machbar.

    Es gibt durchaus Personen die Code schreiben bei dem ein Einarbeiten wesentlich länger dauert, als den Code weg zuschmeißen und neu zu schreiben. Und in solchen Fällen ist der Codestil inakzeptabel. Wenn Personen meinen kryptischen Code schreiben zu müssen, passen sie in keine Firma.

    Wer meint alles in 2-Buchstabenkombinationen verpacken zu müssen, alles global zu definieren und von überall aus darauf zuzugreifen, 5fach-Zeiger zu verwenden und nicht einen Kommentar oder wenigstens etwas Hilfe zu gewähren, ist jedenfalls in keinen Projekt mit mehreren Personen gut aufgehoben. Und das hat auch nicht mit C++ Denke zu tun, auch in C kann man sauberen und lesbaren Code schreiben.


  • Mod

    ...er ist auch in seinen eigenen Projekten ganz allein nicht gut aufgehoben, vergisst er doch innerhalb von fünf Monaten wofür das Konstrukt gebraucht wurde und wie es genau funktioniert.

    MfG SideWinder



  • SeppJ schrieb:

    Bei RAII ist es vollkommen egal, ob ein Objekt im automatischen oder im Freispeicher liegt. ... Aber ich denke, du bist auch ganz froh, dass ein vector<string> hinter sich aufräumt, obwohl die Strings im Freispeicher liegen.

    ...was er aber nur tut, wenn er auf dem Stack liegt, genau wie Lock auf dem Stack liegt. Was Lock/vector<string> intern macht, interessiert mich dabei nicht - zu irgendwas muss die Kapselung schließlich auch gut sein. 😉

    Solltest Du RAII außerhalb eines Scopes benutzen, ist es natürlich auch "Resource Acquisition Is Initialization"... was sich aber gleich damit deckt, dass ein Objekt doch bitte keinen invaliden Zustand annehmen sollte, ergo seine Resourcen im Konstruktor so einrichtet, dass es anschließend noch damit klar kommt, bzw. überhaupt in die Lage versetzt wird, einen Destruktor ohne Absturz auszuführen. Sogesehen ist ein akzeptabler Standardkonstruktor RAII.

    Langer Text, kurzer Sinn: Man programmiert, um einem Computer die Arbeit zu überlassen. Man benutzt RAII, um das Speichermanagement dem Computer zu überlassen und sich selbst die Arbeit zu vereinfachen. Man kann RAII auch verwenden, weil man sonst nix zu tun hat, genauso wie man ohne Grund programmieren kann.

    Man kann auch Objekte mit Standard-Konstruktor aufrufen, dann konfigurieren und dann über den Stack zerstören lässt. Konfiguration ist quasi Benutzung.

    Wenn man mit RAII allerdings kein Ziel verfolgt, das man dann auch benennen darf, dann ist RAII nur ein wertloses Buzzword.

    Wobei ich Dir mit der Haarspalterei allerdings recht gebe ist, dass RAII ein ziemlich dämliche Bezeichnung für die üblicherweise damit verbundene Semantik ist, während die Diskussion hier gleichzeitig wieder dafür spricht, dass zwei Informatiker erst mal die Semantik ihres Vokabulars abgleichen müssen, bevor sie miteinander reden können. Von der Bedeutung der Buchstaben "RAII" bin ich also eigentlich voll auf Deiner Seite, wie ich auch den Leuten beibringe, dass das, was man unter OOP versteht nichts mit Objektorientierter Programmierung zu tun hat, sondern Datentyporientierte Programmierung ist und sie wenn sie OOP hören DOP verstehen müssen und für OOP doch bitte Methodenpointer verwenden mögen.

    Ergo: Wir wissen beide, was RAII ist, wir wissen wozu es sinnvoll ist, wir können fachlich damit umgehen, haben das Know How und können trotzdem nicht über RAII sprechen, sonst würden wir hier nicht diskutieren. ^^

    Das liebe ich an der Informatik: jeder weiß was er tut und vor lauter Buzzwords besteht keine Möglichkeit das was man tut in einem Satz zu erklären. ^^



  • Xin schrieb:

    SeppJ schrieb:

    Bei RAII ist es vollkommen egal, ob ein Objekt im automatischen oder im Freispeicher liegt. ... Aber ich denke, du bist auch ganz froh, dass ein vector<string> hinter sich aufräumt, obwohl die Strings im Freispeicher liegen.

    ...was er aber nur tut, wenn er auf dem Stack liegt

    Du hast imho RAII nicht verstanden.



  • Xin schrieb:

    Das liebe ich an der Informatik: jeder weiß was er tut...

    asc schrieb:

    Du hast imho RAII nicht verstanden.

    ROFL! 😃



  • Idiome und Patterns sind eine Sprache.
    Es geht dabei darum Namen zu haben.

    Wenn ich jemanden sage: nimm ein Singleton - dan weiß er genau was gemeint ist. Da gibt es dann keine 2 Interpretationen.

    Ansonsten muss man eine halbe Stunde lang rumdiskutieren bis alle Beteiligten auf dem gleichen Stand sind.

    Ein weiterer Vorteil dieser Sprache und Vokabeln ist, dass man schneller die relevanten Sachen lernen kann. Denn zB MVC zu verstehen wenn man es als Erklärung vor sich hat, ist trivial. MVC zu verstehen, wenn man nur den ganzen Tag Code schreibt und sich selber Lösungen für die Probleme der Trennung des Frontends vom Backend überlegen muss - kostet viel zu viel Zeit.

    So können Neulinge schon direkt die richtigen Sachen lernen. Das hilft sehr.

    PS:
    und RAII hat mit Stack Variablen nicht viel zu tun - bis auf, dass die C++ Implementierung von RAII sehr oft Stack Variablen verwendet. In Perl gibt es zB keine Stack Objekte und trotzdem RAII.


  • Mod

    asc schrieb:

    Xin schrieb:

    ...was er aber nur tut, wenn er auf dem Stack liegt

    Du hast imho RAII nicht verstanden.

    FTFY

    Sorry Xin, aber du hast es wirklich nicht verstanden. Du redest dir ein, dass du es verstanden hättest und bist vermutlich sogar stolz darauf, dass du als einziger erkannt hast, dass das etwas triviales ist, was du schon längst wusstest. Aber du bist der einziger der das so sieht, weil du es falsch verstanden hast.

    Ich werde jetzt nicht einzeln auf deine Aussagen eingehen, weil es nicht das Thema des Threads ist. Wenn du mehr wissen möchtest, dann lies es dir selber an oder frag bei Unklarheiten im C++-Forum nach. Sei dabei aber offen, etwas neues zu lernen, anstatt darauf zu bestehen, dass es etwas ist was du schon kennst unter einem Buzzwordnamen. Jedenfalls hoffe ich für dich, dass es dir zu denken gibt, wenn gleich mehrere der erfahrenen C++'ler im Forum dir unabhängig sagen, dass du das nicht richtig verstanden hast.



  • asc schrieb:

    Xin schrieb:

    SeppJ schrieb:

    Bei RAII ist es vollkommen egal, ob ein Objekt im automatischen oder im Freispeicher liegt. ... Aber ich denke, du bist auch ganz froh, dass ein vector<string> hinter sich aufräumt, obwohl die Strings im Freispeicher liegen.

    ...was er aber nur tut, wenn er auf dem Stack liegt

    Du hast imho RAII nicht verstanden.

    Deine bescheidene Meinung in Ehren, aber bei allem was Du gequotet und geschrieben hast, wäre sicher auch Platz für eine Begründung/Erklärung gewesen. So lastet der Kern Deiner Aussage imho stark auf Deinem 'imho'.

    Ich lerne gerne dazu, weiß auch nicht alles und habe sicherlich auch nicht alles verstanden. Ich lasse mich auch gerne in Frage stellen. Im "schlimmsten" Fall lerne ich ja was dazu, wenn ich falsch liege. Nach Wikipedia scheine ich nicht falsch zu liegen - von daher würde mich freuen, wenn Du Dein "imho" etwas begründen würdest, damit ich verstehe, wie Du zu Deiner ho kommst.

    Shade Of Mine schrieb:

    Wenn ich jemanden sage: nimm ein Singleton - dan weiß er genau was gemeint ist. Da gibt es dann keine 2 Interpretationen.

    Ansonsten muss man eine halbe Stunde lang rumdiskutieren bis alle Beteiligten auf dem gleichen Stand sind.

    Beim Singleton sind die Interpretationen bisher vergleichsweise langweilig meiner Erfahrung nach. Bei MVC hingegen öffnet man auch schnell mal die Büchse der Pandora.

    Shade Of Mine schrieb:

    PS:
    und RAII hat mit Stack Variablen nicht viel zu tun - bis auf, dass die C++ Implementierung von RAII sehr oft Stack Variablen verwendet. In Perl gibt es zB keine Stack Objekte und trotzdem RAII.

    Meinst Du Scope::Guard?

    Zeigmal.

    SeppJ schrieb:

    asc schrieb:

    Xin schrieb:

    ...was er aber nur tut, wenn er auf dem Stack liegt

    Du hast imho RAII nicht verstanden.

    FTFY

    Sorry Xin, aber du hast es wirklich nicht verstanden. Du redest dir ein, dass du es verstanden hättest und bist vermutlich sogar stolz darauf, dass du als einziger erkannt hast, dass das etwas triviales ist, was du schon längst wusstest. Aber du bist der einziger der das so sieht, weil du es falsch verstanden hast.

    Ich werde jetzt nicht einzeln auf deine Aussagen eingehen, weil es nicht das Thema des Threads ist. Wenn du mehr wissen möchtest, dann lies es dir selber an oder frag bei Unklarheiten im C++-Forum nach. Sei dabei aber offen, etwas neues zu lernen, anstatt darauf zu bestehen, dass es etwas ist was du schon kennst unter einem Buzzwordnamen. Jedenfalls hoffe ich für dich, dass es dir zu denken gibt, wenn gleich mehrere der erfahrenen C++'ler im Forum dir unabhängig sagen, dass du das nicht richtig verstanden hast.

    Gut... dann gib mir doch mal einen Tip, wo ich das richtige RAII nachlesen kann.

    PS: Ich habe jetzt einige Seiten nachgegoogled... bevor hier einer mit lmgtfu ankommt... überall - inkl. Perllösungen - ist die Aussage die gleiche, wie ich sie hier gemacht habe. Das Objekt wird initialisiert, verwendet, der Scope wird abgebaut, der Destruktor der Variable aufgerufen.
    Also wenn ich hier irgendwas nicht verstanden haben, dann werdet bitte entweder konkret, worum es euch hier geht oder lasst es.

    Aber wenn alles was man von euch bekommt ist "Du hast es nicht verstanden und sieh zu wie Du damit klarkommst" ist, joah... mehr als googlen kann ich auch nicht.



  • Xin schrieb:

    Shade Of Mine schrieb:

    Wenn ich jemanden sage: nimm ein Singleton - dan weiß er genau was gemeint ist. Da gibt es dann keine 2 Interpretationen.

    Ansonsten muss man eine halbe Stunde lang rumdiskutieren bis alle Beteiligten auf dem gleichen Stand sind.

    Beim Singleton sind die Interpretationen bisher vergleichsweise langweilig meiner Erfahrung nach. Bei MVC hingegen öffnet man auch schnell mal die Büchse der Pandora.

    Sehe ich anders. Es gibt viele Implementierungen von MVC, aber jeder weiss was gemeint ist. Ich kann sagen "dass hier ist das Model" und jeder versteht die Zusammenhaenge.

    Details sind Details und die koennen ruhig verschieden sein. Wichtig ist die gemeinsame Sprache.

    Meinst Du Scope::Guard?

    Zeigmal.

    Was willst du sehen? Perl Objekte sind Reference Counted. Wenn die letzte Referenz hops geht, wird DESTROY aufgerufen.

    PS:
    hier etwas Code: http://docstore.mik.ua/orelly/perl4/prog/ch12_06.htm



  • Shade Of Mine schrieb:

    Sehe ich anders. Es gibt viele Implementierungen von MVC, aber jeder weiss was gemeint ist. Ich kann sagen "dass hier ist das Model" und jeder versteht die Zusammenhaenge.

    Details sind Details und die koennen ruhig verschieden sein. Wichtig ist die gemeinsame Sprache.

    Mir scheint, die RAII Geschichte scheitert gerade an genau solch einem Detail. Denn ich liege hier ja scheinbar falsch, womit die gemeinsame Sprache scheitert, und dennoch keiner dieses Detail bisher benennt.

    Shade Of Mine schrieb:

    Meinst Du Scope::Guard?

    Zeigmal.

    Was willst du sehen? Perl Objekte sind Reference Counted. Wenn die letzte Referenz hops geht, wird DESTROY aufgerufen.

    Und eine Referenz geht hops, wenn sie der entsprechende Scope verlassen wird...!?
    Sofern die Antwort ja lautet, wird der Stack des Scopes abgebaut, was den RefCounter runtersetzt und entsprechend DESTROY aufruft. Somit verstehe ich weiterhin nicht, was ich hier nicht angeblich nicht verstanden haben soll oder warum Perl hier überhaupt ins Rennen ging, wenn der Sachverhalt identisch zu C++ ist. Eine Variable auf dem Stack hat einen konstanten RefCount von 1, auch dann, wenn es ein Smart-Pointer ist, der selbst einen RefCount von 1 hat, aber auf ein Objekt zeigt, dass einen beliebigen RefCount besitzt.

    Oder Perl macht hier was vollkomemn anderes, dann würde ich das gerne vergleichen können, um zu sehen, was Perl bei RAII so anders macht, als ich RAII verstehe. Um zu sehen, wo ich mich nach SeppJ's Aussage für Neues öffnen sollte.



  • Xin schrieb:

    Und eine Referenz geht hops, wenn sie der entsprechende Scope verlassen wird...!?
    Sofern die Antwort ja lautet, wird der Stack des Scopes abgebaut, was den RefCounter runtersetzt und entsprechend DESTROY aufruft.

    Die Antwort lautet nein. Die Referenz kann auch durch Zuweisung hops gehen.


Anmelden zum Antworten