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
Ganz ehrlich, sicherlich ist das mal interessant und auch spannend über so Zeug wie hier zu sprechen, aber ich behaupte der Alltagsprogrammierer hier wird das meiste davon nicht brauchen.
Ich behaupte wenn de_struktor ein Spiel schreibt wird er sich nicht groß um Ressourcenmanagement für Texturen kümmern müssen. Der Content Manager von XNA kümmert sich für ihn darum und sein Speicher wird ausreichend sein. Natürlich davon ausgegangen dass es sich hier um kein Spiel im High End RPG Style mit 1000en Texturen handelt.
Ich selbst habe ja nun einige Jahre mit C# arbeiten dürfen/müssen (eher dürfen) und habe selbst nur sehr selten IDisposable benötigt. C# kann durch den GC auch wirklich ätzend werden, wenn man es dann wirklich benötigt. Meiner Meinung nach aber nicht unbedingt weil der Speicher nicht schnell genug freigegeben wird (ganz ehrlich was schreibt ihr bitte für Anwendungen ) sondern eher weil bestimmte Ressourcen nicht schnell genug freigelegt werden.
Da wäre zum Beispiel Netzwerk und Sockets ein Beispiel was ja schon angesprochen wurde. Ich denke solange ich Ressourcen nicht selbst manage (unmanaged resources) brauche ich mir in den meisten Fällen bei C# weniger Gedanken um Dispose etc machen.
Das schöne an .Net ist doch dass sich um sowas gekümmert wird.
Als C++ Entwickler gibt man das nur ungern aus der Hand weil man sich hier halt um alles selbst kümmert, aber bei .Net ist es halt so. Und meiner Meinung nach sind selbst die Smartpointer bei C++ nicht ansatzweise so einfach wie der GC.
Das Problem (was ja schon angesprochen wurde) sind ja Referenzzyklen. Und die kann man sich nun mal schnell einhandeln wenn man nicht aufpasst. Dann kann man natürlich am Design schrauben und machen und tun, aber das Design zu ändern nur weil meine Referenzverwaltung sonst nicht klar kommt ist auch nicht der beste Weg.
Deswegen denke ich dass das hier alles eine Sache ist bei welcher man stark zwischen Sprachen unterscheiden kann. Wenn man C++ und C# vergleichen möchte kann man auch Assembler und C vergleichen. Beide unterscheiden sich stark voneinander und haben eigentlich auch andere Anwendungszwecke.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »CodingCat« (20.05.2013, 17:21)
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
De_Struktor
unregistriert
Zitat
Schüler, vielleicht um die 16 Jahre alt, lernt seit einem Jahr zu programmieren, fragt lieber als selbst zu denken ( ), diskutiert gern Probleme tot, hat zu viel Zeit sich Gedanken zu machen (klingt alles böser als es wirklich gemeint ist).
Aber es geht doch gar nicht um die paar MB RAM. Das diese erst später freigegeben werden, mag einige Leute stören aber hat nichts mit der Fragestellung hier zu tun. Es geht darum warum die Ressourcenverwaltung in Managed Sprachen Speicher gesondert verwaltet und wie man den GC nutzen könnte um auch andere Systemressourcen (Filehandles, Sockets, etc.) zu verwalten.Da hat auch vielleicht jeder eine andere Vorstellung was Sprachen bzw deren Einsatzgebiet angeht. Und natürlich war der Vergleich überzogen. So sollte es etwas deutlicher werden. Ich möchte auch bestimmt nicht sagen, man soll seine Software nicht vernünftig ausarbeiten und Problemfälle prüfen. Robuste Software ist sehr wichtig, das ist richtig, ich kann mir trotzdem auch einfach zu viel Gedanken machen. Eben weil Rechner heute eine bestimmte Leistung haben, kann ich drauf verzichten wenn einige MB RAM erst später freigelegt werden
De_Struktor
unregistriert
Werbeanzeige