LINUX.ORG.RU

Lisp

 , , ,


1

7

Решил прокачать скиллы на CL. Несколько вопросов. 1)Ни одной вакансии.Почему? 2)Преимущества и недостатки для web? 3)Инфраструктура? 4)Есть идея проекта игровой тематики. Хочу использовать Lisp. Разумно? Если да то почему.Если нет то какие минусы и с какими сложностями и трудностями прийдется столкнуться?

Перемещено post-factum из web-development

Перемещено mono из talks

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

Да. В виде блока (progn ...)

Оценил ваш юмор.

Посмотри xmonad. Там ФП как в CL.

Что лишний раз показывает проблемы ФП.

no-such-file ★★★★★
()
Ответ на: комментарий от monk

Вообще-то в топике «Решил прокачать скиллы на CL.... Хочу использовать Lisp...». А ФП уже вторично

Вы плохо читали тему. Я специально спросил у ТСа - «почему лисп». На что был ответ: «Считаю что ФП гораздо разумнее использовать в своих проектах если заказчик и один из исполнителей ты сам. Стоит выбор: Haskell или Lisp. С Лиспом не знаком,но мой преподаватель советует Lisp так как вроде как лучше распараллеливать логику. »

Всё-таки в CL основной инструмент цикла в стандартной библиотеке mapcar, а в Perl for(...).

Во-первых в CL есть do и loop как основные инструменты цикла. mapcar делает не for, а foreach по списку, что, согласитесь, является частным случаем цикла.

Во-вторых в перле есть map, grep и т.п.

А если именно «ФП в вебе», то брать надо Haskell (плюс какой-нибудь Happstack).

Ну, если цель теоретическая - пощупать чистое ФП в вебе, то можно согласиться.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Вот об этом я и говорю. Если посмотреть, как тут уже предлагали, исходники библиотек для CL - такой уровень ФП легко достижим в любом современном языке. А кода на CL, с ФП как в хаскеле, например, я вообще не видел. Вот вы монады используете в CL?

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

Кстати, cl-cont частично снимает остроту нехватки монад и синтаксиса do, но я cl-cont почти и не использую. Потом, никто не сказал, что Haskell - это пример для подражания. В нем такое встречается порою, что сразу хочется развидеть. Вообще, я - сторонник компромиссов, и редко ограничиваюсь одним стилем или одной парадигмой, стараясь применять нужное по необходимости. Мне, например, нравится CLOS.

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

Некоторые говорят, что функциональный язык должен не только поддерживать стиль ФП сам по себе, но и чуть ли не принуждать писать в этом стиле. Утрирую немного, но примерно так. Это называется self-reinforcing loop.

Действительно, и Haskell, и clojure бьют по рукам, если не писать в стиле ФП. Scala же, напротив, очень либеральна. В ней можно писать в разных стилях. Она почти как Common Lisp. В последнем мне очень нравится то, что здесь можно писать в разных стилях. Язык не ограничивает свободу (это является причиной, почему на CL трудно писать в стиле ФП, если нет самодисциплины, и если человек почти ничего не знает об ФП).

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

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

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

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

drBatty ★★
()
Ответ на: комментарий от no-such-file

Ну и кому до этого есть дело, если его все-таки можно использовать для ФП.

микроскопом тоже можно забивать гвозди.

Раз уж в язык запилили замыкания и функции-данные, то наверное это не с проста.

их уже везде запилили, жду вот в bash'е и в sed.

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

не. Я жду в стандарте bash. Такое я могу и в pure C накостылять. Не интересно.

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

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

Действительно, и Haskell, и clojure бьют по рукам, если не писать в стиле ФП.

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

Мне тоже непонятна такая тенденция, но она, увы, уже сложилась в некую традицию. Говорят ФП - подразумевают какой-нибудь ML или что-нибудь еще более жесткое.

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

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

Мне нравится CL. Я считаю, что это очень мощный, выразительный и красивый язык, но увы, он сейчас находится на обочине индустрии и я не могу рекомендовать изучать его тем, кто только начинает свою карьеру программиста. Быстро начать зарабатывать на CL не получится, поучаствовать в каких-то крупных, заметных проектах, чтобы получить хотя-бы опыт и признание - тоже. Пилить что-то свое годами? Для этого нужен другой источник дохода, т.е. человек должен уже занять какое-то место с другим языком.

Мне, например, нравится CLOS.

Ну это вообще отдельная история. Лучшей объектной системы я вообще не видел.

no-such-file ★★★★★
()
Ответ на: комментарий от drBatty

микроскопом тоже можно забивать гвозди.

Таки можно.

их уже везде запилили, жду вот в bash'е и в sed.

Ты что, на баше и так код-лапша. Не хватало еще на это ФП навернуть.

no-such-file ★★★★★
()
Ответ на: комментарий от no-such-file

Таки можно.

но не нужно.

Ты что, на баше и так код-лапша.

ну это у кого как.

drBatty ★★
()
Ответ на: комментарий от no-such-file

Согласен с тобой. Добавлю от себя, что имеет смысл учиться функциональному стилю на других более жестких языках, а потом применять в CL. И если автор темы желает писать на лиспе из-за ФП, то ему будет сложно, о чем многие здесь предупредили.

Теперь о лиспе (для тех, кто будет нас читать).

Мне нравится, что в LispWorks недавно добавили хорошую графику. Там есть anti-aliasing, продуманные графические порты (аля Graphics в .NET), метафайлы и прочие вещи. Есть неплохие нативные контролы, т.е. которые используют WinAPI, Cocoa или GTK и являются родными для каждой целевой платформы. Все это позволяет использовать лисп для серьезных проектов на десктопах (уже давно зачитываюсь презентацией InspireData). Более того, lispworks умеет отлично готовить разумных размеров бинарники приложений, удаляя оттуда все лишнее (удивился по первой, когда получил в бектрейсе что-то вроде одних DUMMY-SYMBOL на пятом уровне delivery :))

Потом, LispWorks и Allegro CL успешно применяют Prolog, развивая область представления и обработки знаний. Видимо, есть те, кому это очень нужно.

Кроме того, Allegro CL умеет хорошо интегрироваться с базами данным. По сути есть своя родная лисповская прослойка, которая здорово упрощает такую интеграцию.

Что касается свободных реализаций, то они тоже неплохо выглядят, особенно в области серверных и консольных приложений.

К чему это я все веду? Я считаю, что у Common Lisp есть своя ниша. Технология постоянно развивается. Язык всегда найдет своих новых сторонников. Пусть их и не так много. Но сам язык и среды разработки под него - просто удивительные!

З.Ы. Ну, все. Мне пора включаться в рабочий режим. Поэтому могу долго не отвечать.

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

то такое есть в CL, для поддержки ФП, чего нет в питоне
или перле?

1. оптимизация хвостовых вызовов

Ага, только разработчик SBCL говорит, что лучше на неё не расчитывать, потому что это просто оптимизация и применяется не всегда.

2. Нормальные лямбды.

Анонимные лямбды просто вредны.

3. Нормальные замыкания.

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

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

Анонимные лямбды просто вредны.

Ну это проблема общелиспа, в нормальных ЯП с этим все в порядке, т.к. у лямбды есть source location и имя не нужно.

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

Попробуй поискать «ECLM08-InspireData» (без кавычек). В гугле что-то находится, но я не проверял. Там должны быть фотки лисперов на странице Clozure Developers. Например, там есть бородатый Gary Byers :)

По-моему я брал с сайте Edi Weitz как материал к какой-то конференции.

dave ★★★★★
()

лисперы анонируют на примитивную (и это таки так), ужасно выглядящую вендово-макосную поделку, nuff said

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

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

Я не понимаю, зачем вообще ты пишешь на CL? Макросы тебе не нравятся, анонимные функции не нравятся, DSL не нравится, синтаксис лиспа тоже не нравится...

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

Я не понимаю, зачем вообще ты пишешь на CL? Макросы тебе не нравятся, анонимные функции не нравятся, DSL не нравится, синтаксис лиспа тоже не нравится...

наверное чтобы перестать быть быдлокодером и примкнуть к илите.

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

лисперы анонируют на примитивную (и это таки так), ужасно выглядящую вендово-макосную поделку, nuff said

это ты к чему сказал? Я знал одного лиспера, дык он венды даже не видел никогда (её тогда вообще никто не видел, это было задолго до Win95).

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

а… Да, бывает. Среди лисперов вообще много ненормальных и неадекватных.

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

Молодо - зелено.

хорошо, правда мои проекты с гуем не выглядя как говно, работают в том числе под разными дистрибутивами линукса, а визуализация в виде диаграмм (как побочная фишка в одном проекте) и выглядит лучше, и видов ее больше и была сработана за неделю, но ок, пусть будет «молодо - зелено»

wota ★★
()
Последнее исправление: wota (всего исправлений: 1)
Ответ на: комментарий от dave

кстати напиши своим «зрелым» кумирам, что на их супер-пупер сайте превьюшки для примеров не открываются - ошибку выдает

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

Лямбды - лучший способ запутать код до полной нечитаемости.

Твой год с говнолямбдами кроме тебя никто не сможет прочитать.

И после этого мне будут рассказывать, что «разговаривать матами» - это нехорошо? Как хотите - буду тогда просто молчать.

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

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

Что касается InspireData, ты посмотри сколько у них строк кода (у меня было примерно столько же, но на C#, а у них гораздо более лаконичный лисп). Такой проект никак простым быть не может по определению.

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

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

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

зачем вообще ты пишешь на CL?

Прежде всего интерактивная разработка, потом: CLOS, динамические переменные (в Python даже лексических нет), нет GIL, производительность (правда для Python я сейчас для некоторых задач использую PyPy и разница в производительности уже не так велика), SLIME, ну и наверное ещё разных мелочей набёртся.

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

требует большого ума, чтобы объять им непомерное количество новых концепций

Это каких же, например?

anonymous
()

ОП, бери racket, не пожалеешь.

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

даже сейчас я могу выделять на разработку идей 250-300 000 р ежемесячно.

Продал бабушкину квартиру?

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

Например, у меня обычно все данные тащатся из базы с помощью хранимок

Facepalm.SQL.tar.lzma

поэтому профита от orm нет.

Ты вообще знаешь, что такое ORM? Впрочем, ты же лиспер... кого я обманываю.

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

Насчет финансирования... даже сейчас я могу выделять на разработку идей 250-300 000 р ежемесячно.

Лол! Это ж где такие лохи напуганные еще водятся?

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

Непуганые. Спелчек.

Чувак, есть совсем новый SBCL, недорого отдам.

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

Это каких же, например?

Например, как и когда раскрываются кучи вложенных макросов и квазицитирований, и какие при этом переменные интернятся, захватываются, etc.

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

После bash все это примитивное говно вызывает только презрение. Чего там понимать-то?!?

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

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

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

Ну конечно же, все общество идет не в ногу, одни лисперы ходят правильным строем. Сектанты такие сектанты.

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

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

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