LINUX.ORG.RU

Трагедия CommonLisp

 ,


0

3

https://esdiscuss.org/topic/the-tragedy-of-the-common-lisp-or-why-large-langu...

Для Ъ не будет.

Кратко суть:

Once a language gets beyond a certain complexity --- say LaTeX, Common Lisp, C++, PL/1, modern Java --- the experience of programming in it is more like carving out a subset of features for one's personal use out of what seems like an infinite sea of features, most of which we become resigned to never learning. Once a language feels infinite, the specific benefits of a new feature are still apparent. But the general costs in added complexity are no longer apparent. They are no longer felt by those discussing the new feature. Infinity + 1 === Infinity. Even aLargeNumber + 1 === approximatelyAsLargeANumber. This is the death of a thousand cuts that causes these monstrosities to grow without bound.


Ахтунг посоны, все в scheme!

annulen ★★★★★
()

Всегда забавляли все эти холивары и 'анализы' различных языков программирования.
Это ж просто инструмент.
Берешь, да пишешь на нем программу.
Работает? Ну и отлично. Остальное не важно.
Можно сколько угодно спорить о синтаксисе языка, о его возможностях, о плюсах и минусах, но в итоге критерий один - работает ли программа, написанная на этом языке или нет.

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

работает ли программа, написанная на этом языке или нет.

А сколько времени написание заняло совсем не важно что ли? Да и критерий «работает» тоже придётся изрядно расширять.

Ну а по теме: какой-нибудь шарп разнообразных «фич» и синтаксических конструкций накопил уже куда больше чем в лиспе и вполне сравнимо с С++. Я бы даже сказал, что лисп проще шарпа и при этом возможностей даже больше (не считая библиотек, разумеется). Тем не менее популярность сильно разная.

DarkEld3r ★★★★★
()

В этом нет трагедии.

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

Ты не в теме. Просто инструмент это питон/жява/пхп/etc. Лиспы, хаскелли и прочая маргинальщина - повод поумничать и повоевать.

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

Ну а по теме: какой-нибудь шарп разнообразных «фич» и синтаксических конструкций накопил уже куда больше чем в лиспе и вполне сравнимо с С++.

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

ados ★★★★★
()

Которого волка кормишь тот и побеждает

Если по теме

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

А сколько времени написание заняло совсем не важно что ли? Да и критерий «работает» тоже придётся изрядно расширять.

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

kovrik ★★★★★
()

Трагедия коммон лисп только в головах с++ петушков

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

Ну а по теме: какой-нибудь шарп разнообразных «фич» и синтаксических конструкций накопил уже куда больше чем в лиспе

В лиспе ты волен городить свои синтаксические конструкции, только всё равно они сводятся к топорным s-выражениям.

А так тот же CL очень многословен, на мой взгляд.

Но любят его не за это

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

только всё равно они сводятся к топорным s-выражениям

не всегда: даже в стандарте синтаксис loop на на s-выражениях. Просто s-выражения почти всегда удобнее.

monk ★★★★★
()

Универсальный язык, как инструмент, от осознания тобой его огромности, не перестаёт быть универсальным.

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

Вероятность в сабже найти нужные фичи несравненно выше, чем во многих «маленьких языках». Трагедия лишь в том, что человеку нужно сначала в этом изобилии научиться разбираться. А человеку лень.

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

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

И что это — преимущество? недостаток?

К чему тут вообще типизация?

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

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

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

Если прибегнуть к такому редукционизму и инструментализму, то можно сразу сделать вдоль

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

Работает? Ну и отлично. Остальное не важно.

Это подход на уровне детского сада.

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

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

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

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

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

Вероятность в сабже найти нужные фичи несравненно выше, чем во многих «маленьких языках».

Для успешных языков типа С даже в минимальном наборе находится всё нужное. В этом их смак.

Трагедия лишь в том, что человеку нужно сначала в этом изобилии научиться разбираться. А человеку лень.

Допустим, кто-то разобрался и выбрал «нужные фичи», как, например, ID-шники в C++ при написании DOOM3. В рамках всего проекта все должны соблюдать эти требования. Новый человек, который пришёл в проект (если он свободный - прислал патч), об этом ничего не знает. Тратишь время на объяснения и споры. И, главное, в итоге получается уже не тот богатый фичами язык, а обкострированный «С с классами». Ты понабрал себе стадо илитарных программистов, знающих божественный язык, но им запрещено использовать его любимые фичи. А у каждого они свои, разные. Как говорится, за что боролись?

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

Работает? Ну и отлично. Остальное не важно.

Ну вот сидят в Калифорнии ребята и пытаются ка кто доработать софт на ADA, а не, пытаются найти хоть кого то умеющего с ней работать

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

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

Это смотря как считать. Я «фичи» не зря в кавычки взял и уточнил про синтаксические конструкции. Банальный пример - в D есть аж несколько способов задавать «raw string». Есть они в лиспе? Нет. Нужны? Тоже вряд ли.

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

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

А ты попробуй убеди какую-нибудь крупную enterprise компанию

Во первых, у них опять же, есть дополнительные критерии, кроме «удалось создать продукт». А именно лёгкость поиска и стоимость работников и т.д.

Во вторых, если какая-нибудь Clojure так хороша, то это наоборот подспорье всяким стартам - поможет им обогнать закостенелы «крупные энтерпрайз компании».

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

В лиспе ты волен городить свои синтаксические конструкции, только всё равно они сводятся к топорным s-выражениям.

И? Я сказать хотел, что «сложности» в современных мейнстримовых языках ничуть не меньше - выходят новые стандарты и т.д. Так что трагедия явно не в сложности.

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

Трагедия лишь в том, что человеку нужно сначала в этом изобилии научиться разбираться. А человеку лень.

По моему, лисп всегда хвалили за его «компактность» - маленький стандарт, мало синтаксических конструкций и т.д.

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

Ну да, я вижу как универсальные джава/C#/С++ оказываются никому не нужны.

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

Так что трагедия явно не в сложности.

Таки в сложности. Common Lisp _для своего времени_ был очень сложным и объемным.

По моему, лисп всегда хвалили за его «компактность» - маленький стандарт, мало синтаксических конструкций и т.д.

Лиспов была чертова уйма. За компактность хвалили Scheme.

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

Тратишь время на объяснения и споры.

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

запрещено использовать его любимые фичи

Использовать надо не «любимые» фичи, а полезные.

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

Common Lisp _для своего времени_ был очень сложным и объемным.

Хочется поспорить, но ладно. Зайдём с другой стороны - сейчас-то популярны более сложные и объемные языки. А по некоторым фичам (тем же макросам) лисп до сих пор впереди. Что ж он не отвоёвывает популярность?

За компактность хвалили Scheme.

Хочешь сказать, CL заметно сложнее того же С?

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

Мне кажется многие путают «чего нет в лиспе» с «что нельзя написать в лиспе». В лиспе можно написать что угодно благодаря определенным особенностям.

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

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

На Scala удавалось переубеждать самые крупные компании. На Clojure думаю будет не так просто

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

Можно критиковать такой подход, но только он реально позволит выжить кодовой базе. Не раз проверялось на Scala и C++. На Java такого «подмножества» нету, так как там язык сам по себе обрезан только до нужного подмножества.

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

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

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

Использовать надо не «любимые» фичи, а полезные.

Каждый считает полезными свои «любимые». Тут-то и начинается холивар.

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

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

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

А когда найдёшь, ещё окажется что это асоциальный задрот с гипертрофированным ЧСВ, с которым невозможно работать в команде.

В команде вполне можно работать с асоциальным задротом с гипертрофированным ЧСВ. Если, конечно, способности у него тоже гипертрофированные.

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

По моему, лисп всегда хвалили за его «компактность» - маленький стандарт, мало синтаксических конструкций и т.д.

Ну, во-первых, посмотри гиперспеку и больше не говори слов типа «маленький стандарт».

Во-вторых, каждый макрос там — своя синтаксическая конструкция, поэтому синтаксиса там НЕМЕРЯНО.

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

Вообще-то, в нормальных компаниях дадут ссылку на code style.

В нашей компании вообще при сборке проекта автоматически проверяется code style, мелочи типа отступов автоматически фиксятся, а то, что не удаётся пофиксить, отвергается. Удобно.

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

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

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

Сначала его надо согласовать.

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

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

Это уже от обстоятельств зависит. Скажем, если у тебя есть, хотя бы, человек 10 и тут «находишь илитарного программиста», то проще его послать и найти кого-то поадекватнее. Ну или если он настолько ценен, то всегда можно найти выход. Пусть делает прототипы/продумывает архитектуру, а «менее илитарные» будут переписывать за ним. Или пусть отдельные модули делает, куда никто лезть не будет, но тут опять же, у тебя возможны проблемы в будущем.

На практике я с таким как-то мало сталкивался.

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

Люди, нанимающие программистов, говорят, что на хаскельные вакансии идиоты вообще не приходят,

Ну хз, вон у нас (Украина) видел вакансию на хаскеле. Долго не закрытая висела, они даже были готовы брать людей без реального опыта, я даже туда чуть собеседоваться не пошёл.

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

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

Ну, во-первых, посмотри гиперспеку и больше не говори слов типа «маленький стандарт».

Больше стандарта С++/С#?

Во-вторых, каждый макрос там — своя синтаксическая конструкция, поэтому синтаксиса там НЕМЕРЯНО.

Да ладно, далеко не все макросы свой синтаксис вводят. Разве не так?

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

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

А что лисп (пусть будет CL, например, как продвинутый) чем-то лучше С, например? Давай аргументы, я тебе докажу обратное.

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

В нашей компании вообще при сборке проекта автоматически проверяется code style

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

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

Ну, во-первых, посмотри гиперспеку и больше не говори слов типа «маленький стандарт».

Масса костылей для прикрытия убогости языка, там даже тредов нет, ЛОЛ.

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

Вообще язык со стандартными функциями:

caar list cadr list cdar list cddr list caaar list caadr list cadar list caddr list cdaar list cdadr list cddar list cdddr list caaaar list caaadr list caadar list caaddr list cadaar list cadadr list caddar list cadddr list cdaaar list cdaadr list cdadar list cdaddr list cddaar list cddadr list cdddar list cddddr list

Не имеет права на существование.

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