Hallo x3,
Also kann ich mir einen Stack zum Beispiel als eine Datei (Also gespeichert auf der Festplatte) vorstellen, in der ich die Pfade der noch zu durchsuchenden Verzeichnisse zwischenspeichere ?! Oder ist der Stack irgendwas ausserhalb von Festplatte/Arbeitsspeicher?
Nein, ein Stack ist erstmal einfach eine Datenstruktur, auf die man oben etwas drauflegen und wieder wegnehmen kann. Im wesentlichen gibt es die Operationen push (etwas auf den Stack legen), pop (etwas runter nehmen), peek (oberstes Element zurückgeben aber nicht löschen) und size (Anzahl der Elemente zurückgeben).
Unter dem Stack versteht man üblicherweise einen Stack der für einen von der Laufzeitumgebung bzw von vom Kompiler generierten Code verwaltet wird und der dazu dient, die Parameter, lokalen Variablen u.ä. einer Prozedur/Funktion zu verwalten. Dabei werden eben beim Betreten der Funktion die Variablen auf den Stack gelegt und beim Verlassen wieder runter genommen. Bei einer tiefen Rekursion werden also sehr viele Elemente auf den Stack gelegt, wenn es zu viele sind (idR ist dieser Stack größenmäßig beschränkt) kommt es zu einem Stack-Overflow und das Programm wird beendet.
Hans erwähnte das Thema vermutlich nur, weil er meinte, das sei evtl. Dein Problem mit großen Datenmengen. An diese Grenze stößt man aber fast nur dann, wenn man eine Endlosrekursion erzeugt hat oder wirklich sehr ungeschickt vorgeht.
jetzt hab ich also ein konkretes Beispiel gefunden, zur Verwendung von Stacks, danke...
Stacks kann man sicher auch in einer Datei aufbauen, aber das ist eher ungewöhnlich. Du musst die Daten dann ja dann auch in dieser Reihenfolge verarbeiten.
Weniger, nachdem ich mir die Semantik und Syntax von Java reingezogen habe -sehr schön, aber meiner Meinung nach ein paar krasse Designschwächen (z.B. Objekt objekt = new Objekt(), statt einfach objekt = Objekt())
Ich habe ja schon viel Kritik an Java gehört, aber das hat noch niemand als Designschwäche gesehen. Eine Instanzierung ist ja Semantisch etwas anderes als ein Aufruf einer Methode, wonach Deine Variante aussieht, auch wenn die Namenskonventionen dann nicht stimmen. Warum soll es dafür nicht eine entsprechende Syntax geben?
Warte mal, Unterschied Funktion/Prozedur, das hab ich mal gelesen in 'Einführung in die Informatik', kanns aber nicht mehr finden...doch, Funktion, gibt den Rückgabewert mit Return zurück, bei der Prozedur muß der Rückgabewert in der Kopfzeile genannt werden.. aber was hat das für praktische Auswirkungen, ist das nicht einfach nur ein semantischer Unterschied?
Eigentlich ist es fast nur ein syntaktischer unterschied. Funktionen kann man eben in Ausdrücken aufrufen, für Prozeduren braucht man Hilfsvariablen die man als Ausgabeparameter mitgeben kann. Der Compiler wird aus dem Aufruf einer Prozedur mit einem Ausgabeparameter und einer Funktion vermutlich ziemlich ähnlichen, nach Optimierung womöglich sogar den gleichen Code erzeugen.
z.B. OOP oder das mvc-Prinzip sind ja Versuche, ein verallgemeinertes Prinzip für den Aufbau von Software bereitzustellen.
Naja ein allgemeines Lösungsschema für Architektur gibt es erst recht nicht. Es gibt so eine Hand voll Konzepte und das war's dann im wesentlichen.
Grüße
Daniel