LINUX.ORG.RU

Почему на Common Lisp пишут в императивном стиле?


0

1

Недавно начал читать PCL (до этого изучал Scheme) - не могу привыкнуть к императивщине. По-моему, Лисп просто создан для того чтобы быть функциональным языком программирования :)

Связано ли это как-нибудь с тем фактом, что CL является «промышленным стандартом» Лиспа?


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

>common qt?

А ты не показывай пальцем, а оберни. Товарищ же утверждает, что в лиспе обертку для сторонней библиотеки слепить — это как два бита переслать.

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

Если ты мне не веришь, попробуй cl-sql. Обматеришься от сношений с кодировками

А чего делать с православным Си (или C++), у которых в unixODBC какой-то версии (апстрим на ~2005 год) тоже проблемы с кодировкой были? :)

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

>С чего это цлисп православным стал? Сугубо иудейский.

Его Столлман одобряет.

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

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

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

power
() автор топика
Ответ на: комментарий от linuxfan

> И в этом весь лисп: прежде чем выстрелить себе в ногу, надо сделать пистолет, порох, рассчитать траекторию пули и только потом можно нажимать на спусковой крючок. Ничего не напоминает?

linux?

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

>А чего делать с православным Си (или C++), у которых в unixODBC какой-то версии (апстрим на ~2005 год) тоже проблемы с кодировкой были? :)

То же самое, что делают с лисповыми кривыми библиотеками в таких случаях: правим, шлем патчи в апстрим. Или просто ждем следующей версии в надежде, что исправят.

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

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

>Можно пример языка с GC для которого есть несколько реализаций, которые предоставляют совместимые реализации потоков?

Совместимые в смысле API? На здоровье: C#

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

>linux?

В оригинальном креативе такая характеристика вообще-то давалась ассемблеру.

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

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

что программирование на CL на 99% состоит из написания велосипедов


Смотрю и ничего подобного не вижу, можно раскрыть тему? Ещё можно посмотреть профили любых активных open-source разработчиков сделать вывод, что программирование на любом языке состоит из написания велосипедов.

То, что в C работает годами и оттестировано миллионами пользователей


Удивляюсь, как вас вообще ещё не уволили, ведь всё уже давно написано и протестировано миллионами пользователей!

Если ты мне не веришь, попробуй cl-sql.


И что, на основании одной библиотеки сделаны все эти выводы? Я вообще никогда никому не советовал работать с cl-sql.

Заводить шарманку про xmpp в четвертый раз я не собираюсь.


Действительно, не стоит, невежество не флаг, что бы им размахивать, даже на ЛОРе.

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

То же самое, что делают с лисповыми кривыми библиотеками в таких случаях: правим, шлем патчи в апстрим. Или просто ждем следующей версии в надежде, что исправят.

Ну так вы делаете то же самое, что и лисперы.

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

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

Я вот думаю, что сишники по поводу лиспа так злятся из-за того, что у них нет таких чётких чуваков, как Грэм, умеющие зажигательный убервброс сделать. Все знают, что си - скучная фигня, такой «маст хэв» для программиста. Это как для ребёнка перестать писаться в штаны. Где уж тут отжечь?

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

> сишники по поводу лиспа так злятся из-за того, что у них нет таких чётких чуваков, как Грэм

Говорят, лисперы не котируют Грэма. Неужто врут?

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

а archimag говорил, что Грэма сообщество лисперов не любит

Ну и что? Отжиг у него ровный получился.

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

Говорят, лисперы не котируют Грэма. Неужто врут?

PC своим успехом обязан таланту человека (ну, хорошо, двух), которых принято не любить.

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

>А ты не показывай пальцем, а оберни. Товарищ же утверждает, что в лиспе обертку для сторонней библиотеки слепить — это как два бита переслать.

Только после того, как ты сам обернешь Qt для С.

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

>Я вообще никогда никому не советовал работать с cl-sql.

Ага, и что тогда мне было использовать? Мне это надо было году эдак в 2008, а cl-mysql появился, если верить гитхабу, в 2009-м.

Действительно, не стоит, невежество не флаг, что бы им размахивать, даже на ЛОРе.

Действительно: библиотека не умеет использовать SRV-записи — я виноват. Не умеет некоторые методы авторизации? Тоже мои проблемы. Но библиотечка-то есть и ее можно использовать — это главное!

Фублин, и такой весь лисп: кривота, сырота, глюкота, только глазенки красные фанатские кругом мелькают.

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

  • отсуствтвие/кривизна многих библиотек
  • несовместимость реализаций (ну не нравится мне SBCL, просто дико не нравится!)
  • адская многословность (жаба нервно курит в сторонке)
  • адская тормозность запуска (пока (asdf:oos 'asdf:load-op :clsql-mysql) выполнится, можно кончить и закурить).

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

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

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

> а archimag говорил, что Грэма сообщество лисперов не любит

CL сообщество, про всех лисперов я не говорил (просто не в курсе).

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

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

Ставлю бутылку коньяка.

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

>Ну так вы делаете то же самое, что и лисперы.

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

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

Хм, ты сам-то читал его зажигательные убервбросы? Мне из OnLisp'а вспоминается: «если вам хочется современного хорошего функционального языка, используйте Python».

Все знают, что си - скучная фигня

Ой, да ладно тебе! В этой «скучной фигне» можно так весело подрочить на такты.

Где уж тут отжечь?

А как же «анекдоты на C»? Допустим, недавно мне в руки для внесения корректив достался исходный код, который начинался с комментария: /* This is very wet translation from PHP */ (авторский коммент скопипащен). Так я пока с этим влажным кодом разгребался, получил порцию веселья, которая вывела меня из равновесия.

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

>> Что есть «PC»?

ПэЦэ.

В смысле, Personal Computer? И кто же эти двое? Только не говори, что Гейтс и Аллен.

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

>>Только после того, как ты сам обернешь Qt для С.

Зачем мне это? Я и на плюсовочке неплохо могу.

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

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

Только, скажем, клиентская библиотека для mysql или postgresql пишется разработчиками этой СУБД и активно используется в огромном множестве проектов.

И? Банальное сишное рабство ради одной только РСУБД?

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

То есть ты утверждаешь, что если я сейчас поставлю одну из нескольких существующих sql-библиотек, то не смогу работать? Или что?

Хм, ты сам-то читал его зажигательные убервбросы? Мне из OnLisp'а вспоминается: «если вам хочется современного хорошего функционального языка, используйте Python».

Самое известное его эссе - как раз про лисп.

Ой, да ладно тебе! В этой «скучной фигне» можно так весело подрочить на такты.

На нашем лисповом vhdl'е на наносекунды дрочится задорней :-P

А как же «анекдоты на C»?

Про то, как взрослые дяди всё ещё писаются в штаны?

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

Ставлю бутылку коньяка.

На что именно?

Что через 7-8 лет тематика лиспа не загнётся.

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

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

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

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

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

лисп в качестве прикладного скриптового языка.


Вот, с этого и надо было начинать, ибо для этой цели CL сейчас действительно не годится, ибо проблемы с инфраструктурой есть, их никто и не отрицает, так что Python в качестве всеядного комбайна подойдёт куда лучше.

Но, я сразу хотел использовать CL как основной язык, ибо его возможности представлялись мне (и продолжают представляться) фантастическими. И я решил, что работая в определённой области смогу достаточно легко решить инфраструктурные проблемы и обеспечить себя качественными инструментами. Что на самом деле и произошло. Работая в области разработки высоко-интерактивных веб-приложений я сейчас не имею каких-либо проблем с инфраструктурой и могу спокойно пользоваться всеми преимуществами CL. При этом, эта область является по нынешним временами и «самой модной».

Ты же не можешь с С/С++ эффективно работать в этой области. Мало того, ты вообще не можешь работать в любой из передовых областей, ибо ждёшь пока «миллионы пользователей всё протестируют». Если ты хочешь неспешно копошиться в чём-то хорошо известном, то С может вполне тебя устроить.

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

Залез к OCaml'истам, посмотрел в «The Functional Approach to Programming» и в «Developing Applications With Objective Caml». В обеих книжках «functional programming» — это программирование, основанное на лямбда-счислении. Достаточно расплывчато, без конкретики.

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

Кстати, какую книжку ты имел в виду, когда говорил, что «без сайд эффектов» — это следствие?

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

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

Ну попробуй работать с базой в cp1251 работать из utf-ной локали.

Кстати, как ты громко сказал «одну из существующих». Если не рассматривать ништяки из коммерческих лиспов, то «существующих библиотек» останется всего полторы штуки.

На нашем лисповом vhdl'е на наносекунды дрочится задорней :-P

Мне интересен вендор железящный, который принимает описание архитектуры на «лисповом VHDL'е», который (use libastral) на настоящий VHDL похож весьма отдаленно.

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

Я ж просил: без Хаскелля...

Кстати, про хаскель. В книге Hutton, Programming in Haskell, дано более мягкое определение:

What is functional programming? Opinions differ, and it is difficult to give a precise definition. Generally speaking, however, functional programming can be viewed as a style of programming in which the basic method of computation is the application of functions to arguments. In turn, a functional programming language is one that supports and encourages the functional style.

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

Кстати, про хаскель. В книге Hutton, Programming in Haskell, дано более мягкое определение

Чёткого, академического определения нет, поэтому каждый эксплуатирует термин в меру своей испорченности. Императивщина/функциональщина - это вообще подход к программированию, а не свойство языка. В любом языке, где есть функции, можно писать в функциональном стиле и без сайд-эффектов.

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

>> С чего это цлисп православным стал? Сугубо иудейский.

Его Столлман одобряет.

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

Поясни, одобрение Столлмана неким образом сделало цлисп православным?

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

Ну попробуй работать с базой в cp1251 работать из utf-ной локали.

Ну я вот помню, что на сишечке 5 лет назад надо было базе сказать, в какой локали работает клиент, т.е. после подключения выполнить специальный SQL-запрос. Почему я не могу то же самое сделать из любого другого языка?

Мне интересен вендор железящный, который принимает описание архитектуры на «лисповом VHDL'е», который (use libastral) на настоящий VHDL похож весьма отдаленно.

Ну так процессоры тоже сишечки, кресты, сишарпы и хаскелли не на прямую исполняют, но это же никого не останавливает?

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

> Поясни, одобрение Столлмана неким образом сделало цлисп православным?

Поясняю: всё, что одобрил Столлман, автоматически является православным, кошерным и Ъ-вым. То, что одобрил священник одноименной религии, православным в принятом здесь смысле не является.

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

> Чёткого, академического определения нет, поэтому каждый эксплуатирует термин в меру своей испорченности. Императивщина/функциональщина - это вообще подход к программированию, а не свойство языка. В любом языке, где есть функции, можно писать в функциональном стиле и без сайд-эффектов.

Согласен. Только функциональный язык еще и поощряет писать в функциональном стиле. Таких языков не так много. Да и что-то зависит от личности самого программера. Например, для одних CL вполне функциональный, для других - нет.

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

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

сколько стоит? да нихуя оно не стоит.

// CL-USER

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

Тут пора бы давно узаконить в стандарте хвостовую рекурсию. Даже в clojure и Scala она есть для одиночных функций, а там возможности среды в этом плане куда скромнее :)

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

> Тут пора бы давно узаконить в стандарте хвостовую рекурсию.

Люди писавшие стандарт CL знали про хвостовую рекурсию, однако посчитали, что она не нужна, хотя в Scheme это требование было уже давно. Думается, что это было осознанное решение.

Вообще, это важно, что создатели CL не пытались позиционировать его как ФЯП, а скорей наоборот, хотели подчеркнуть обратное ;)

P.S. Хвостовая рекурсия в CL не нужна.

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

Почему это не нужна? Насколько помню, sbcl вкупе с коммерческими лиспами (??) ее поддерживает, а вот clisp - нет. А кто еще из известных не поддерживает?

Я как-то переносил свой код из c# на функциональные языки (f# и scala). Так, всякие циклы с дурацкими break и continue очень красиво ложатся на функциональный стиль, если есть поддержка хвостовой рекурсии.

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

> Почему это не нужна?

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

Так, всякие циклы с дурацкими break и continue очень красиво

ложатся на функциональный стиль



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

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