Rolf B: Funtion in Funktion Unterschiede Closures

Beitrag lesen

problematische Seite

Hallo Andreas,

wenn Du es so siehst, gibt es Funktionen als Parameter schon, seit es die von Neumann Architektur gibt. Eine Einsprungadresse zu bestimmen und herumzureichen ging im Assembler schon immer und Dennis Ritchie hat das in diesen monströsen Makroassembler namens C vererbt.

Sehr viele Programmiersprachen stellen die Adresse eines Codestücks jedenfalls nicht als Wert zur Verfügung und erlauben auch keine Call-Operation auf einen Wert. Aus der wohlbegründeten Paranoia heraus, dass dieser Wert eine ungültige Adresse darstellen könnte.

Ideen, wie man sowas auf halbwegs sichere Weise tun kann, kamen dann erst später. Die historische Entwicklung beginnt laut en.wikipedia 1970 mit der Programmiersprache PAL und setzt sich in Scheme fort. Auch in Common Lisp und Smalltalk findet man Code als Objekt erster Klasse schon früh.

Dass eine Funktion auch ihren Kontext mitnimmt, also eine Closure bildet, ist ein Schritt mehr. Viele Sprachen bieten Funktionszeiger oder Methodenzeiger an, sie unterstützen auch Callbacks, das Ankleben eines Kontextes ist aber nicht so verbreitet.

Rolf

--
sumpsi - posui - obstruxi