Der Martin: Stack und Heap

Beitrag lesen

Hallo,

  1. Der Stack, zu Deutsch Stapelspeicher.
    Danke, dass du nicht Kellerspeicher sagst. Der Begriff kursierte Anfang der 90er Jahre, als man plötzlich sämtliche EDV-Fachtermini mit Gewalt eindeutschen wollte, mal in diversen Fachbüchern, und Scharen von Programmierern haben sich gefragt, was das wohl sein mag.
    Der Begriff Kellerspeicher taucht im deutschen Patent 1094019 auf, welches von den deutschen Erfindern des Prinzips 1957 beantragt wurde – soviel zu gewaltsamer Eindeutschung und den 90ern.

der Begriff an sich ist natürlich älter, keine Frage. Aber es gab in den frühen 90er Jahren, als Computer so allmählich ein Thema für die breite Öffentlichkeit wurden, das Bestreben, die bis dato vorherrschende englische Sprache zugunsten der eigenen Landessprache zurückzudrängen. Dass man in diesem Zug anfing, die Benutzerschnittstelle von Programmen ins Deutsche zu übersetzen, ist völlig okay und angebracht. Dass man aber auch anfing, englische Fachbegriffe einzudeutschen, die sich in der Branche schon lange etabliert hatten, ging wohl ein wenig übers Ziel hinaus.
Und in der Phase haben eben auch manche Hochschulen und Fachverlage versucht, den Ausdruck "Kellerspeicher" zu vermitteln.

Und Programmierern, die glauben, alle Ideen müssten aus dem englischen Sprachraum stammen oder zumindest englische Bezeichnungen haben, um so richtig richtig zu sein.

Ach je, nein! Schließlich kamen auch einige Pioniere der Elektronik, Nachrichtentechnik und EDV aus dem deutschen Sprachraum. Aber dennoch ist Englisch die branchenübliche Sprache. Ich kritisiere nicht, deutsche Begriffe zu verwenden! Ich kritisiere nur, sie einführen zu wollen, wenn ein großer Teil der Betroffenen sich bereits an einen englischen Begriff gewöhnt hat.

(Dieser Schwachsinn wird an immer mehr deutschen Schulen weitergeführt: Biologie, Erdkunde, Sport wird seit einigen Jahren auf Englisch unterrichtet. Die Alpen heißen bei meiner Nichte "alps" und die Nachbarskinder rufen beim Spielen "Ready, set, go!". Erbärmlich. Traurig.)

Das ist echt Schwachsinn.

Ich für meinen Teil bleibe beim Stapelspeicher, das ist eine sehr schöne Beschreibung des Funktionsprinzips, die auch Unbedarfte verstehen.

Ja, das finde ich auch gut - zumal Stapelspeicher und Stack als Entsprechung auch leicht zu merken ist und beide Begriffe sehr anschaulich sind. Dass der Stack bei den meisten Prozessoren "von oben nach unten" wächst, also in Richtung kleinerer Speicheradressen (daher kam ja der Ausdruck "Kellerspeicher"), ist ein Detail, das selbst Programmierer nur im Ausnahmefall interessieren muss. Die Assoziation eines Stapels, auf den man immer neues oben drauflegt und das zuletzt aufgelegte auch zuerst wieder entfernen muss, ist daher völlig angemessen.

Außerdem ist der Stack bei manchen Rechnerplattformen begrenzt. Auf 16bit-Systemen wie DOS oder Windows 3.x und älter kann der Stack maximal 64kB groß werden, bei 32bit-Systemen kann er theoretisch 4GB umfassen
Die Adressbreite des Systems begrenzt immer jeden Speicher, nicht nur manchmal und nicht nur den Stapelspeicher. Der Stapelspeicher im Speziellen ist begrenzt, weil er üblicherweise beim Programmstart am Stück reserviert wird und dann ohne unverhältnismäßigen Aufwand nicht mehr vergrößert werden kann. Er muss also von Anfang an groß genug sein, darf aber anderen im System auch nicht den Platz wegnehmen.

Das einerseits; ich meinte aber auch, dass er durch die Prozessorarchitektur bedingt häufig nicht den gesamten Adressraum nutzen kann. Das Beispiel der 16bit-x86-Architektur habe ich bereits erwähnt (1MB Adressraum, 64kB Stack), ein anderes, eher historisches ist die 8bit-CPU 6502 (die mit leichten Variationen als 6510 vor allem durch die Verwendung im C64 berühmt wurde), die einen Adressraum von 64kB hat, aber nur 256 Bytes davon als Stack nutzen kann.

So long,
 Martin

--
Most experts agree: Any feature of a program that you can't turn off if you want to, is a bug.
Except with Microsoft, where it is just the other way round.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(