Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Auch Python arbeitet so. Und das Paper, das im PHP-Artikel verlinkt ist, beschreibt wie so ein GC mit RC in die "Jalapeno˜ Java virtual machine" eingebaut wurde. Ich weiß nicht worauf Du hinaus willst.
Auch "GC" genannt .Das Referenz-Model von PHP z.B.: http://php.net/manual/de/features.gc.collecting-cycles.php
Als Notfallsystem, falls Programmierer aus Versehen oder aus purer Faulheit Zyklen eingebaut haben, weil sie sich eben nicht mit ihrem System und deren Komponenten zu sehr auseinandersetzen wollten. Oder weil sie schlicht unfähig waren, das kommt auch vor.
Aber der GC ist eben nur als Notfallsystem da, um zyklische Referenzen aufzulösen - nicht aber für den generellen Zweck der Speicherverwaltung. Das meinte ich, als ich vor einigen Seiten sagte, dass PHP nicht gänzlich deterministisch ist.
Auch Python arbeitet so. Und das Paper, das im PHP-Artikel verlinkt ist, beschreibt wie so ein GC mit RC in die "Jalapeno˜ Java virtual machine" eingebaut wurde. Ich weiß nicht worauf Du hinaus willst.
Das Referenz-Model von PHP z.B.: http://php.net/manual/de/features.gc.collecting-cycles.php
Das sollte eh schon durch das bestehende Design der Software feststehen. Wenn nicht, dann sollte man sich damit mal beschäftigen. Denn wer was besitzt oder nur kennt ist eig. ein recht wichtiger Teil der gesamten Architektur.
Als Notfallsystem, falls Programmierer aus Versehen oder aus purer Faulheit Zyklen eingebaut haben, weil sie sich eben nicht mit ihrem System und deren Komponenten zu sehr auseinandersetzen wollten. Oder weil sie schlicht unfähig waren, das kommt auch vor.
Mir kam es so vor, als würdest Du denken, dass PHP keinen GC verwendet. Denn Du hast auf eine Frage geantwortet, die sich auf mit RC zykl. Abhängigkeiten bewältigen ohne GC bezogen hat. Als ich darauf geantwortet habe, habe ich den Eindruck gewonnen, Du würdest den Einsatz vom GC bei PHP weniger wichtig sehen, weil das ja nur eine Notlösung wäre und eigentlich nur RC wäre. Das ist aber für diese Diskussion irrelevant, da wir ja nicht darüber streiten welcher GC-Algorithmus denn der tollste ist. Da hab ich dann einfach mal nachgefragt.Auf nichts, wieso?
Mir kam es so vor, als würdest Du denken, dass PHP keinen GC verwendet. Denn Du hast auf eine Frage geantwortet, die sich auf mit RC zykl. Abhängigkeiten bewältigen ohne GC bezogen hat. Als ich darauf geantwortet habe, habe ich den Eindruck gewonnen, Du würdest den Einsatz vom GC bei PHP weniger wichtig sehen, weil das ja nur eine Notlösung wäre und eigentlich nur RC wäre. Das ist aber für diese Diskussion irrelevant, da wir ja nicht darüber streiten welcher GC-Algorithmus denn der tollste ist.
Das sehe ich nicht so. In vielen Fällen ist die Anzahl der extern verwendeten Ressourcen irrelevant. Transaktionen und Datenbankzugriffe werden wegabstrahiert.Nochmal: Der GC managed nicht Speicher allgemein, der GC managed nur Heapobjekte und sonst nichts. Und genau das ist das Problem...
Vielleicht geht es ja um einen Konflikt, den Rasmus Lerdorf (Erfinder von PHP) mal beschrieben hat:
Bei so einer Einstellung ist man mit einer GC-Sprache deutlich besser dran.Zitat
* I actually hate programming, but I love solving problems.
* There are people who actually like programming. I don’t understand why they like programming.
* I’m not a real programmer. I throw together things until it works then I move on. The real programmers will say “Yeah it works but you’re leaking memory everywhere. Perhaps we should fix that.” I’ll just restart Apache every 10 requests.
Mir geht es nicht so wie Lerdorf, aber ich hasse es mich um technische Details zu sorgen, die ich auch automatisch machen lassen kann. Ich will möglichst abstrakt arbeiten.
Hast du da ein Beispiel? Ich wüsste nicht, von was du da gerade redest. Ich hab noch keine große managed Anwendung gesehen, bei der mir spontan das Wort "robust" eingefallen wär...
Naja es gibt viele Ports von Java Framework auf C++, die Performance in den Vordergrund stellen und damit aber anfälliger sind. Am besten ist einfach, sowas aufzuprobieren. Ich rede aber meist von eher internen Systemen, daher wirst du kaum was damit anfangen können. Deswegen ist es eben auch einfach Erfahrung. Wenn du wirklich meinst eine große Anwendung in C++ wäre robuster, im Sinne der Verfügbarkeit, gegen ein managed Anwendung, dann sei das eben so. Das ist halt dann dein subjektiver Eindruck. Wenn du eben für alles C++ nimmst, dann kannst du das halt auch nicht sehen. Mein Eindruck ist eben anders.
Kennt ihr denn eine Sprache ohne GC, die so eine tolle Standardbibliothek mitbringt?
Ähm, nutzt Python keinen GC?Python hat auch eine tolle Standardbibliothek, ganz ohne dass dazu ein GC nötig wäre...
Das ist nicht zielführend, wenn Du den Begriff Robustheit, wie er hier verwendet wurde, so absichtlich fehlinterpretierst. Im Sinne der Qualitätsmerkmale nach ISO 9126 meinte LetsGo "Wartbarkeit/Änderbarkeit" und "Zuverlässigkeit". Und bei Zuverlässigkeit ganz sicher keine kritischen Echtzeitsysteme. Dass man da mit einem GC schon konzpetionell Probleme kriegen kann, bestreitet niemand.In der echten Welt ist GC in Anwendungen, die Robustheit erfordern – wie z.B. Software für Avioniksysteme – inzwischen natürlich absolut nicht mehr wegzudenken, da deterministisches Verhalten da absolut inakzeptabel wäre...
Genau dafür sind unter anderem Non-GC-Sprachen super. Und darüber hinaus stellen ja auch GC-Sprachen Mittel bereit mit Ressourcen umzugehen. Das sind aber Stellen, die man nach Möglichkeit abstrahieren sollte. Und das wird ja auch fleißig getan.Das beantwortet halt leider nicht die Frage, wie genau diese Abstraktion sich nun um ihre Ressourcen kümmern soll. Und genau da sind wir wieder beim Punkt: GC macht es unheimlich schwer genau solche Abstraktionen überhaupt erst zu bauen...
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Chromanoid« (20.05.2016, 17:03)
Ähm, nutzt Python keinen GC?Python hat auch eine tolle Standardbibliothek, ganz ohne dass dazu ein GC nötig wäre...
Werbeanzeige