LINUX.ORG.RU
ФорумTalks

Лисперы просветите


0

0

Тут на днях от нечего делать открыл доку по emacs lisp, просмотрел пару строчек, вчитался и капец...

Скажите, если я правильно понял, смысл языка укладывается в три предложения:

1. Все в лиспе есть списки, состоящие из атомов, заключенных в круглые скобки
2. Если перед списком стоит кавычка, то при вычислении список возвращяется как есть
3. Если же кавычка не стоит, то первый атом из списка считается за ключевое слово (функцию насколько я поверхностно понял), которой передаются остальные атомы в качестве параметров

Это что действительно так? Если да, то я просто ошарашен, убит и раздавлен. Такую изящную глобальную концепцию мог придумать только тру гений, я преклоняюсь перед ним.

★★★★★

> 1. Все в лиспе есть списки, состоящие из атомов, заключенных в круглые скобки

из атомов или списков

> 3. Если же кавычка не стоит, то первый атом из списка считается за ключевое слово (функцию насколько я поверхностно понял), которой передаются остальные атомы в качестве параметров

это либо имя функции, либо макроса, либо специальная форма.

> Это что действительно так?

В целом, да.

Begemoth ★★★★★
()

Точнее, код - это данные. Весь синтаксис языка определяется синтаксисом литералов типов данных.

Begemoth ★★★★★
()

"Много лет назад Черч и Тьюринг выдвинули гипотезу, что любой вычислительный процесс, который можно разумно назвать алгоритмом, можно промоделировать на машине Тьюринга. Эта гипотеза известна как тезис Черча - Тьюринга и является общепринятой."

В основу лиспа положен очень мощный математический фундамент.

Sun-ch

anonymous
()

Для минимального Лиспа приложения функции недостаточно, нужны ещё специальные конструкции lambda и cond. Вот если их добавить, то уже больше ничего не надо.

Другой возможный базис (работает только для ленивой семантики вычислений) - комбинаторы S и K, так ещё более минимальное исчисление получается, даже специальной формы для cond не надо, реализуется функцией.

Читать про математические основы тут:

http://en.wikipedia.org/wiki/Lambda_calculus

http://en.wikipedia.org/wiki/SKI_combinator_calculus

Так что, гений тут не Маккарти, гении - Черч, Шонфинкель и Тьюринг.

anonymous
()

>2. Если перед списком стоит кавычка, то при вычислении список возвращяется как есть

Да и кавычки нет. Это по сути тоже функция (quote ...). Пункт 2 сводится к пунтку 1. :)

Zubok ★★★★★
()
Ответ на: комментарий от anonymous

"Марвин Мински (Marvin Minsky): "Если бы мы могли преднамеренно взять под контроль наши системы удовольствия, мы могли бы воспроизводить удовольствие успеха без необходимости в самом деле достигать чего-то". "В 1954 году Джон Маккарти совместно с Клодом Шенноном (Claude Shannon), Марвином Мински и Нэтом Рочестером (Nat Rochester) задумали провести двухмесячную исследовательскую конференцию, целью которой было изучение вопроса: "Возможно ли настолько точное описание интеллекта, чтобы имитировать его на машине?"

Вот эти люди заложили основы. Так что уменьшать их влияние по меньшей мере глупо. А лисп был просто удобный инструмент и не более.

Sun-ch

anonymous
()
Ответ на: комментарий от anonymous

Исходно в лиспе было dynamic scoping - Маккарти не совсем понял лямбда исчисление.

ИМХО исходный пост был о синтаксисе лиспа, а не о семантике.

Begemoth ★★★★★
()
Ответ на: комментарий от Zubok

quote не функция, а специальная форма.

anonymous
()
Ответ на: комментарий от anonymous

>который можно разумно назвать алгоритмом

сударь, какие алгоритмы? речь идёт об обсчитываемости функции. алгоритм - слишком общее понятие: картошку почистить - тоже алгоритм.

>В основу лиспа положен очень мощный математический фундамент.

в тезисе Черча нету ничего особо фундаметального - он остался тезисом, т.к. аксиомой никто не посмел обозвать, как теорема - не доказано, контпример никак не нашли.

Pi ★★★★★
()
Ответ на: комментарий от Begemoth

>Маккарти не совсем понял лямбда исчисление.

Давай поучи отцов ебаться.

Вспомни еще

Joel Moses. The Function of FUNCTION in LISP, or Why the FUNARG Problem Should be Called the Environment Problem. MIT AI Memo 199.

anonymous
()

Вобщем всё правильно, за исключением небольших поправок относительно макросов, спецформ и прочего. Я тоже удивлён, сколькими вредными и мешающими строить и жыть штуковинами можно загадить язык программирования при желании, хотя можно вот так вот просто...

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

А давай уже пинать плюсы? Кстати на лиспе единственно, что впечатляет - автокад на винде. Может есть чего кроме емакса и секретных проэктов из Пэнтагону Вы уж расскажите, пожалуйста.

Sun-ch

anonymous
()
Ответ на: комментарий от anonymous

Плюсы - говно, а автолисп - не лисп, а тоже говно.

Из серьезных софтин на Лиспе - Maxima и Axiom.

anonymous
()
Ответ на: комментарий от anonymous

Ну и в каком месте в лямбда исчислении dynamic scoping?

Begemoth ★★★★★
()
Ответ на: комментарий от anonymous

> А давай уже пинать плюсы?

Почему именно плюсы? ИМХО есть достаточно распространённые наречия, перегнавшие это по монструозности

> Может есть чего кроме емакса и секретных проэктов из Пэнтагону Вы уж расскажите, пожалуйста.

На сайтах почти всех коммерческих лиспъов есть разделы success stories. Читайте и наслаждайтесь.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

>> А давай уже пинать плюсы?

>Почему именно плюсы? ИМХО есть достаточно распространённые наречия, перегнавшие это по монструозности

Назовите всех поименно. Или хотя бы некоторые.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Или хотя бы некоторые.

Common Lisp :)

anonymous
()
Ответ на: комментарий от bugmaker

Ну дык видал.
Даже систему отличающую в реальном времени, по сигналу от радара, настоящую ядерную боеголовку от мнимой цели. По сложной математике спектра отражений и т.д.
Только такие вещи, делают люди из МИТа или питерские алкоголики из какой-нибудь академической помойки.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Ну дык видал.

> Даже систему отличающую в реальном времени, по сигналу от радара, настоящую ядерную боеголовку от мнимой цели.

И что - правильно отличала? На вооружении стояла?

tailgunner ★★★★★
()
Ответ на: комментарий от bugmaker

> Да ты наверное уже ;)

Не-а. Я искренне думал, что ты считаешь Си++ самым у#бищным из монстров. Поэтому я удивлен и заинтригован :)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я хз насчет вооружения. Но презентация библиотеки dsp была сделана американской фирмой, специализирущецся на ПРО.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Я хз насчет вооружения. Но презентация библиотеки dsp была сделана американской фирмой, специализирущецся на ПРО.

презентация... к тому же вражеская... :/

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Ну, мне трудно судить ибо я к с++ привык уже, ибо давно с им работаю. Вобщем, ИМХО монструозность с++ в какой-то степени объесняется (но не оправдывается) достаточно богатыми возможностями и неплохой производительностью, хотя видимо это не очень объективное мнение.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

>Ну делают ведь. В чём проблема-то?

А хули толку? Г-н Перельман тоже любезно изволит, проживаеть'c в Питере, только вот не слыхать о нем ничего, может уже околел от голоду с акадекемических зарплат'c. Да'c.

Sun-ch
()

> 3. Если же кавычка не стоит, то первый атом из списка считается за ключевое слово (функцию насколько я поверхностно понял), которой передаются остальные атомы в качестве параметров

Это не так. Кроме функций существуют еще макросы и специальные формы, которые нарушают эту, казалось бы стройную, концепцию.

Burbaka ★★
()
Ответ на: комментарий от bugmaker

Дык Витек, ты думаешь лисп выучил и ты крут ка 3залупы вместе?
Это глупоздь, детская. Реальные люди пишут "МАТЕМАТИКУ" например на FORTRAN 4.

Sun-ch
()
Ответ на: комментарий от Sun-ch

> Реальные люди пишут "МАТЕМАТИКУ" например на FORTRAN 4.

Нет такого языка :D Есть Fortran IV (и на нем уже давно никто не пишет :))

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

>> Реальные люди пишут "МАТЕМАТИКУ" например на FORTRAN 4.

>Нет такого языка :D Есть Fortran IV (и на нем уже давно никто не пишет :))

Тут Вы неправы, на фортране пишут, правда основная причина это огромное кол-во уже написанных специфичных библиотек. Есть даже такая профессия: перевод программ с фортрана на сильно живые языки. :)

soomrack ★★★★★
()
Ответ на: комментарий от soomrack

>>Нет такого языка :D Есть Fortran IV (и на нем уже давно никто не пишет :))

>Тут Вы неправы, на фортране пишут

Только не на Fortran IV, а на более современных диалектах :) Fortran 9[05], на крайняк - Fortran 77.

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

Аналог Математики (лучше всяких Macsyma однозначно) написанный на Fortran 77 я видел, а вот чтоб на FORTRAN IV - такого не было. Правда, в той реализации 10е правило Гринспуна так и торчало из всех дыр.

anonymous
()
Ответ на: комментарий от bugmaker

> ИМХО монструозность с++ в какой-то степени объесняется (но не оправдывается) достаточно богатыми возможностями и неплохой производительностью

Ты нам Си++ не оправдывай, ты назови список монстров, которые его "перегнали по моструозности" :D

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

C++ околел. Рулят Cobol, Java, C# и VB.NET.

anonymous
()
Ответ на: комментарий от tailgunner

>ты назови список монстров, которые его "перегнали по моструозности"

Легко.

CoboL, PL/1, Snobol, ADA(этих старых шлюх защищает профсоюз DARPA)

Sun-ch
()
Ответ на: комментарий от Sun-ch

>>ты назови список монстров, которые его "перегнали по моструозности"

>Легко.

>CoboL, PL/1, Snobol, ADA

Саныч, ну при всем уважении - ты ж не знаешь этих языков, иначе не поставил бы PL/I рядом с Си++ ;) В свое время я поработал на PL/I, и знал его неплохо - так вот, Си++ сложнее будет. С Cobol знаком только теоретически - язык уродливый, но не сложный. Ada - достойный соперник Си++, это да. WTF Snobol?

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

> Дык Витек, ты думаешь лисп выучил и ты крут ка 3залупы вместе?

Аха, прямо круче нету. В начало поста загляни, чё там учить?

> Это глупоздь, детская. Реальные люди пишут "МАТЕМАТИКУ" например на FORTRAN 4.

Ну, это только для реальных потсаноф. У нас, ничтожных, ни одного компа на перфокартах нету уже.

bugmaker ★★★★☆
()
Ответ на: комментарий от bugmaker

> Да тот же питон например, та ещё кака. Ты это хотел услышать?

Не-а. Твое отношение к Питону (точнее, к Django) я и так знаю :) Мне нужен список языков, которые монструознее Си++. Питон можно как угодно ругать, но он ни разу не монструозный (ну или скажи об этом явно :) )

tailgunner ★★★★★
()
Ответ на: комментарий от Sun-ch

> Писавшие на PL/I разве уже не околели от старости?

Еще не все, как видишь :) И вообще, PL/I жив! Недавно набрел в списке рассылки gcc на сообщение о реализации компилятора PL/I для GCC.

tailgunner ★★★★★
()
Ответ на: комментарий от bugmaker

>Ну, это только для реальных потсаноф. У нас, ничтожных, ни одного компа на перфокартах нету уже.

Дык, ясен пень, что ПТУ. Вы на 1C дрочите, или там там дельфи разные.

Sun-ch
()
Ответ на: комментарий от tailgunner

>Недавно набрел в списке рассылки gcc на сообщение о реализации компилятора PL/I для GCC.

Ага, мы конечно мертвы, не не мертвее, чем четверть века тому назад.

Sun-ch
()
Ответ на: комментарий от tailgunner

SNOBOL (StriNg Oriented symBOlic Language) is a computer programming language developed between 1962 and 1967 at AT&T Bell Laboratories by David J. Farber, Ralph E. Griswold and Ivan P. Polonsky. (The name is a jocular reference to COBOL and ALGOL, but these languages have no other connection and no other notable similarities).

Griswold, Ralph E., J. F. Poage, and I. P. Polensky. The SNOBOL 4 Programming Language. Englewood Cliffs, NJ: Prentice Hall, 1968 (ISBN 0-13-815373-6).
Hockey, Susan M. Snobol Programming for the Humanities. New York: Clarendon Press; Oxford: Oxford University Press, 1985 (ISBN 0-19-824676-5).

Sun-ch
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.