LINUX.ORG.RU
ФорумTalks

O Lisp'e


0

0

Взял в библиотеке книгу... http://rail.uk.to/Lisp.jpg

Только вчера её начал читать, так что експертом по лиспу ни в коем случае пока что не являюсь.

Пока что первые мысли от прочтения двадцати пяти страниц -
1) Лисп не так страшен как его малюют - синтаксис бейсика опаснее для мозга.
2) Хотя это и функциональный язык, там необязательно использовать рекурсию в каждом вызове (xDDD)
3) Как бы сказало поколение пепси, "Лисп взял у Ruby всё лучшее - блоки (with-open-file ...) и символы (:symbol-type-thing)". Хотя понятно, что наоборот. Отсюда вопросы:
а) почему так много современных языков игнорирует эти достаточно удобные фичи?
б) почему на лиспе так мало идёт software development в настоящее время? (я знаю, что есть немного современных успешных проектов включая ту игру для PS2 [и emacs...], но далеко не каждый день сталкиваешься с такими)

Конструктивный флейм приветствуется :)

Последнее доброе дело на сегодня:

вот по этой ссылке лежит неплохая книга по лиспу, на русском. http://openlib.org.ua/ru/books/category/110/1/

Мир Лиспа. TOM1, TOM2

Авторы: Э.Хювенен, Й.Сеппянен

Страниц: 458

Язык: русский

Формат: pdf

Размер: 24.30 mb

Логин и пароль подобрал с 8 попытки. Если не удастся, пиши сюда. :)

soomrack ★★★★
()

>а) почему так много современных языков игнорирует эти достаточно удобные фичи? >б) почему на лиспе так мало идёт software development в настоящее время?

ниасилили подозреваю

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

>честно говоря не читал, но на эту книжку ругались читавшие

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

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

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

Чё его осиливать, С++ в разы сложнее и запутаннее. В лиспе то - скобки и пара концепций.
Когда то было его время, сейчас он уже в мейнстрим не пойдёт, как бы ни был крут.
Пора бы понять - побеждает не лучший язык (технология), а тот, который вовремя занимает нишу.

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

> Чё его осиливать, С++ в разы сложнее и запутаннее. В лиспе то - скобки и пара концепций.

Ну, вот это не правда - насчёт C++, ничего страшного в нем нету (всё же, RTTI и множественное наследование не каждый день приходится использовать).

А вот на Lisp'е - проблемы с его грамотным преподаванием, плюс - большее время изучения после других языков, при неочевидном преимуществе (всё таки, мало кто начинал учить программирование с лиспа, а не с асма васика си или паскаля).

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

Трудных языков вобще нет..... есть медленное понимание......

DemonZLa
()

а) не игнорируют, а дают возможность сделать самому...
б) просто лисп теперь по другому называют (см. Scheme и т.п.)

DemonZLa
()

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

2) коммон лисп _не_ функциональный, а только некоторые диалекты, схема например.

3а) Если не особо развита непредвзятость, привычные фичи становятся самыми удобными, несмотря на очевидные недостатки. Как ты знаеш, первоначально были два языка - сперва появился фортран, для вычислений, и вскоре лисп, для того, что сейчас называется собственно программированием. "мэйнстримные" языки произошли от фортрана, который в свою очередь был составлен изходя из привычной арифметической записи, со всеми вытекающими: исторически сложившийся зверинец из функций, операторов и разнообразных нотаций, покорёженных вдобавок техническими ограничениями. Лисп строился "с нуля", так как оптимально для записи новых концепций, и максимально удобен и логичен. Однако люди склонны выдавать привычные, но неудобные способы записи за единственно хорошие и правильные, а привычные недостатки - за достоинства. Сейчас я временно работаю над проектом на питоне, и искренне не понимаю, зачем например аргументы функции разделять запятой, и почему в сях if(a) b; else c; и a?b:c - различные операторы, а в питоне второго вовсе нету, хотя в обеих случаях можно обойтись (if a b c) как в лиспе...

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

bugmaker ★★★★☆
()

> б) почему на лиспе так мало идёт software development в настоящее время?

<имхо> На лиспе хорошо писать, но трудно читать. Чтобы его было легко читать, нужна очень жесткая культура программирования -- комментарии, ясная фрагментация кода на функции. Кроме того, посмотрите хотя бы те же сорцы emacs'а -- там 90% кода -- чистая императивщина. Перейти на строчку вверх, выделить слово, заменить букву, пукнуть, вернуться. И так же в большинстве копроративного ПО -- залезть в одну таблицу, дернуть одно данное, отослать по почте, залезть в другую, дернуть третье и т.п. Конечно, МОЖНО все эти императивные паттерны как-то вычленить, и обернуть их в красивую более-менее функциональную оболочку, но, например, я на ходу не могу генерировать такие паттерны, и многие другие кодеры тоже не могут, а времени на спокойное продумывание обычно нет -- никого не трогает, че ты там внутри пишешь (кроме собратьев-кодеров, которым в случае твоего увольнения это все придется поддерживать :)) ), а волнует только результат. </имхо>

uj2 ★★★
()

> а) почему так много современных языков игнорирует эти достаточно удобные фичи?

Не доросли еще. Скоро скоммуниздят.

> б) почему на лиспе так мало идёт software development в настоящее время?

Всё очень просто. В подавляющем большинстве "промышленных" проектов нет ничего нового. Можно сесть и с достаточно большой уверенностью нарисовать архитектуру и указать методы реализации для всего проекта. Объем работ, как правило, определяется не объемом кодирования, а объемом предметной области. В этом случае, гораздо выгоднее не команда гуру, которые могут всё, а команда дешевых мейнстримных середнячков (e.g. жабабыдлокодеров), ведомая очень ограниченным числом гуру.

Гибкие и мощные языки, типа LISP, нужны думающим людям, т.к. хитрые финты и непрямая реализация прямых идей сбивают с мысли. Если мысли нет, то сбивать не с чего. Поэтому кодеров лучше брать без В/О, либо двоечников, иначе будут слишком много думать, экспериментировать, где не надо, что приведет к неприятным глюкам, проблемам понимания этого кода недумающими кодерами и вообще к потерям времени на никому не нужные эксперименты.

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

> насчёт C++, ничего страшного в нем нету (всё же, RTTI и множественное наследование не каждый день приходится использовать).

Ты не поверишь, но именно что каждый. И generic programming тоже каждый.

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

Преимущество очевидно: меньшее время изучения Lisp + других языков после него, чем других перед ним + Lisp. :)

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

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

В этом помогает сам язык. docstring'ов в C++ и Java нет, в отличие от Lisp.

Фрагментация на функции? Да собственно, практически такая же, как и в любом другом языке: если императив, то как в Pascal/Java/C++, если функциональщина, то как в Haskell/OCaml.

> Конечно, МОЖНО все эти императивные паттерны как-то вычленить, и обернуть их в красивую более-менее функциональную оболочку,

Можно, но не нужно. Если описывается императивный процесс, то и надо писать императивно. Если записывается функциональная зависимость, то и надо писать функционально. Если модель хорошо описывается в терминах pattern-matching на сети объектов, то так и надо писать, а не сводить вручную к императиву или функциональщине.

Большинство вещей в Emacs императивны по сути, т.к. воплощают _последовательные_ преобразования текста (фактически, это макросы-переростки). Поэтому, надобности во втискивании их в функциональную парадигму нет. Ты ведь разобрался, что к чему? Значит все там понятно :)

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

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

>Преимущество очевидно: меньшее время изучения Lisp + других языков после него, чем других перед ним + Lisp. :)

Судя по смайлику, подтвердить свои слова цифрами ты не можешь?

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

> В этом помогает сам язык. docstring'ов в C++ и Java нет, в отличие от Lisp.

Уровень аргументации потрясает

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

> На лиспе хорошо писать, но трудно читать.

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

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

Ну, это везде нужно.

> императивные паттерны как-то вычленить, и обернуть их в красивую более-менее функциональную оболочку

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

> а времени на спокойное продумывание обычно нет

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

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

> Судя по смайлику, подтвердить свои слова цифрами ты не можешь?

Я, как и большинство, начинал с императивных языков: Бейсик, Паскаль и т.п. Однако, изучение Lisp и других "маргинальных" языков помогло мне глубже понять некоторые концепции, а в особенности истинную сущность шаблонов C++ и ущербность их реализации. После этого, я не могу сказать, что знал C++ до изучения Lisp, хотя занимался им продолжительное время, а вот после Lisp, C++ не представляет абсолютно никакой проблемы, кроме вопиющего неудобства кодирования в силу вопиющей ущербности.

> Уровень аргументации потрясает

Я что, должен привести спецификацию языка в качестве аргумента? Или как я должен аргументировать отсутствие фичи в языке? Если ты считаешь, что docstring'и там есть, ткни меня носом в спецификацию/стандарт. javadoc/doxygen --- это далеко не docstring'и.

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

>> Судя по смайлику, подтвердить свои слова цифрами ты не можешь?

> Я, как и большинство, начинал с императивных языков: Бейсик, Паскаль и т.п.

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

Если же вернуться к "Преимущество очевидно: меньшее время изучения Lisp + других языков после него, чем других перед ним + Lisp.", то такого опыта у тебя нет - ты не начал знакомство с яыками с Лиспа, правильно?

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

Можно ли переформулировать это высказываение так: после изучения языков функционального программирования ты стал лучше понимать те возможности функционального программирования, которые имеются в компиляторе Си++?

> Я что, должен привести спецификацию языка в качестве аргумента?

Нет

> Или как я должен аргументировать отсутствие фичи в языке?

Нет

Для начала - ты ничего не _должен_. Но, если хочешь доказать, что docstring'и чем-то мощнее javadoc _и_ doxygen, просто приведи примеры вещей, которые можно сделать с помщью первых и нельзя - с помощью вторых. А потом - насколько часто такие вещи приходится делать.

> javadoc/doxygen --- это далеко не docstring'и.

см. выше

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

> мне больше интересны цифры на более-менее массовой выборке. Они должны где-то быть...

Спроси тут: http://mitpress.mit.edu/sicp/ возможно, у них есть статистика по их студентам. И сравни с другими, которые преподают на жабе.

> такого опыта у тебя нет - ты не начал знакомство с яыками с Лиспа, правильно?

Да, не начал. Начать ведь можно только один раз :) Я бы попробовал, если б можно было :)

> Можно ли переформулировать это высказываение так: после изучения языков функционального программирования ты стал лучше понимать те возможности функционального программирования, которые имеются в компиляторе Си++?

Не совсем так, скорее: "после изучения языков функционального программирования я стал лучше понимать те возможности программирования, которые отсутствуют в компиляторе Си++, либо воплощены наиболее кривым из известных мне способов".

> Но, если хочешь доказать, что docstring'и чем-то мощнее javadoc _и_ doxygen, просто приведи примеры вещей, которые можно сделать с помщью первых и нельзя - с помощью вторых.

Запросто! Встроенная справка по функциям и переменным в Emacs построена на docstring'ах. Просто потому, что docstring --- элемент языка и доступна из программы. А javadoc/doxygen --- левая приблуда, парсящая комментарии, оформленные спец. образом. Причем, правила форматирования комментариев сами по себе довольно объемны. Кроме того, в Emacs реализованы гиперссылки в документации прямо в тексте программы, т.е. без необходимости запускать браузер.

Далее особо про doxygen, т.к. с javadoc работал давно и не очень много.

doxygen --- довольно навороченная прикладуха, с _двумя_ парсерами (отбросим пока языки кроме C++, которые поддерживает doxygen): частично для C++ (что уже весьма нетривиально, особенно судя по глюкам парсинга в doxygen), плюс для языка документации в комментариях. В Lisp с docstring, возможностями интроспекции и природой Lisp-программ и Lisp-систем, подобного рода прикладуха будет на порядок-два проще, т.к. и docstring'и, и Lisp-программа суть Lisp-данные.

Далее, в применении конкретно к C++. Всегда стоит проблема: писать ли doxygen-комментарий в .h или в .cpp? Если писать в .h, то он сразу виден для быстрой справки разработчикам, использующим интерфейс библиотеки, но до него слишком долго добираться для исправления после правки кода функции. Если в .cpp, то наоборот. Дилемма.

В результате, документирование Lisp-программы много качественнее, а значит читается она легко и приятно, по сравнению с java/c++.

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

> Скажу по секрету - common lisp достаточно сложный язык. Если ты это еще не понял.

Да нет, Common Lisp достаточно прост. Вот библиотека там довольно обширная, но это в любом real-life языке. Без этого никуда.

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

>> мне больше интересны цифры на более-менее массовой выборке. Они должны где-то быть...

> Спроси тут: http://mitpress.mit.edu/sicp/

Это учебник по Scheme, причем здесь он? o_O

>> такого опыта у тебя нет - ты не начал знакомство с яыками с Лиспа, правильно?

>Да, не начал. Начать ведь можно только один раз :) Я бы попробовал, если б можно было :)

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

>> Можно ли переформулировать это высказываение так: после изучения языков функционального программирования ты стал лучше понимать те возможности функционального программирования, которые имеются в компиляторе Си++?

> Не совсем так, скорее: "после изучения языков функционального программирования я стал лучше понимать те возможности программирования, которые отсутствуют в компиляторе Си++, либо воплощены наиболее кривым из известных мне способов".

(зевает) да, наезжать на Си++ - это сейчас модно. Если же вернуться к твоей фразе:

> "изучение Lisp и других "маргинальных" языков помогло мне глубже понять некоторые концепции, а в особенности истинную сущность шаблонов C++ и ущербность их реализации"

то выходит, что изучение Лиспа помогло тебе лучше понять Си++. Странно, что ты признал это пару часов назад, но не хочешь признать сейчас, в другой формулировке.

>> Но, если хочешь доказать, что docstring'и чем-то мощнее javadoc _и_ doxygen, просто приведи примеры вещей, которые можно сделать с помщью первых и нельзя - с помощью вторых.

>Запросто! Встроенная справка по функциям и переменным в Emacs построена на docstring'ах. Просто потому, что docstring --- элемент языка и доступна из программы.

Я знал, что ты это скажешь, поэтому сразу просил тебя указать, насколько часто приходится решать такие задачи. Доступ к docstring из программы - это дело IDE, которые пишутся довольно редко. И, например, Eclipse отлично дает доступ к javadoc.

<рассуждения о doxygen поскипаны>

> В результате, документирование Lisp-программы много качественнее, а значит читается она легко и приятно

если это и так (сомневаюсь), то это заслуга программистов, а не наличия docstring'ов

Ну да ладно, замнем. Всю пользу, которую я мог вынести из подобных флеймов, я вынес из "Вопрос о Лиспе". Пара наблюдений на прощание: среди лисперов много упертых флеймеров. Может, это оттого, что Лисп сложен для освоения, и у человека, освоившего его, возникает "комплекс полноценности"? Или сам в самом языке есть что-то такое, что привлекает к нему людей определнного склада ума? Не знаю, но (ИМХО) это повод лисперам задуматься. И второе: Лисп уже многие десятилетия служит полигоном для исследований (генезис у него такой), и оттого накопил в себе много интересных фишек, которые сами по себе красивы и составляют гордость лисперов, но в реальной жизни необходимыми не являются и нужны редко. Но когда с течением жизни эти фишки востребуются в широкоиспользуемых ЯП, лисперы еще более укрепляются в сознании собственной элитарности - как будто в создании и разработке этих фишек есть их заслуга.

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

> Не знаю, но (ИМХО) это повод лисперам задуматься.

О чем задумываться? Если лиспники юзают лисп, который отлично справляется со всеми потребностями, то повод задуматься и использовать C++?

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

>> Не знаю, но (ИМХО) это повод лисперам задуматься.

> О чем задумываться?

Тебе - о том, почему ты вырвал фразу из контекста ;)

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

Да, о упертых флеймерах. Ты точно такой же упертый флеймер, но с другой стороны. Все согласуется с третьим законом Ньютона.

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

АХТУНК! НЕЧЕСТИВЫЕ ЛИСПОХУЛЬНИКИ!

> среди лисперов много упертых флеймеров.

Смотри вокруг! Это же ЛОР! Среди кого здесь нету флеймеров?

> Лисп сложен для освоения

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

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

OK, процитирую себя:

> ...среди лисперов много упертых флеймеров. Может, это оттого, что Лисп сложен для освоения, и у человека, освоившего его, возникает "комплекс полноценности"? Или сам в самом языке есть что-то такое, что привлекает к нему людей определнного склада ума? Не знаю, но (ИМХО) это повод лисперам задуматься.

Речь идет о манере вести спор. Именно она названа "поводом задуматься". Причем здесь то, кто на чем пишет? Об этом я вообще ничего не говорил (хотя мнение имею :)

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

Может ты вспомнил манеру ВСЛ вести споры? Ну, такая не у всех.

А про всех остальных, я что-то не заметил каких-то отклонений у лисперов при ведении споров. Если они действительно есть, то я бы был рад увидеть характерный пример.

stassats ★★★★
()

> а) почему так много современных языков игнорирует эти достаточно удобные фичи?

"современных языков" - масса, в т.ч. с этими фичами. Просто на них никто не пишет. Пишут на питоне-перле-жабе-плюсах-колоых-си. Которые разработаны 10..40 лет назад.

Средствами метопрограммирования похожие фишки делают и в других языках. Корявость зависит от мощности средств метопрограммирования.

> б) почему на лиспе так мало идёт software development в настоящее время? (я знаю, что есть немного современных успешных проектов включая ту игру для PS2 [и emacs...], но далеко не каждый день сталкиваешься с такими)

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

anonymous
()
Ответ на: АХТУНК! НЕЧЕСТИВЫЕ ЛИСПОХУЛЬНИКИ! от bugmaker

>> среди лисперов много упертых флеймеров.

> Смотри вокруг! Это же ЛОР!

Привет, глюкодел! Рад тебя видеть! Освободился от дискуссий по демонологии?

> Среди кого здесь нету флеймеров?

Хаскелляторов? Окамлеров? MLщиков? Кроме того, речь ведь не только о LOR - я к своему удивлению встретил флейм "Лисп крут, все сасут" даже на девелоперском листе Питона. Догадайся, кто его спровоцировал? Правильно, приблудный лиспер. Представь - человек явился на чужой девлист, чтобы поучить людей уму-разуму.

>> Лисп сложен для освоения

> Откровенная брехня.

Дык это... не все ж такие умные, как ты :)

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

> Может ты вспомнил манеру ВСЛ вести споры? Ну, такая не у всех.

Там совсем клиника, речь не о нем. Речь о том, что в подобных спорах лисперы проявляют, мягко говоря, презрительное высокомерие - как будто каждый из них поучаствовал как мимнимум в разработке CLOS.

> я бы был рад увидеть характерный пример.

См. предыдущий мегафлейм о Лиспе. Да и здесь - если начнется, мало примеров не покажется :)

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

> Ты не осилил лисп и все еще продолжаешь флейм?

Лисп не осилил. Флейм даже не начинал.

Хотя смотря что понимать под "осилил" :)

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

>(if a b c)

Нет, не так, (if (smth1 (smth2 a)) (smth3 b) (smth4 c))

>зачем например аргументы функции разделять запятой

Потому все, кто учился в школе, знают, что означает f(x,y), а (f x y) - это просто 3 буквы в скобочках. Тут без лямбда исчисления не разобраться.

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

>>> среди лисперов много упертых флеймеров.

>> Смотри вокруг! Это же ЛОР!

> Привет, глюкодел! Рад тебя видеть! Освободился от дискуссий по демонологии?

Пока нет, но я воистину могуч, и могу участвовать в нескольких дискуссиях. Однако, если заметите в этом топике мышей с преогромными рогами и характерным серным запахом, не пугайтесь. Это значит они из соседнего флейма случайно забежали.

>> Среди кого здесь нету флеймеров?

> Хаскелляторов? Окамлеров? MLщиков?

хаскель, пока не асилит хотябы динамические либы, вне практического использования, а значит и вне критики. Окамл распространён в Франции, можеш там на его тему пофлеймить. Про практическое юзанье мл вообще не слыхал. Так что, видимо сидят и бояцо.

> Кроме того, речь ведь не только о LOR - я к своему удивлению встретил флейм "Лисп крут, все сасут" даже на девелоперском листе Питона. Догадайся, кто его спровоцировал? Правильно, приблудный лиспер. Представь - человек явился на чужой девлист, чтобы поучить людей уму-разуму.

Ну а чё делать, если лисп действительно крут? Кстати, я сейчас работаю над проектом на питоне. Обитатели л-т-т@ подтвердят, какими чорными словами я ругаюсь в его адрес. И у меня тоже возникала мысль посетить какой-нибудь питоний форум чтобы набить кому-нибуть виртуальную морду, ибо питон воистину ужаааааааасен, да.

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

>>(if a b c)

> Нет, не так, (if (smth1 (smth2 a)) (smth3 b) (smth4 c))

a, b, c --- значение этих выражений, что за ними стоит неважно, этим примером показывалось наличие в сях разных синаксических конструкций: if и a? b: c;

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

>>> Лисп сложен для освоения

>> Откровенная брехня.

> Дык это... не все ж такие умные, как ты :)

ну, дык, если питон смогли асилить, наверное даже и умнее :(

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

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

Подтверждаю.

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

Вперёд, за Lisp!

>> (if a b c)

> Нет, не так, (if (smth1 (smth2 a)) (smth3 b) (smth4 c)) 

именно так. Если a, b, c - значения, а не функции етц.
 Питоний аналог приведённого тобой, если нужно значение,
 а не выполнение

def smth (a, b, c):
  x=None
  if smth1(smth2 (a)):
    x=smth3 (b)
  else:
    x=smth4 (c)
  return x

  smth (a, b, c)

сравни теперь читабельность, да?

>> зачем например аргументы функции разделять запятой

> Потому все, кто учился в школе, знают, что означает 
 f(x,y), а (f x y) - это просто 3 буквы в скобочках.

Хреновый довольно повод. Чё проще начепятать, 
 (f a b c d) или f(a,b,c,d)? Зачем итти на поводу у традиций
 в ущерб практичности?

> Тут без лямбда исчисления не разобраться.

Причём тут лямбда? ._.

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

> Это учебник по Scheme, причем здесь он?

Это не учебник, а курс начального обучения программированию. Его реально преподают. А Scheme и Lisp --- близнецы-браться.

> выходит, что изучение Лиспа помогло тебе лучше понять Си++. Странно, что ты признал это пару часов назад, но не хочешь признать сейчас, в другой формулировке.

Твоя переформулировка неточна. В C++ есть некоторые концепции, реализованные далеко не полностью. И понять их, ограничиваясь C++ нельзя (ОЧЕНЬ сложно). Изучение других языков позволяет получить более полную картину. Соответственно, понимая концепции, начинаешь лучше понимать их и в рамках C++, а также увидеть ущербность их реализации.

> поэтому сразу просил тебя указать, насколько часто приходится решать такие задачи.

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

> И, например, Eclipse отлично дает доступ к javadoc

Ok, я посмотрю.

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

См. мой первый пост в эту тему. Там написано, почему и кому.

> Но когда с течением жизни эти фишки востребуются в широкоиспользуемых ЯП, лисперы еще более укрепляются в сознании собственной элитарности

В чем же элитарность, если лисперы твердят на каждом углу, что Лисп --- самый простой язык?

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

>> Это учебник по Scheme, причем здесь он?

> Это не учебник, а курс начального обучения программированию

Я знаю, что это. Но не понимаю, откуда там могут взяться цифры, о которых я спрашивал :)

> В чем же элитарность, если лисперы твердят на каждом углу, что Лисп --- самый простой язык?

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

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

>a, b, c --- значение этих выражений, что за ними стоит неважно, этим примером показывалось наличие в сях разных синаксических конструкций: if и a? b: c;

Ну и пусть будут, и в Лиспе тоже кроме if есть cond.


>Питоний аналог приведённого тобой, если нужно значение,
 а не выполнение

def smth(a,b,c):
    if(smth1(smth2(a))):    return smth3(b)
    else:    return smth4(c)

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

> Ну и пусть будут, и в Лиспе тоже кроме if есть cond.

Вах, где же минимализм? ;)

Вообще-то, с точностью до оптимизации, if не нужен. cond-а вполне достаточно.

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

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

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

> Во-первых, он не простой.

Ладно, не буду спорить, надоело.

> Во-вторых, я не говорил, что лисперы - элита. Они (отнюдь не все, конечно) ведут себя так, как будто считают себя элитой.

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

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

Ну вот, личный выпад состоялся. Засим прекращаю дискуссию ввиду полного ее превращения в балаган.

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

>> Ну и пусть будут, и в Лиспе тоже кроме if есть cond.

> Вах, где же минимализм? ;)

в питоне

> Вообще-то, с точностью до оптимизации, if не нужен. cond-а вполне достаточно.

всё правильно, if может быть оформлен как например макрос или функция, а не входить в язык. И при заведомо извесных данных, кстати, вычисляться на момент компиляции а не выполнения. Для cond справедливо то же самое. Подобным образом, на лиспе используются конструкции, которые удобны в настоящий момент, а не те, которые милостиво пожертвовали создатели йазыга. Оттого одновременно и проще и гибче.

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

>> a, b, c --- значение этих выражений, что за ними стоит неважно, этим примером показывалось наличие в сях разных синаксических конструкций: if и a? b: c;

> Ну и пусть будут, и в Лиспе тоже кроме if есть cond.

Пусть будет. Но сишным ифом нельзя сделать такое, не используя ?:. А конд уже из другой оперы.

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