← Journal · Archiv

Wasted Space

January 27, 2005

In the early days of computer history, programmers had 2048 bytes of memory in which to store their program. Into that memory had to fit the program itself, all of the programmer's variables and the system's bootloader program. Pretty tight, when you consider that this article is 2791 characters long. Which didn't stop programmers from writing magnificent programs that were cleverly thought out and puristic in their use of space.
With tricks, you scraped together a bit more memory elsewhere wherever possible. If the computer had a graphics card, which was unusual at the time, a small sleight of hand could coax out a little more memory. Usually the graphics card displayed 40 characters on 12 lines. Read directly from memory, the screen output needed only 40×12=480 bytes. The usual size of a RAM chip, however, was 512 bytes. So at the end of video memory you had 32 bytes left over for stashing things.

Video memory

Or you compressed the bits used by a data type to squeeze out one more bit (COMP3 in Cobol).
Tricks like these seem alien to us today. By now we have computers with 256,000x more memory that are many times faster still. Memory consumption no longer has to be worked out thoroughly before programming begins. One is confident of having enough memory.
From my trainee, who leaves today, I have been handed program code in which he declares 3^15, i.e. 14,348,907, LongInts (a data type four bytes in size), even though he only needs to store two states per variable. The program works. Nor does it complain about the horrendous memory requirement - a good 57MB. What I also saw was a for loop that only knows 8 states but runs on an Integer instead of a Byte.
This mentality of wasting space doesn't come from nowhere. Even the Boolean data type, which can store only two states and would have been exactly right for my trainee, would have used two bytes (also known as a Word), although one bit (1/8 of a byte) would have sufficed.
Microsoft Visual Basic is in a particularly generous mood in this respect.

Arrays of any data type require 20 bytes of memory, plus four bytes for each array dimension, plus the number of bytes occupied by the data itself.

That makes 26 bytes for an Integer (whole number, two bytes in size). Not much left over with our video memory trick.

frank · · 53 Views ·

Wenn ich an die Zeiten von Amiga denke, wie klein da die Programme waren, und heute alles aufgeblasen ist. Omniweb hat um die 10 Megabyte - für einen Browser ganz stattlich. Firefox ist nicht viel besser. Der Fixrefox hätte nichmal auf meine erste Festplatte gepasst… und da hatte ich früher unter Amiga Betriebssystem und Programme wie Textverarbeitung, Bildbearbeitung, Video-Verhaltung und ein paar Spiele. Alles auch mit Grafik und so… ein Browser war sogar auch dabei
An dieser Stelle denken wir an iCab (geht die Entwicklung eigentlich weiter?), der passt auf eine Diskette.

g3no · · 53 Views ·

Der Artikel stützt wieder meine These das jeder Programmieranfänger mit einem 286er beginnen sollte seine ersten 5 Programme zu schreiben. Nach den 5 Programmen DARF man die ganze Sache hinsichtlich der heute üblichen 512Mb Standard-Ram-Bestückung auch wieder ganz fix vergessen.

lemming · · 53 Views ·

g3no. Da gebe ich dir voll und ganz recht. Bei den älteren Semestern (zu denen ich nicht gehöre) wundert man sich auch über das Laden von mehr Daten die nicht auf den Bildschirm passen.

Olaf · · 53 Views ·

Ich glaube mal irgendwo gelesen zu haben, dass in Schleifen durchaus ein int dem byte vorzuziehen ist, da es sowieso in einem int-register landet und sonst noch umgewandelt werden müsste. Bin mir aber auch nicht mehr ganz sicher und bestimmt hängt das auch noch vom Compiler ab, was der daraus macht.

solara · · 53 Views ·

Ja, auch ich kann mich noch gut an Zeiten erinnern, wo man 64 kB RAM zur Verfügung hatte und da nicht nur Betriebssystem und Pascal-Compiler Platz gefunden haben, sondern auch ein selbstgeschriebenes Taschengeld-Verwaltungsprogramm - auch wenn es nicht viel zu tun hatte …
Auch war ich unheimlich froh, dass bei meinem ersten richtigen Rechner (Vobis 386SX-16, 1MB RAM) statt der versprochenen 40 MB wegen Lieferschwierigkeiten eine “riesige” 52-MB-Platte eingebaut wurde. Und irgendwann hab ich dann viel Erspartes zusammengekratzt und auf 2 MB RAM aufgerüstet. Das waren noch Zeiten …

Damals gabs auch noch die Speicherwettbewerbe a la “Wer schafft am meisten Platz unter DOS?”. Da wurde mit EMS, HIGHMEM, UMB, DEVICEHIGH und XMS hantiert, um das letzte Byte für die Anwendungen freizuschaufeln. Heute kauft man halt einfach einen weiteren Speicherriegel. Na, wer kann mit den ganzen Abkürzungen da oben noch was anfangen? Nein, EMS steht nicht für die “aufgebohrte” SMS …

Aber ich gebe es zu: heutzutage verschwende ich beim Programmieren auch nicht allzuviele Gedanken an die Speicherauslastung. Stabilität, Funktionalität und durchdachtes Klassen-Design sind mir da wichtiger, Speicheroptimierung kommt dann am Schluss, falls sie überhaupt nocht notwendig ist. Denn IMHO trägt gutes Design einer Anwendung dazu bei, speichersparend zu programmieren.

lemming · · 53 Views ·

Bei den o. g. Begriffen fällt mir spontan noch MEMAKER ein. Die Wunderwaffe bei der Speicheroptimierung. War am im Kampf um mehr Speicher in meinem Freundeskreis verpöhnt, da es die o.g. Competition aushebelte.

Ich hatte auf meinem ersten Rechner - auch ein 386 SX - zig Speicherkonfigurationen. CD-ROM laden oder nicht laden. Soundkarte laden oder nicht laden. Wenn man CD-ROM brauchte musste man wohl oder übel die Soundkarte ja auch laden. Und wenn dann immer in den HIGHMEM. Mein Vater hatte einen Computerhandel und somit hatte ich damals schon wahnwitzige 2MB EMS. Und ne 20MB 3,5″-Connor-Festplatte. Die habe ich heute noch.

Das war schon eine komplett andere Welt.

lemming · · 53 Views ·

Da fällt mir ein, Bill Gates wird ja nachgesagt dass er mal gesagt hätte, 640KB wären völlig ausreichend. Wenn’s stimmt, dann spiegelt das ungefähr genau das wieder was wohl ein Programmierer dachte als er von 2KB auf 640KB gewechselt ist. Mehr als ausreichend.

Btw. Steve Wozniak sagte vor kurzem er würde im Paradies leben. Er hätte heutzutage ein Computer der Millionenmal mehr Speicher hat als sein Computer (Apple I+II) - der für ihn schon aureichend Speicher hatte.

burned · · 53 Views ·

@lemming
Wenn du den Bericht in «Neues» auf 3Sat gesehen hast, dann war das nicht woz, sonder Andy Herzfeld.

lemming · · 53 Views ·

Wae das Andy? Ok, dann habe ich mich geirrt.

burned · · 53 Views ·

Da fällt mir doch gleich wieder die Situation mit einem meiner AZUBI ein (Mediengestalter). Sitzt vor einem G-400 (zu dem Zeitpunkt state of the art) und schaut mit verschränkten Armen auf den Monitor.
Da die Retusche nur in A4 zu machen war, gibt es eigentlich keine langen Wartezeiten zu erwarten. Nachgeschaut was er macht:
Er wollte einen Ausschnitt aus einem Bild nehmen. Drum hat er ein 10 MB-Bild erst auf 2 GB hochgerechnet und dann den Ausschnitt genommen. Vom Verständnis der Bildinterpolation mal ganz abgesehen. Ob ein Bild 10 MB oder 2 GB hat - war völlig wurscht.

Wer das Bit nicht ehrt…

Kristof · · 53 Views ·

Haaaach. Das waren noch Zeiten, als man sein ganzes ROM - Listing auswendig kannte.

Martin Pyka · · 53 Views ·

Leave a comment