Am Sonntag, den 20.02.2005, 15:05 +0100 schrieb Jens Kutzsche:
Am Sonntag, 20. Februar 2005 13:42 schrieb Eric Schaefer:
Ich denke bis auf etwa die Hälfte des Speicherbedarfs wird man es langfristig runteroptimieren können. Aber noch weniger geht dann einfach nicht. Und wenn Gnome dann erst in Mono neu geschrieben ist... :)
... wird der Speicherbedarf vermutlich sinken. Wer sich damit ein wenig auskennt und weiß wie nichttriviale Software außerhalb von .NET entwickelt wird, kann erahnen warum...
Kannst du da bitte etwas genauer werden und mal die Hintergründe kurz erläutern? Das würde mich sehr interessieren.
Das ist zwar sicher eher OT, aber da Du fragst:
Ein generelles Problem, auf das ich immer wieder stoße ist, daß man für größere Programme viele verschiedene Bibliotheken verschiedenster Herkunft benutzt. Man sehe sich nur mal ein größeres Anwendungsprogramm an, welches man täglich benutzt. Als Beispiel soll hier mal oBdA Openoffice herhalten. Man kann davon ausgehen, daß die meiste heutige, neugeschriebene Software in der einen oder anderen Art Code enthält der in den Sprache C++ geschrieben ist. Daneben enthalten solche Programme auch noch klassischen C-Code und evtl. (wie im Falle OOo) auch noch Java. Das ist eine Art der Zersplitterung. Die zweite Art stellen die verschiedenen Bibliotheken dar. Um bei Beispiel zu bleiben: Ich nehmen jetzt mal an (ich habe es nciht überprüft), daß dieses sowohl die libc, der C++-STL und noch eine X-Toolkit-Bibliothek (z.B. gtk oder Qt) benutzt. Das erscheint ja erstmal nicht unbedingt als schlecht. Ist es auch nicht unbedingt. Als Entwickler stört mich dabei, daß ich (um ein konkretes Beispiel zu nennen) in diesem Szenario drei verschiedene Arten habe, wie ein String dargestellt wird, nämlich den normalen C-String, std::string und gtk_string (oder wie das heißt) bzw. QString (oder so). D.h weiterhin, daß ich dreimal Bearbeitungsfunktionen für Strings habe. Weiterhin habe ich in diesen Bibliotheken mehrere Herangehensweisen, wie Speicher zu beschaffen ist usw. Das Framework, welches von mono implementiert wird ist diesbezüglich selfcontained, d.h. in 99% der Fälle (reine Anwendungsprogramme) muß ich das Framework nicht verlassen. Es gibt genau eine Sorte Strings (na gut, es gibt zwei, aber die bauen aufeinander auf). Es gibt genau eine Sorte Container (sowohl ein Stack, als auch eine Listbox erben von IList). Es gibt genau ein Klassensystem für alle beteiligten Sprachen (man kann eine VB-Klasse in C# und C++ benutzen und umgekehrt). uswusf. Das entscheidende ist, daß es ein Framework ist, welches viel umfassender ist, als die üblichen C ++-Frameworks. Das ist sowohl für mich als Entwickler extrem entspannend, als auch für die Speicherverwaltung. Wenn dann demnächst noch der generische Kram dazu kommt, bin ich voll und ganz zufrieden. Mir ist egal, daß mit punktnetz Anwendungen portabler werden, mich interessiert wie es mich bei der Entwicklung unterstützt. Ich kann leider (noch) nicht sagen, wie es um die Performance steht (ich habe bisher nur Performance-unkritisches Zeugs damit gemacht), aber wenn die einigermaßen brauchbar ist, wird es sich durchsetzen. Zum Trotze der Spötter, die meistens nicht mal wissen wovon sie reden. Wer es wissen möchte, der solle mal ein Programm mit mehr als 5000 Zeilen mit mono schreiben. Es ist erfrischend.
Eric