?

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:
[User Picture]From: thesz
2011-01-18 08:51 pm (UTC)
>Во-вторых - в хаскеле тоже так, вот "type a = b" это выглядит в точности как определение функции type с одним аргументом: "f a = b"

Как я понимаю, вы не знаете Хаскель вообще никак.

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

Эта область обещает быть чрезвычайно плодовитой. Её основание, положенное учеником Колмогорова Мартином Пером Лёфом, не содержит противоречий, в отличии от систем типов большинства языков программирования (и Хаскеля в том числе). Используя её, я могу заставить программиста доказать существование определённого объекта, чтобы он построил доказательство его существования, написав программу. Я говорю "заставить" потому, что у него не будет шансов допустить ошибку.

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

Так что, если не хотите всю жизнь писать "type a = b" в спорах "Лисп супротив Хаскеля, Лисп играет белыми", посмотрите на Coq или Agda2 (или на Qi, он на Лиспе, но на последний не советую - фигня-с, судя по всему). Эти языки могут сэкономить кучу времени при создании действительно сложных систем.

Как сейчас мне экономит время Хаскель, но ещё лучше.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-19 03:13 am (UTC)
> Как я понимаю, вы не знаете Хаскель вообще никак.

Да не надо вертеться-то. Я привел два конкретных примера, когда спецформы в хаскеле синтаксически неразличимы с аппликацией, прямо как в лиспе. Не надо писать в ответ простыни нерелевантного текста, про системы типов я знаю, Мартина Лефа читал, но к рассматриваемому вопросу они никакого отношения не имеют - мы говорим о синтаксисе использования спецформ в языке, к чему было приплетать типы, coq или агду? Просто признайте уже конкретный факт, что все, что вы говорили о спецформах в лиспе - чистый бред. Опуская уже всякое отсутствие аргументации в вашем предположении о том, что единый синтаксис для функций и спецформ - плохо (если ВАМ это не нравится, то так и следует говорить: "а мне не нравится"), это присутствует практически в любом языке (в том числе вашем любимом хаскеле, см. примеры).
(Reply) (Parent) (Thread)
[User Picture]From: thesz
2011-01-19 07:52 am (UTC)
>Я привел два конкретных примера, когда спецформы в хаскеле синтаксически неразличимы с аппликацией, прямо как в лиспе.

Это если не обращать внимания на то, что это разный синтаксис.

Но да, типы в Хаскеле - подмножество лямбда-исчисления.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-19 12:26 pm (UTC)
еще раз:
f x = 5
f x y 5
первое - спецформа
второе - аппликация
(if x y z)
(f x y z)
первое - спецформа
второе - аппликация

в чем разница?
и там и там различие между формами совершенно одинаково - в хаскеле это невозможность аргументу называться "=", а в лиспе - невозможность ф-и называться "if".
(Reply) (Parent) (Thread)