?

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-17 08:36 am (UTC)
>Я имел в виду не конкретную одну ошибку, а в общем, конечно же. то есть полезнее уметь быстро локализовывать и исправлять любую ошибку, чем уметь обнаруживать некий узкий класс ошибок на раннем этапе.

Вы считаете, что эти две вещи мешают друг другу? Серьёзно?

>А зачем нам делать изменения всюду, где это необходимо, если потом спецификация изменится, и нам все это, что мы меняли, придется менять снова?

Почему мы будем менять "всё это, что мы меняли"?

Уберите квантор всеобщности, у вас даже вопроса не получится.

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

Наоборот. Дали. Очень много дали. Они показали нам, что программы, правильно реализующие все предыдущие спецификации, не удовлетворяет каким-то критериям.

Все предыдущие спецификации не содержали чего-то важного, что должна содержать следующая.

Мы более уверены, что это не ошибка программы, чем если бы типов не было.

Собственно, именно по этому критерию я и выбрал когда-то Хаскель. Как язык для написания прототипов, инструмент для исследования пространства решений, дающий при этом максимальные (на тот момент) гарантии правильности (соответствия задуманному) реализации решения.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-18 09:33 am (UTC)
> Вы считаете, что эти две вещи мешают друг другу?

Нет, конечно, с чего вы взяли?

> Уберите квантор всеобщности, у вас даже вопроса не получится.

Хорошо:
А зачем нам делать изменения всюду, где это необходимо, если потом спецификация изменится, и нам то, что мы меняли, придется менять снова?

> Наоборот. Дали. Очень много дали. Они показали нам, что программы, правильно реализующие все предыдущие спецификации, не удовлетворяет каким-то критериям.

А зачем нам это знание?

> Мы более уверены, что это не ошибка программы, чем если бы типов не было.

Не понял. Что именно не ошибка программы?
(Reply) (Parent) (Thread)
[User Picture]From: thesz
2011-01-18 08:34 pm (UTC)
>> Вы считаете, что эти две вещи мешают друг другу?
>Нет, конечно, с чего вы взяли?

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

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

Не так? Я неправ?

>Хорошо: А зачем нам делать изменения всюду, где это необходимо, если потом спецификация изменится, и нам то, что мы меняли, придется менять снова?

Потому, что следующая спецификация обязательно будет результатом переработки предыдущей.

Если это не так, то спецификации нам спускают сверху, мы работаем в Индии и получаем $20 в сутки.

>> Наоборот. Дали. Очень много дали. Они показали нам, что программы, правильно реализующие все предыдущие спецификации, не удовлетворяет каким-то критериям.
>А зачем нам это знание?

Для того, чтобы двигаться в правильном направлении. Всем проектом в целом.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-19 03:21 am (UTC)
> Не так? Я неправ?

Не так. Вы не правы. Я хотел сказать, что если у нас есть первое, то ценность второго резко падает. То есть - если мы можем легко найти и исправить ошибку, то цена ее необнаружения на ранней стадии уменьшается.

> Потому, что следующая спецификация обязательно будет результатом переработки предыдущей.

Это ответ на какой-то другой вопрос.

> Для того, чтобы двигаться в правильном направлении.

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

Это просто глупость.

Увольте меня от дальнейшей беседы.
(Reply) (Parent) (Thread)
From: (Anonymous)
2011-01-19 12:20 pm (UTC)
То есть по вашему цена ошибки не зависит от того, сколько ресурсов будет затрачено на ее обнаружение и исправление? Замечательное откровение.
(Reply) (Parent) (Thread)