Diskussion:Algol 60

Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 25. Juli 2007 um 16:31 Uhr durch SonniWP (Diskussion | Beiträge) (Lisp unsauber definiert ?). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Letzter Kommentar: vor 17 Jahren von SonniWP in Abschnitt Lisp unsauber definiert ?

Call by name

Call by Name - Beim Aufruf wird die Parameter-Variable durch den Parameter ersetzt. Dadurch wirken sich Änderungen der Variable auf den Aufrufer aus. Call by Name unterscheidet sich durch die Semantik der Ersetzung von dem heute üblichen Call by Reference;

Was ist dann die Semantik, die den Unterschied ausmacht? Mir wird das nicht ganz klar. Meint das, im einen Fall wird direkt die Speicheradresse an das Unterprogramm übergeben, und im anderen Falle ein Variablenname, der vom Laufzeitsystem in eine Speicheradresse umgewandelt wird? Dann haben wir aber aus Programmierersicht keinen Unterschied ... --zeno 21:18, 8. Jun 2003 (CEST)
Bei Call by Name wird in der aufgerufenen Funktion der Parameter textuell durch das Argument ersetzt. Mal ein Beispiel in Algol60:
 real procedure sum(i, n, x, y);
   value n; integer i, n; real x, y;   -- n: Call by Value, Rest: Call by Name
     begin
       real s := 0;
       for i = 1 step 1 until n do s := s + x*y;
       sum := s
     end
Der Aufruf sum(k, m, a[k], b[k]) berechnet dann a[1]*b[1]+a[2]*b[2]+...+a[m]*b[m] --Sys64738 21:54, 8. Jun 2003 (CEST)

Lisp unsauber definiert ?

Das ist so nicht ganz richtig. Die Definition von LISP ist in seinen Anfangsgründen wohl unsauber gewesen, aber im Revised Report von John McCarthy, MIT, Cambridge, Mass. April 1960 ist bereits eine rekursive Definition in Lisp enthalten die sogar als Implementierung geeignet war, wie meine Diplomarbeit von 1970 an der Uni Karlsruhe ("Anwendung von LISP zur Realisierung und Implementierung algolähnlicher Sprachen") nachgewiesen hat und von Goos anerkannt wurde. --SonniWP 16:30, 25. Jul. 2007 (CEST)Beantworten