Wookie23 am 29.06.2007 13:54 schrieb:
Ich bin mir nicht sicher aber ich glaube auf heutigen Systemen werden "vergessene" Objekte automatisch aus dem Speicher entfernt.
Das Problem ist: wie soll das Betriebssystem feststellen, wann ein Objekt wirklich vergessen wurde, oder einfach nur im Augenblick nicht benötigt wird? Der Punkt ist eben, dass reines C/C++ keinen Garbage Collector mitbringt, also reservierten Speicher von alleine nicht freigeben kann.
Das Betriebssystem kann halt die verwendeten Pages des Programms in die Swap-Partition bzw das Pagefile verschieben, wenn auf diese lange kein Zugriff erfolgte, aber mehr geht nicht, da sonst das OS ja versehentlich ungespeicherte Daten des Programms wegschmeißen könnte.
Klar, wenn das Programm dann beendet wird räumt das OS schon allen verwendeten Speicher wieder auf. Aber vorher sieht es da halt echt mager aus. Deswegen auch mein Plädoyer für eine Sprache mit einer verwalteten Umgebung wie Java oder .NET, wo das Aufräumen von Objekten automatisch passiert und nicht dem Programmierer überlassen werden muss.
Wookie23 am 29.06.2007 13:54 schrieb:
Und mein Ansatz würde eh darin bestehen, ganz auf Speicherreservierungen zu verzichten und lieber groß dimensionierte Arrays zu verwenden (100 Buchstabe für Teamname reicht ja), aber du hast recht man muss in C/C++ mit den char* aufpassen (obwohl man vielleicht auch einfach die String nehmen kann/nehmen sollte).
Bei festen Arrays hast du aber das Problem von Pufferüberläufen. Unter C/C++ muss ja ein character Array immer mit "\\0" enden. Wenn man da nicht aufpasst und zB die Längenprüfung falsch oder gar nicht implementiert, knallt es gewaltig sobald einer einen Namen mit genau 100 Zeichen eingibt (weil ja "\\0" nicht mehr ins Array passt).
Strings sind schon viel besser, das stimmt allerdings.
Wookie23 am 29.06.2007 13:54 schrieb:
Hier ist halt die Frage will man das Programmieren möglich gut (im Sinne von gutes Verständnis vom Programmieren und wie man die Dinge richtig macht (Namenskonventionen, richtig kommentieren)) lernen oder will man nur was programmieren (und sich evt erst später genauer damit befassen) ..
Mein Dozent bei dem ich Programmieren gehört hab hat immer gesagt: "VHIT geht nur bei kleinen Programmen die sehr einfache Strukturen haben. Bei allem was größer als vielleicht 200 Zeilen ist, geht das schief."
VHIT = Vom Hirn Ins Terminal.
Daher würd ich schon vorschlagen die Sache etwas strukturierter anzugehen, und auch erst ein paar Trockenübungen zu machen was Datenstrukturen, Programmdialoge, usw angeht bevor auch nur eine Zeile gecodet wird.
Wookie23 am 29.06.2007 13:54 schrieb:
.. lassen wir die Diskussion lieber und warten ob Reder sich nochmal dazu äußert was jetzt rausgekommen ist/was er jetzt zu tun gedenkt.
Jo. Prinzipiell ist das schon zu machen, ist halt nur eine Frage des Aufwands.
Man sollte auch die Technologie die man verwendet genau anschauen:
PHP
(+) läuft auf so gut wie allen Servern
(+) große Anzahl Bibliotheken für die verschiedensten Funktionalitäten.
(+) "relativ" sicher was Typen angeht, da Variablen dynamisch typisiert werden, dh es wird bei jeder Änderung geschaut ob der Inhalt zum aktuellen Typ passt, und wenn nicht wird einfach der Typ verändert
(-) Nachteil ist eben dass es außer ein paar wenigen Projekten keine IDE gibt welche einem unter die Arme greifen könnte, und man mehr oder weniger auf den ASCII-Editor seiner Wahl beschränkt ist
Java
(+) breites Spektrum an Möglichkeiten durch große Anzahl an Packages
(+) sehr gute Interoperabilität mit anderen Anwendungen (Servlets, JSPs)
(+) mit Eclipse gute IDE, allerdings nicht ganz so einsteigerfreundlich
(-) auf eine Sprache beschränkt
(-) manche Operationen relativ umständlich im Vergleich zu PHP/ASP.NET
ASP.NET
(+) sehr einfach Gestaltung des HTML Parts dank grafischem Editor
(+) man kann mehr oder weniger die Programmiersprache seiner Wahl verwenden
(+) sehr gute IDE mit Hilfsfunktionen und Funktionen die auch Anfängern den Einstieg einfacher machen (-> IntelliText)
(-) läuft nur auf Windows Servern richtig
CGI-BIN
(+) es kann jede beliebige Programmiersprache verwendet werden die Programme mit Standardein-/ausgabe erzeugt
(-) sehr umständlich zu warten, da alle HTML Pages zeilenweise erzeugt werden