LINUX.ORG.RU

Преимущества лиспа на наглядных примерах


0

0

В литературе по лиспу довольно часто (обычно в предисловии) расписывают как крут лисп - позволяет "создавать язык программирования под конкретную задачу", существенно облегчает доработку имеющегося кода и т. д. А нет ли где-нибудь набора конкретных примеров, иллюстрирующих все эти преимущества? В стиле "вот задача, на c/python/что-то ещё она решается вот так, а на лиспе вот так"?

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

★★
Ответ на: комментарий от jtootf

>> Попробовали уже - Cyclone. Умер маленьким :(

> да что вы заладили - умер, умер.

Потому что умер :'(

> нужен - берите, дорабатывайте, используйте

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

> BitC - ну забил на него Шапиро

Что, уже забил? Ч0рт, он доведет меня до антисемитизма.

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

>Чтобы его доработать, нужна квалификация получше моей, и время.

ну тогда хватит ныть, что ли; книгу в руки - и вперёд, повышать квалификацию

>Что, уже забил?

новость же была - в оффтопик ушёл, Midori разрабатывать

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

> ну тогда хватит ныть, что ли; книгу в руки - и вперёд, повышать квалификацию

Не катит. Проще использовать Си/Си++ для решения насущных задач.

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

> в оффтопик ушёл, Midori разрабатывать

Сцуко. Хотя, может оно и к лучшему - этот наработает...

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

>Не катит. Проще использовать Си/Си++ для решения насущных задач.

ну тогда при упоминании Cyclone честнее будет скромно промолчать в сторонке :)

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

>> Проще использовать Си/Си++ для решения насущных задач.

> ну тогда при упоминании Cyclone честнее будет скромно промолчать в сторонке :)

Не понял про "честнее". Я где-то соврал или хотя бы ошибся, и проект жив? Тогда ссылку.

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

Согласен, надо было напистаь "энтальпией". Хотел сказать, что чрезмерно много синтаксиса - это плохо.

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

>Не понял про "честнее". Я где-то соврал или хотя бы ошибся, и проект жив? Тогда ссылку.

я не о том - толку кричать что проект мёртв, если ты к нему никакого отношения не имеешь и иметь не хочешь? а заявляешь ты об этом в каждом треде, где Cyclone упоминают

Open Source проект умирает как правило тогда, когда разрабатывать его дальше по каким-то причинам нет смысла. ты можешь привести подобные причины для Cyclone?

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

> толку кричать что проект мёртв, если ты к нему никакого отношения не имеешь и иметь не хочешь?

Не "не хочешь", а "не можешь".

> заявляешь ты об этом в каждом треде, где Cyclone упоминают

Ну вдруг мое нытье кому-то надоест, и он возьмется :D Или хотя бы скажет "а на замену Cyclone разрабатывают <whatever>".

> Open Source проект умирает как правило тогда, когда разрабатывать его дальше по каким-то причинам нет смысла.

Это идеализм. К сожалению,

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

>Ну вдруг мое нытье кому-то надоест, и он возьмется :D Или хотя бы скажет "а на замену Cyclone разрабатывают <whatever>"

на замену Cyclone разрабатывается очень много велосипедов :) на самом деле C + Lint + Valgrind + какие-нибудь юнит-тесты - и вот тебе уже некоторый аналог "безопасного C". большинству хватает и этого

а те, кому не хватает, как правило на C не пишут. и клонов C тоже не ищут

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

> на замену Cyclone разрабатывается очень много велосипедов :) на самом деле C + Lint + Valgrind + какие-нибудь юнит-тесты - и вот тебе уже некоторый аналог "безопасного C"

Нет, это подмена понятий. Вместо статически проверяемых гарантий нам предлагается тестирование (гарантии Lint слшком слабы). Более-менее аналогом Cyclone могут быть вещи типа Ccured, но это тоже не то... нужен новый язык.

> а те, кому не хватает, как правило на C не пишут. и клонов C тоже не ищут

Ищут, но не пишут. Impedance mismatch такой mismatch %)

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

Увы, он клонов C не ищет
И не от клонов С бежит

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

>Нет, это подмена понятий

это не подмена понятий, это суровая правда жизни :)

jtootf ★★★★★
()

>Хочется понять, действительно ли лисп так крут как его расписывают и стоит ли на его изучение тратить время...
А что время? Ну завтра поизучай, если сегодня времени нету.

Плохое место для такого вопроса. У кого ты спрашиваешь? У скриптоложцев, питоноводов и недоассемблероидов?

Хотя, вообще, тебе никто не скажет, что учить лисп можно, нужно и полезно.
Потому что те, кто его знает и с удовольствием на нем пишут, они, видишь ли, считают это глупым вопросом, очень глупым; и если ты зайдешь с таким вопросом куда-нибудь на c.l.l, ты будешь немедленно высмеян кем-нибудь вроде kt, с особым цинизмом.
А те, кто не знает - blub paradox, и все такое.

guest-3484-2009
()
Ответ на: комментарий от Rastafarra

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

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

Очень быстро утомляет раз в две недели одно и то же повторять (вон, смотри, даже lisp-lor-faq в development повесили). Keywords преимуществ даны, кому надо, тот нагуглит.

mv ★★★★★
()
Ответ на: комментарий от guest-3484-2009

> если ты зайдешь с таким вопросом куда-нибудь на c.l.l, ты будешь немедленно высмеян кем-нибудь вроде kt, с особым цинизмом.

И это правильно, очень правильно. Этот kt делает нужное дело. Посылать нах всех неверующих, набирать только фоннатегов... это гарантирует, что Лисп навсегда останется в той же жо^Wнише, что и сейчас.

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

Не неверующих(религия чтоли, в самом деле? Не хаскель же), а идиотов, задающих глупые вопросы. Зачем идиоты лисповскому коммунети?

Пусть на петоне лучше пишут. Он для того и задумывался, в конце концов. http://www.python.org/doc/essays/cp4e.html


Ну и развлекается он так, конечно.

guest-3484-2009
()
Ответ на: комментарий от guest-3484-2009

> (религия чтоли, в самом деле?

В общем, похоже. Секта.

> идиотов, задающих глупые вопросы. Зачем идиоты лисповскому коммунети?

Да не вопрос. Enjoy your AIDS, как говорится.

tailgunner ★★★★★
()

Нету таких примеров. Потому что на c/python/чтотоещё решается такая задача, а на лиспе - другая. (emacs же мы, за отсутствием аналогов, не будем брать в пример, да?)

P.S. Странно выглядят антифанаты лиспа. Никто же не заставляет его учить, с одной стороны. А с другой - зачем хотят вытащить лисп в мэйнстрим? Всё равно, что вместо автобуса пассажиров на вездеходе возить.

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

> ЗЫ мб пора уже придумать низкоуровневый скорее императивный, чем функ. язык взамен Си?

Да давно пытаются. Вот, например, язык Lisaac (http://isaacproject.u-strasbg.fr/li.html). Недавно он появился в Computer Language Benchmarks Game: http://shootout.alioth.debian.org/u32q/lisaac.php

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

> Да давно пытаются. Вот, например, язык Lisaac (http://isaacproject.u-strasbg.fr/li.html). Недавно он появился в Computer Language Benchmarks Game: http://shootout.alioth.debian.org/u32q/lisaac.php

Вот, кстати, шутаут неправильный в некоторых моментах. Т.к. это *language* benchmarks, а не library, то для всех языков, не поддерживающих bignum, должен стоять прочерк. А то 80% ЯП юзают одну и ту же libgmp, что сравнивают-то?

mv ★★★★★
()

Лисп крут если ты хотя бы доктор прикладной математики и можешь разложить любую задачу на категории и функции. В остальных случаях, если ты просто окончил ВУЗ, лисп ничего не даст

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

Конкретные примеры:
1. Лисп намного быстрее любого интерпретируемого языка. Примеры см. на шутауте. Например, быстрее питона в 10-100 раз.
2. При этом лисп гибок, как интерпретируемый язык. Например, произошла ошибка. Попадаем в дебаггер. Смотрим стек. Выясняем, что ошибка - в некоей функции. Идём в её определение. Меняем его. Перекомпилируем. Идём чуть глубже по стеку. Говорим "restart frame". Программа продолжает работать (хотя это отностится к lispworks и даже там имеет ограничения, не помню, есть ли такое в SLIME/SBCL)
3. В процессе компиляции, произошла попытка открыть несуществующий файл или просто произошла ошибка компиляции. Иногда (хотя и не всегда) есть возможность указать правильный путь и продолжить компиляцию. Или исправить ошибку в файле и повторить его компиляцию. После успешного завершения можно продолжить сборку с того места, где она остановилась.
4. SLIME даёт возможность отлаживать интерактивно многопоточные приложения. Меняем класс видгета, перекомпилируем его переходим в окно браузера, нажимаем "перечитать". Новый функционал добавлен без перезапуска приложения и без пересоздания экземпляров. Я сейчас вижу, что ipython вроде тоже это позволяет, но это ещё нужно проверять. А в случае SLIME/SBCL я это проверял и это действительно так.
5. Данные, состоящие из списков, векторов и структур, легко печатать, вводить с клавиатуры, сохранять в файл. Это очень удобно при отладке - можно сразу, за одну команду, увидеть на экране целое дерево данных. В т.ч., можно печатать и считывать с консоли циклические структуры. Для CLOS классов, правда, функцию печати и чтения нужно писать самому. Можно в отладчике вызывать любые функции над данными или определять новые.
6. В обычном ОО языке есть контейнеры, алгоритмы и итераторы. В лиспе вместо этого есть понятие последовательности (sequence) и параметры-ключи, которые позволяют интерпретировать один и тот же контейнер по-разному без преобразования типов. Например, в одном и том же контейнере для разных операций можно использовать разные понятия эквивалентности. Это - гибкость, хотя тут есть и грабли - гибкость только в определённых и нерасширяемых пределах, увеличивается возможность ошибки при повторении схожих действий.
7. Макросы позволяют легко расширять компилятор и определять новые конструкции языка. Например, можно написать конструкцию deftest, которая будет запускать тесты при загрузке файла.
8. С помощью trace легко (не меняя и не перезапуская программу) трассировать нужные функции. Если же функцию всё же нужно поменять, то для этого не надо перезапускать программу. Правда, есть и обратная сторона - c полноэкранной отладкой в лиспе туго.

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

> Конкретные примеры:

Было бы еще интересно узнать, почему при всех этих преимуществах и 50-летней истории Lisp так и не завоевал весь мир. Программисты же не такие тупые, как это кажется, если уж язык настолько крут, то им обязательно бы пользовались. Пока же вспоминается "Герасим, куда мы плывем? Герасим, ты что молчишь? Ты что-то от меня скрываешь!" (с) Му-Му.

А пассаж про "интерактивную отладку многопоточных приложений" особенно понравился.

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

>Программисты же не такие тупые, как это кажется, если уж язык настолько крут, то им обязательно бы пользовались.

Большинство очень тупое. Вот научился человек что-то чуть на пхп пописывать и уже именуется программистом. И тысячи их. Важно другое. Прошло 50 лет, а в нем до сих пор есть фичи недоступные всяким новомодным питонам. А если и появится фича, не реализованная в лиспе, то скорее всего будет легко реализована средствами самого лиспа.

>Лисп крут если ты хотя бы доктор прикладной математики и можешь разложить любую задачу на категории и функции. В остальных случаях, если ты просто окончил ВУЗ, лисп ничего не даст

Какое-то голословное утверждение.

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

> Было бы еще интересно узнать, почему при всех этих преимуществах и 50-летней истории Lisp так и не завоевал весь мир
Тема была про преимущества лиспа. Про недостатки никто не спрашивал вроде.

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

>> Было бы еще интересно узнать, почему при всех этих преимуществах и 50-летней истории Lisp так и не завоевал весь мир

> Тема была про преимущества лиспа. Про недостатки никто не спрашивал вроде.

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

Вот, в теме похоже только один твой пост наметился, и при этом ты -- никак не лиспофан :-)

Кстати, намечается новый лиспофлейм. Я сделал давно уже сдела разбоксинг, который ты просил, можно его здесь запостить.

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

> Open Source проект умирает как правило тогда, когда разрабатывать его дальше по каким-то причинам нет смысла. ты можешь привести подобные причины для Cyclone?

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

Тем не менее я приведу (неожиданную) причину -- это слишком низкий уровень абстракций для *качественного* низкоуровневого языка.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от guest-3484-2009

> Хотя, вообще, тебе никто не скажет, что учить лисп можно, нужно и полезно. Потому что те, кто его знает и с удовольствием на нем пишут, они, видишь ли, считают это глупым вопросом, очень глупым; и если ты зайдешь с таким вопросом куда-нибудь на c.l.l, ты будешь немедленно высмеян кем-нибудь вроде kt, с особым цинизмом.

Возможные преимущества лиспа связаны с

1. изменяемым синтаксисом

2. изменяемым компилятором (а фактически, верификатором)

3. динамизмом в отладке

Однако другие языки программирования со своим почти статичным синтаксисом, почти статичным компилятором и навороченными отладчиками подползли так близко по фактически предоставляемым возможностям, что kt остается только цинизм, а фактов... почти не остается.

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

Да, забыл сказать очевидность -- то, куда они доползли, у них получается намного лучше, чем у лиспа.

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

> Кстати, намечается новый лиспофлейм.
по-моему, это лиспофлейм неудался. прошлый с твоим участием был явно лучше. может, разогреешь этот? ж)

val-amart ★★★★★
()
Ответ на: комментарий от Waterlaz

>Прошло 50 лет, а в нем до сих пор есть фичи недоступные всяким новомодным питонам.

>Какое-то голословное утверждение.

Неужели есть такие никому ненужные фичи, которые даже через 50 лет никто не удосужился реализовать? Ну и зачем тогда они в лиспе, если они никому не нужны?

Karapuz ★★★★★
()

кгм. вот мне интересно, узнать что думают эксперты.
disclaimer: я системный администратор, но люблю программировать на досуге.

сейчас мой любимый язык - питон, он дает большую свободу и гибкость, поддерживает множество парадигм, компактен и прост. почитал Дэвида Мерца, понял, что есть функциональный стиль, заметил, что я активно им пользуюсь и он мне нравится. сейчас читаю SICP, пишу задачи сначала на схеме, потом на питоне, пока никаких принципиальных трудностей не встретил. потом думаю изучить CL, и посмотреть easyextend (макросы для питона) и вообще попробовать сделать из питона лисп. в общем, любопытно, что вы об этом думаете?

val-amart ★★★★★
()
Ответ на: комментарий от Karapuz

> Неужели есть такие никому ненужные фичи, которые даже через 50 лет никто не удосужился реализовать?
афаик, лисп первый язык (или один из первых языков) с настоящим динамизмом, с РЕПЛ, вообще настолько абстрактный от железа.
посмотри вокруг - все новомодные языки динамические, с РЕПЛ и т.д.
Но у Лиспа до сих пор остались фичи, присущие только ему, и только частично используемые в других ЯП.

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

> по-моему, это лиспофлейм неудался. прошлый с твоим участием был явно лучше. может, разогреешь этот?

Как поставщик полезных фич лиспа рулит den73 (и на его пост я уже собрался много поотвечать, но ближе к вечеру). Моя роль заключается в основном в доказательстве того, что то или иное спокойно делается в плюсах.

Окружающие тоже вносят много полезного, в частности указывая, что те или иные полезные с виду фичи лиспа на самом деле не нужны.

З.Ы. А хотелось бы __еще__ про краткое описание полезных фич лиспа послушать (и поопровегать, да!).

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от val-amart

> посмотри вокруг - все новомодные языки динамические, с РЕПЛ и т.д.

С REPL - может быть. Динамические - точно не все.

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

>Тем не менее я приведу (неожиданную) причину -- это слишком низкий уровень абстракций для *качественного* низкоуровневого языка

это, пардон, _чего_ причина?

>Твоя логика идет в неправильную сторону

моя логика ходить не умеет, у неё для этого конечностей не предусмотрено

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