J. von Neumann hat durch seine Rechner-Architektur die Unterscheidung zwischen Programmen und Daten - im hegelschen Sinne - aufgehoben, indem er beides als Daten in demselben Speicher beobachtete.
Differenztheoretisch kann Programm durch die Differenz zwischen Daten und Programm gesehen werden, indem auf der Unterscheidungseite Programm das als "Daten" Ausgegrenzte wiedereintritt.
Insofern als man durch Programme Daten verändern kann, kann man durch Programme auch Programme verändern, weil die Programme auch in Form von Daten vorliegen. Allerdings gibt es nur wenig sinnvolle Anwendungen, die überdies auch ohne Programmveränderung programmiert werden können. Der Nutzen liegt vor allem in der Spreicherauslastung. Und hat auch einen Temponachteil:
Die Harvard-Architektur bezeichnet in der Informatik ein Schaltungskonzept zur Realisierung besonders schneller CPUs und Signalprozessoren. Der Befehlsspeicher ist physisch vom Datenspeicher getrennt und beide werden über getrennte Busse angesteuert. Der Vorteil dieser Architektur besteht darin, dass Befehle und Daten gleichzeitig geladen, bzw. geschrieben werden können. Bei einer klassischen Von-Neumann-Architektur sind hierzu mindestens zwei aufeinander folgende Buszyklen notwendig.
Zudem sorgt die physikalische Trennung von Daten und Programm dafür, dass bei Softwarefehlern kein Programmcode überschrieben werden kann. Nachteilig ist allerdings, dass nicht benötigter Datenspeicher nicht als Programmspeicher genutzt werden kann.
Die Harvard-Architektur wurde zunächst überwiegend in RISC-Prozessoren konsequent umgesetzt.
Literatur:
"Programme werden häufig als Software bezeichnet. Im Informatik-Duden steht: "Die Vorsilbe ,Soft‘ verdeutlicht, dass es sich bei der Software um leicht veränderbare Komponenten einer Rechenanlage handelt." Leicht verändern lässt sich bei näherem Hinsehen nicht das Programm, was auch die Informatikerkosten zeigen, sondern die programmgesteuerte Maschine, wenn man das Programm bereits hat. Die einzelne Lochkarte eines Programmes ist eine konstruierte Komponente der je konkreten, zweckgebundenen Maschine. Lochkarten konnten sich als Komponenten gerade deshalb nicht sehr lange behaupten, weil sie sich nicht sehr leicht verändern lassen. Die wohlgelochten Karten enthalten nicht, sie sind das Programm. Dass ein Programm nicht nur in Form von gelochtem Karton, sondern auch mit Graphitpixeln oder mit magnetischen Teilchen konstruiert werden kann, tut dessen materieller Konstruktion keinerlei Abbruch. Wenn man - was im Alltag häufig zu hören ist - die Lochkarten, weil man sie anfassen kann, zur Hardware zählt und die Anordnung der Löcher als Software bezeichnet, müsste man jede konstruktionsbedingte Form von Maschinenteilen als Software bezeichnen. Auch ein Hammer erfüllt seine Funktion nur, wenn dass Loch für den Stiel im Hammerkopf am richtigen Ort ist.
Seit von J.von Neumann entdeckt hat, dass wir Programme und Daten in unseren Maschinen gleich modulieren, zählen wir die Programme auch zu den Daten. Im Alltagsbegriff "Daten" steckt via Datum, dass Daten in einem bestimmten Format geschrieben sind. In der Computerterminologie hiessen ursprünglich jene Zeichen "Daten", die zum Zweck der Auswertung, beispielsweise auf Lochkarten, materialisiert wurden. Als man mit Computern auch unformatierte Texte verarbeiten konnte, nannte man alle Zeichen, die verarbeitet wurden, Daten (110). Mittlerweile ist "Daten" ein ziemlich sinnlos gewordener Begriff, weil es heute keine Zeichen mehr gibt, die man mit dem Computer nicht in irgendeinem Sinne verarbeiten kann (111). Wir verwenden ihn pragmatisch anstelle von Zeichen, um den entsprechenden EDV-Kontext mitzuvermitteln. Wo wir die Symbole mit der Maschine nur transportieren und verwalten, bezeichnen wir die Symbole als Daten im engeren Sinne. Wo unsere Symbole für Schaltungs- oder Speicherzustände stehen, also die jeweilige Maschine in einer gewissen Hinsicht abbilden, sprechen wir von Programmen.
Als Maschinensprachtexte im engeren Sinne bezeichnen wir nur Daten, die Programme repräsentieren (112). Programme, die in der Maschinensprache geschrieben sind, sind zunächst wie jedes höhere Programm nichts anderes als Beschreibungen der jeweiligen Maschine. Allerdings zeigen diese Beschreibungen durch ihre Unlesbarkeit ihren Charakter besonders deutlich: sie zeigen, dass sie nicht als Beschreibungen intendiert sind. Intendiert sind Manipulationen, die die gewünschten Schalterstellungen ergeben. (Todesco, Technische Intelligenz:127f).