?

Log in

Почему LISP? - Жить не можем без проблем! [entries|archive|friends|userinfo]
Жить не можем без проблем!

[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Почему LISP? [Jan. 13th, 2011|02:05 pm]
Жить не можем без проблем!

ru_lisp

[aralex]

Как говорил Ворошилов, вопрос к Знатокам (к знатокам LISP-а в данном случае)! Почему таки LISP? Или, если конкретнее, вопроса три:

  1. Для каких именно задач LISP подходит больше, чем другие языки?
  2. За счёт чего для них он подходит больше?
  3. В чём именно выражается его преимущество?

Если не в лом, приведите, pls, коротенькие иллюстрации на LISP-е (или ссылочку на них). Заранее благодарен!

Исходно данный пост был размещён в сообществе ru_programming, но там Знатоков, способных ответить внятно и по сути, увы, не нашлось :(

linkReply

Comments:
From: dmzlj
2011-01-14 08:34 am (UTC)
А по поводу хаскелла и учебников --- давайте устроим срач в ru_lisp ?


dmz@x200:~$ apt-cache search ghc | wc -l
508

dmz@x200:~$ cabal list | egrep '^\*' | wc -l
2739

из них для вычисления факториала:

dmz@x200:~$ cabal list | egrep '^\*' | grep -i factorial

(ноль)


это всякие библиотеки и тулзы, написанные для хаскелля и на хаскелле. Из этого можно отметить: драйвера для различных СУБД, веб-фреймворки, средства для работы с xml, изображениями, нейронными сетями,

не многовато ли для учебников?



(Reply) (Parent) (Thread)
From: va_sav
2011-01-14 09:03 am (UTC)
я о себе говорю. На Lisp'е я довольно много писал в 90-х. И сейчас временами пишу. И взаимодействую с людьми, которые активно используют Lisp и разные библиотеки под него. А вот вокруг куча народа "изучает Haskell" - путем прогона примеров из разных учебников. Пока в локальной среде ничего полезного/рабочего на Haskell не видел.

Может быть более политкорректно это звучит примерно так: "Haskell тоже функциональный язык, но у него входной порог (уровень с которого можно легко писать полезные программы) заметно выше чем у Lisp'а"
(Reply) (Parent) (Thread)
[User Picture]From: b00ter
2011-01-14 09:16 am (UTC)
Я тоже не видел полезного софта ни на Haskell, ни на Lisp. Значит ли это, что оба языка бесполезны в принципе?
(Reply) (Parent) (Thread)
From: va_sav
2011-01-14 09:57 am (UTC)
Вопрос был о применении. На Lisp'е есть опыт писания прототипов медицинской и лингвистической экспертных систем. А также построения решателей для задач, сводившихся к теории расписаний. Вполне себе полезные и применявшиеся у заказчиков программы, хотя, конечно, это не тиражный софт. В принципе читал, что где-то народ что крутое пишет и на Haskell - я просто лично такого не видел.
(Reply) (Parent) (Thread)
[User Picture]From: b00ter
2011-01-14 10:02 am (UTC)
Простите мою необразованность, но экспертные системы разве не проще писать на Прологе?
(Reply) (Parent) (Thread)
From: va_sav
2011-01-17 06:38 am (UTC)
Любые программы лучше писать на хорошо известном программисту языке программирования. Это как философское обоснование.

Впрочем, писали программы и на Прологе, но там свои заморочки. Поскольку в исходных данных чего только не было - и числовые значения, и описания и логические флаги - Lisp оказался удобней.

(Reply) (Parent) (Thread)
[User Picture]From: thesz
2011-01-14 10:24 pm (UTC)
>На Lisp'е есть опыт писания прототипов медицинской и лингвистической экспертных систем.

Это ваш личный опыт?
(Reply) (Parent) (Thread)
From: va_sav
2011-01-17 06:26 am (UTC)
Был в группе, писавшей экспертные системы. С расписаниями завязалась другая группа, но их программы видел.

В 90-х прошлого века, был короткий период - заказчики вспомнили об ИИ, и принесли в клювике задачи и финансирование. Вот усиленно и писали. Теперь такие команды и не соберешь.
(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 09:20 am (UTC)
У хаскеля входной порог для написания полезных программ нулевой. Потому что в нем есть ghci и его вполне можно использовать как продвинутый калькулятор. Для свистоподелок он вполне заменяет perl, но дает какие-то проверки корректности.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-14 09:32 am (UTC)
В качестве продвинутого калькулятора ghci сосет у действительно продвинутых калькуляторов, а при попытке написания любого приложения вылезает IO, которое и поднимает порог вхождения на недосягаемые высоты по сравнению с другими языками.
(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 09:43 am (UTC)
>у действительно продвинутых калькуляторов
Это которые?
>вылезает IO
Prelude.interact .
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-14 12:02 pm (UTC)
> Это которые?

Mathematica, например.

> Prelude.interact .

Как буд-то interact спасет от йобли с тайпчекером, когда попытаешься что-то написать с ио. Вот банальный пример - считать сперва длину списка, а потом список соответствующей длины. У нас этот список будет IO (LIST ...), и теперь чтобы с ним работать тебе обеспечена либо do-нотация, либо mapM и прочее говно, либо вообще >>=/>>/return руками. Очень низкий порог вхождения, очень.
(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 09:45 pm (UTC)
>>Mathematica
Никогда не имел дела. Из всего этого общался только с маткадом, и показал он себя... говно-говном, в общем-то, хотя графики рисует красиво.

>Как буд-то interact спасет от йобли с тайпчекером
С тайпчекером ебуться только извращенцы. Он используется для проверки контрактов операций. IO - такой контракт, достаточно простой. И таки да, если стоит задача избежать 'ебли с тайпчекером' по поводу IO, то в случае говноподелки-фильтра - спасает.
(Reply) (Parent) (Thread) (Expand)
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
From: (Anonymous)
2011-01-14 12:05 pm (UTC)
Ах, да, еще ошибки типа "где-то в вашем коде вместо типа %простыня_текста% тип %другая_простыня_текста%, вы хам и пидорас, месье, я не стану компилировать вашу программу" тоже очень снижают порог вхождения.
(Reply) (Parent) (Thread) (Expand)
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
[User Picture]From: vanja_y
2011-01-15 09:48 pm (UTC)
Matematica на которую ссылается аноним штука на мой взгляд уродливая и громоздкая, но очень раскручена среди прикланых математиков в университетах. По идее она являтся разновидностью векторного языка с нотацией максимально приближенной к математической. Я со своей колокольни предпочитаю J от jsoftware.
(Reply) (Parent) (Thread)
From: va_sav
2011-01-14 10:04 am (UTC)
?

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

Порог вхождения - это скорее совокупность знаний и различных деталей, которые приходится держать в голове, чтобы написать не совсем тривиальную программу на выбранном языке. Типичный пример языка с очень низким порогом вхождения - PHP.
(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 10:09 am (UTC)
>совокупность знаний и различных деталей, которые приходится держать в голове, чтобы написать не совсем тривиальную программу на выбранном языке. Типичный пример языка с очень низким порогом вхождения

Хаскелл. Объективно. Ниже только у перла.
(Reply) (Parent) (Thread)
[User Picture]From: grundik
2011-01-16 07:20 am (UTC)
Неправда. Я на схеме начал писать через 20 минут.
На Хаскелле пробовал несколько часов - писать не могу, более того, не понимаю кода из туториалов (впрочем, нередко код из туториалов не встречает понимания и у ghc, собственно, ещё один минус).
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: thesz
2011-01-16 11:13 am (UTC)
Товарищ grundik опирается в своих выводах только на свой единичный опыт, всё остальное ему безразлично.
(Reply) (Parent) (Thread) (Expand)
(no subject) - (Anonymous) Expand
From: dmzlj
2011-01-14 09:46 am (UTC)
Ну, с последним спорить не буду --- действительно, входной порог есть, хотя теперь непонятно, почему.
(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 10:10 am (UTC)
Да потому что мануалы к стандартной библиотеке писали высоколобые академики.
(Reply) (Parent) (Thread)
[User Picture]From: 13_49
2011-01-14 12:05 pm (UTC)
Cltl2 и ANSI CL тоже не бараны писали, но мне в пору ньюбства там всё понятно было.
(Reply) (Parent) (Thread)
From: va_sav
2011-01-14 03:33 pm (UTC)
Согласен. Читать CLtL гораздо приятнее, чем любой из найденных учебников Haskell'а.

(Reply) (Parent) (Thread)
[User Picture]From: permea_kra
2011-01-14 09:48 pm (UTC)
>ANSI CL
ANSI. Т.е. институт стандартизации. Т.е. для баранов.
(Reply) (Parent) (Thread) (Expand)
[User Picture]From: thesz
2011-01-14 10:20 pm (UTC)
Как с Хаскелем?
(Reply) (Parent) (Thread) (Expand)
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(Deleted comment)
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand
(no subject) - (Anonymous) Expand