?

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: gaidam
2011-01-13 09:21 pm (UTC)
Мне нравится диалект newLISP. Это такой упрощенный, в чем-то игрушечный Lisp, идея которого была в том, чтобы совместить простоту скриптового языка и любимые "фишки" Лиспа. Девиз всего этого дела: "Put fun back to lisp". Я на нем исполнил пару веб-приложений. Могу сказать, что прежде всего, на нем работать получается очень быстро, не спотыкаешься на деталях. Особенно когда освоишь до автоматизма связки всяких hi-order function типа map-filter-apply: это рождает другой уровень абстракции, ты практически не думаешь, как написать цикл, какой взять счетчик и все эти мелочи, рождающие ошибки, а оперируешь сразу функциями преобразования потоков данных, в основном, представленных в виде иерархических списков. Цена такого скоростного программирования -- не всегда оптимальные решения. Как гласит известный афоризм, программист на лиспе знает, как вычислить всё, но ничему не знает цену, или что-то в этом роде, -- это правда. Оптимизацию, правда, никто не отменял, и при желании прекрасно все разгоняется, если, к примеру, где-то началось "торможение". Итак, сфера применения: прикладные приложения, в особенности, когда надо написать быстро прототип. Пола Грэма почитйте. И ради бога, не рекламируйте никому лисп, пусть программистов на нём будет мало. Ведь это наше секретное оружие! :)
(Reply) (Thread)
[User Picture]From: freiksenet
2011-01-13 10:57 pm (UTC)
newLISP это полный, абсолютный пиздец. Там даже область видимости динамическая.
(Reply) (Parent) (Thread)
[User Picture]From: gaidam
2011-01-14 07:05 am (UTC)
Абсолютный пиздец не существует. Относительный пиздец -- это комментарии типа "Ruby иногда к лиспам относят". Про dynamic scoping я в курсе, как и в курсе про lexical scoping в newLISP.
(Reply) (Parent) (Thread)
[User Picture]From: freiksenet
2011-01-14 07:06 am (UTC)
"In newLISP, all variables are dynamically scoped by default."
(Reply) (Parent) (Thread)
[User Picture]From: gaidam
2011-01-14 07:11 am (UTC)
Коллега, Вы вообще до конца дочитываете? Я же русским языком написал: "Про dynamic scoping я в курсе".
(Reply) (Parent) (Thread)
[User Picture]From: slobin
2011-01-18 11:46 am (UTC)
Если вы считаете динамическую область действия самым большим пиздецом ньюлиспа, то вы его плохо знаете. ;-) Подсказка: копирование списков целиком со всеми вложенными подсписками (а не указателя на cons-ячейку) по умолчанию.

Ньюлисп -- это такой бейсик. При этом (1) бейсик нужен, (2) бейсик на основе лиспа -- это лучше, чем бейсик на основе фортрана. И да, я им активно пользуюсь.

... И через непросветлённую оптику можно увидеть Будду ...

(Reply) (Parent) (Thread)
[User Picture]From: freiksenet
2011-01-18 11:48 am (UTC)
Там еще много жести, я просто уже не помню. Просто я после того как прочитал про динамическую область видимости сразу же убежал подальше от этого говна и это в голову врезалось )

С тезисос "бейсик нужен" я не согласен. Может поясните зачем он нужен?
(Reply) (Parent) (Thread)
[User Picture]From: slobin
2011-01-18 12:16 pm (UTC)
Написал комментарием ниже.

... А чего нас бояться? ...

(Reply) (Parent) (Thread)
[User Picture]From: aralex
2011-01-14 06:51 am (UTC)
Звучит убедительно! Спасибо!
(Reply) (Parent) (Thread)
[User Picture]From: slobin
2011-01-18 12:10 pm (UTC)
Ньюлисп (подчёркиваю -- речь именно и конкретно о ньюлиспе, НЕ обо всех остальных перечисленных здесь лиспах; там всё по-другому) -- это карманный ножик. Любую конкретную работу лучше делать специальным инструментом, если он у вас есть и если вы умеете им пользоваться. Дырки в стенах делаются перфоратором (говорят, ни разу не пробовал), но попробуйте проделать им лишнюю дырку в кожаном ремне. И да, я знаю, что для этого тоже есть специальный инструмент -- у моего дедушки был. ;-) Но я не стану заморачиваться и прорежу ножиком.

Аналогично, бывает нужно решить какую-нибудь простенькую задачку на сотню строчек кода в системе, где вы не можете поставить полноценную среду программирования. У вас нет прав, или нет свободного места совсем, или это древняя машина под Windows 95, или вообще там работаете не вы, а ваш знакомый, который попросил вас эту задачку решить. На ньюлиспе задачка решится быстро, неэффективно ;-), не загрязняя систему не нужными её хозяину прибамбасами, и не заставляя вас годами учить сотни библиотек. Всё. А вот для больших и сложных задач я бы взял другой язык. Например, Common Lisp, но про него гораздо лучше меня рассказали другие товарищи. ;-)

... Rechtzeitig oder wenig später ...

(Reply) (Parent) (Thread)
[User Picture]From: freiksenet
2011-01-18 12:18 pm (UTC)
Не уверен, что newlisp лучший карманный ножик, чем условный питон ) Всё-таки у него столько явных недостатков, что даже его лисповость их не может исправить.
(Reply) (Parent) (Thread)
[User Picture]From: slobin
2011-01-18 12:50 pm (UTC)
Я не могу поставить питон на машине, где у меня нет рутовых прав, или на машине, находящейся на балансе нищей библиотеки в городе Ярославле. А если он уже стоит (например, на моей собственной машине ;-) -- как-то на практике получается примерно поровну на ньюлиспе и питоне. За что первое схватился -- на том и сделал.

... Геморрой из материала заказчика ...

(Reply) (Parent) (Thread)