Algol-60. Двухуровневое программирование на ленивом ФЯ.
От: thesz Россия http://thesz.livejournal.com
Дата: 05.02.09 16:31
Оценка:
Reddit comment by neelk

Цитата:

It was basically a two-level language, with one level being typed lambda calculus and the second level being a Hoare-style while loop language...

...Note that imperative commands are actually a kind of expression, so the fact that the lambda-calculus part was call-by-name is critically important -- you need it be able to build up new control structures in the imperative part by writing functions that accept commands as arguments. (You also needed to be able to pass lvalues around, so you could paramterize over the targets of an assignment statements in a command, hence the basic data types coming in lvalue and rvalue variants.)


Call-by-name — это отложенные вычисления (не ленивые — могут быть вызваны несколько раз).
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Algol-60. Двухуровневое программирование на ленивом ФЯ.
От: BulatZiganshin  
Дата: 05.02.09 18:02
Оценка:
Здравствуйте, thesz, Вы писали:

T>Call-by-name — это


текстуальная подстановка тела процедуры по месту вызова. что-то вроде синтаксического препроцессора. разумеется, это то, как документирована семантики, в реализации они старались это описание худо-бежно имитировать
Люди, я люблю вас! Будьте бдительны!!!
Re[2]: Algol-60. Двухуровневое программирование на ленивом Ф
От: geniepro http://geniepro.livejournal.com/
Дата: 06.02.09 05:32
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:

BZ>Здравствуйте, thesz, Вы писали:


T>>Call-by-name — это


BZ>текстуальная подстановка тела процедуры по месту вызова. что-то вроде синтаксического препроцессора. разумеется, это то, как документирована семантики, в реализации они старались это описание худо-бежно имитировать


Call-by-name в императивных языках способен кучу бед причинить. Об этом ещё Вирт во "Взгляде из Зазеркалья" сокрушался...
Re[3]: Algol-60. Двухуровневое программирование на ленивом Ф
От: thesz Россия http://thesz.livejournal.com
Дата: 06.02.09 09:44
Оценка:
G>Call-by-name в императивных языках способен кучу бед причинить. Об этом ещё Вирт во "Взгляде из Зазеркалья" сокрушался...

Неэффективность ещё не куча бед.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: Algol-60. Двухуровневое программирование на ленивом Ф
От: Аноним  
Дата: 06.02.09 10:32
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:
BZ>текстуальная подстановка тела процедуры по месту вызова. что-то вроде синтаксического препроцессора.
Не обязательно тела процедуры — можно использовать любое выражение языка (элемент массива, переменная и т.д.).
Re[3]: Algol-60. Двухуровневое программирование на ленивом Ф
От: thesz Россия http://thesz.livejournal.com
Дата: 06.02.09 11:39
Оценка:
BZ>>текстуальная подстановка тела процедуры по месту вызова. что-то вроде синтаксического препроцессора.
А>Не обязательно тела процедуры — можно использовать любое выражение языка (элемент массива, переменная и т.д.).

Добавлю.

Абстрактная интерпретация Алгола-60 позволяла получать идентичные графы потока данных для написанных (почти) сколь угодно вычурных программ, но вычисляющих ту же функцию.

Вот тут я в ЖЖ писал: http://thesz.livejournal.com/669829.html

Вот на этой самой АМС и проводили такие эксперименты. Берётся семантика Алгола, записанная на АМС, берётся программа на Алголе, вычисляется её поток данных и получается всё время одно и то же.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[2]: Algol-60. Двухуровневое программирование на ленивом Ф
От: Трурль  
Дата: 06.02.09 11:42
Оценка: +1
Здравствуйте, BulatZiganshin, Вы писали:

BZ>Здравствуйте, thesz, Вы писали:


T>>Call-by-name — это


BZ>текстуальная подстановка тела процедуры по месту вызова.


Или, проще говоря, бета-редукция.
Re[4]: Algol-60. Двухуровневое программирование на ленивом Ф
От: geniepro http://geniepro.livejournal.com/
Дата: 07.02.09 22:55
Оценка:
Здравствуйте, thesz, Вы писали:

G>>Call-by-name в императивных языках способен кучу бед причинить. Об этом ещё Вирт во "Взгляде из Зазеркалья" сокрушался...


T>Неэффективность ещё не куча бед.


Причём здесь неэффективность?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.