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.


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

В МАИ есть целые группы, где даже так никто не ответит. Для них вопрос «что такое число Пи?» — это полнейший завал.

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

Для них вопрос «что такое число Пи?» — это полнейший завал.

вы сами завалились, уже в постановке вопроса)

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

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

в таком случае, С — самый лучший язык и обсуждать CL бессмысленно)

т.к. вообще-то print(int x) и print(int x, int y) делают только мудаки - это нарушает полиморфизм.

лол, что? какой ещё полиморфизм у функций, а не у методов?

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

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

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

там много говна было. В каждой строчке.

А чего ты еще ожидал? Если сам говно, то только это по жизни и будешь получать, гнида.

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

правильная постановка вопроса: «какой формуле соответствует число ПИ», причём в ответ можно нарисовать с десяток формул и все они будут верными, а в вашей постановке вопроса сквозит непонимание аксиом Пеано

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

Да ладно!

Да. Фокусы с неявным приведением типа можно не считать - это плохая, негодная практика.

То есть ты тоже считаешь, что возможность доопределять методы класса в CLOS — вредная?

Что значит доопределять? CLOS позволяет определять методы в любой момент, но это не значит, что этим можно злоупотреблять.

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

какой ещё полиморфизм у функций, а не у методов?

Внезапно, перегрузка - это ad hoc полиморфизм.

в таком случае, С — самый лучший язык и обсуждать CL бессмысленно)

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

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

перегрузка - это ad hoc полиморфизм.

отлично. и как «ad hoc полиморфизм» может нарушить полиморфизм?

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

зато можно миллионом других, чего нет в сабже и плюсах)

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

И при чём тут перегрузка?

Ты сказал

вообще-то print(int x) и print(int x, int y) делают только мудаки - это нарушает полиморфизм

И чем это отличается от print(object) и print(object, stream)? То есть (print object) и (print object stream) в стандарте Common Lisp

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

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

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

В данном случае с умным видом ты распинаешься про аксиомы Пеано (совершенно не к месту, кстати). А я студентам засчитываю любой корректный ответ, даже если он не такой, какой ожидал услышать.

Однако зачем я об этом говорю? У тебя же есть своё мнение, которое гению менять не к лицу ;)

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

У тебя же есть своё мнение, которое гению менять не к лицу ;)

вы - реально дурак, я вам уже рассказал, что гениев не существует

засчитываю любой корректный ответ
даже если он не такой, какой ожидал услышать

лол

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

А я студентам засчитываю

именно поэтому, с вас с самого особый спрос. «что такое число Пи?» — вопрос абсолютно дебильный. с таким же успехом можно спросить «что такое число 2» или, скажем, «что такое число 1090,43784». вопросы «с помощью какой формулы можно рассчитать число пи» , а, лучше, «какая формула соответствует числу пи» (привет, аксиомы Пеано), «какое отношение имеет число пи к окружности»  — это корректные вопросы, а ваша формулировка — неграмотна.

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

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

Узбагойся, аксиомы Пеано тут ни при чем, вопрос «что такое число пи?» вполне корректен и уж точно лучше, чем «какой формуле соответствует число ПИ»

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

У нас на каком языке форум

я вот написал программу на лиспе

У тебя описание программы, однако, на том же самом языке:

...
- Протестировать расчёты теплообмена и сопротивления для ребристого регенератора.
- Написать User Manual
- More testing
...

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

У тебя описание программы, однако, на том же самом языке

У него описание не на ЛОР, а на жидхабчике как бы находится.

Virtuos86 ★★★★★
()

Господи! Четыре страницы надр^W родили...

CL ­­­­— памятник человеческому идиотизму. Нагляднейший пример до чего доводит т.н. комитетский дизайн.

Примеров, конечно, масса. Тот же ANSI Forth, тот же «стек» XML, тот же стек протоколов OSI... Вон, ява скрипт потихоньку превращается, поскольку гуг...кха-кха-кха кто-то решил, что если добавить ключевое слово «class» в язык, то наступит немедленное и неистовое счастье. C++, стахановскими темпами стремится к заветной задаче... Кому-то не дают покоя «лямбды» и автовывод типов...

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

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

CL ­­­­— памятник человеческому идиотизму. Нагляднейший пример до чего доводит т.н. комитетский дизайн.

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

Но CL — самый, наверное, горестный пример.

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

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

Ты хотел было умничать, но сам и облажатся. Число Пи имеет вполне конкертно определение: это отношение длины окружности к диаметру. И все эти формулы о которых ты говоришь, они не из воздуха, они это отношение и вычисляют.

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

не дизайнился с нуля, если что

Если что, то я в курсе ;) Это и называется «комитетский дизайн»

Столько хоронителей собралось в одном месте

У вас проблемы, вы хотите по этому поводу поговорить?

Коммерческие реализации с опенсорсными развиваются как никогда раньше.

«Как никогда раньше», товарищ ньюфаг, они «развиваются» уже ~10 лет как (только на моей памяти). И всё развиваются, и развиваются, и развиваются. И несть конца развитию.

За это время, например, Скала, или Кложура, или Хаскель *действительно* проделали громадный путь от (не-) малоюзабельного говна до продуктов со своими крепкими нишами. Про всякие вещи типа Go или Rust — вообще культурно молчу.

CL эпичнейшим образом просрал нишу бизнес-логики — самую главную свою киллер фичу. Просрал именно потому что получившийся в итоге хтонический бегемотослон был жирен даже по мерками ынтырпрайз-систем. Просрал именно как CL и именно в ходе процессов, повлекших его создание. Щас намного проще методом копи-паста ляпять бизнес-логику на PL/SQL (вместо CL/Datalog). Т.н. AI winter просто добила исконные и естественные ниши обитания.

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

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

Число Пи имеет вполне конкертно определение: это отношение длины окружности к диаметру.

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

И все эти формулы о которых ты говоришь, они не из воздуха, они это отношение и вычисляют.

а это неважно

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

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

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

У вас проблемы, вы хотите по этому поводу поговорить?

Просто обозреваю этот шабаш.

И несть конца развитию.

разве развитие — плохо? Вот и выжившие реализации развиваются: улучшение рантаймов, компиляторов под современные архитектуры, новые библиотеки (спасибо Quicklisp), есть CDR (которые интегрируются или будут интегрированы, если есть смысл).

За это время, например, Скала, или Кложура,

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

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

Щито? Хацкель? Такая же история, как и с другим борщенемэйнстримом.

Про всякие вещи типа Go или Rust — вообще культурно молчу.

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

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

Просрал не CL, a жадность менедженеров. Читай историю Symbolics.

Щас намного проще методом копи-паста ляпять бизнес-логику на PL/SQL (вместо CL/Datalog).

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

Т.н. AI winter просто добила исконные и естественные ниши обитания.

В эту сказку до сих пор верят.

Процесс «вставания с колен» крайне осложняется нуёмным ЧСВ адептов (перечитай хотя бы свой пост),

А ты перечитай посты местных икспэртов, определющих с серьезным видом, что говно, а что нет.

и жадностью и недальновидностью лисп-контор

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

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

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

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

Поэтому и на файрбёрде я буду писать более продуктивно, чем другие.

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

Такая же история, как и с другим борщенемэйнстримом.
Второй еще из пеленок не вышел, и еще не известно, взлетит ли.

Немножко фактов в этот itt тред: http://githut.info/

CL: 813 -> 1483, рост в 1,8 раз.

Для сравнения, другая борщевая и не очень маргинальщина в этот же период:

Go: 2007 -> 22264, рост в 11 раз.

Haskell: 3329 -> 8789, рост в 2,6 раза.

Rust: 148 -> 4383, рост в 29,6 раз, очевидно т.к. язык новый.

Erlang: 1824 -> 2961, рост в 1,6 раз.

D: 680 -> 1749, рост в 2,5 раза.

OCaml: 448 -> 1778, рост в 3,9 раза.

FORTRAN: 322 -> 1186, рост в 3,6 раз.

Как видно, CL значительно отстает от большинства собратьев по борщехлебству как по абсолютным показателям, так и по динамике, и наиболее близок к другому пережитку 50х - фортрану. И это в опенсурсе, где, казалось бы, злые менеджеры не заставляют использовать С++ и Java и все программисты должны выбирать объективно лучший, если верить Грэму, язык. Из-за такого когнитивного диссонанса манямирок не выдерживает и рождает статьи про то, что CL слишком мощен, чтобы быть популярным.

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

Просрал не CL, a жадность менедженеров.

Не ощущаю разницы.

новые библиотеки (спасибо Quicklisp)

Сравни Quicklisp с тем же самым Хакейджем. Сравнение может показаться забавным.

А ты перечитай посты местных икспэртов, определющих с серьезным видом, что говно, а что нет.

Хаскелисты, например, не ведутся на троллинг. И замечания местных «икспердов» их вообще не волнуют... А предъявить-то им есть ещё меньше чем адептам CL. Не балует их среда, ни IDEшками, ни доступными пакетами, ни их качеством.

Просто обозреваю этот шабаш.

Обозревая — обозревай. А твоё поведение сейчас похоже на самый обычный butthurt.

К сожалению, за CL закрепилась репутация УГ мамонта. А за CL сообществом закрепилась репутация ЧСВтых ублюдков - генераторов вкусной еды. И ломать сложившиеся стереотипы butthurt-style комментариями, это примерно как тушить огонь бензином.

Требуется планомерная, последовательная работа с сообществом. А не как это делал vsl, и даже не так как это делал archimag.

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

Не знаю за PL/SQL, но по сравнению с файрбёрдом гораздо удобнее

Не просто «гораздо удобнее» а в стотыщщпиццотмильяродффраз удобнее. Именно потому что CL может *стандартным* образом работать с мета-мета-...метамоделями. *Единственный* из всех.

Пора вспомнить, что в своё время была очень популярна штука под названием Datalog. Но, как это обычно бывает, слила богомерзкому SQL.

Даже с трансляцией в SQL+Хранимки, это получится круче и удобнее.

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

Как видно, CL значительно отстает от большинства собратьев по борщехлебству

Okay.

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

Зачем опять приводить статьи какого-то сумашедшего, которого на реддите задаунвотили в минус? Nobody cares.

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

Требуется планомерная, последовательная работа с сообществом. А не как это делал vsl, и даже не так как это делал archimag.

начинать надо с тех, кто вбрасывает говеные статейки ниочем, мусорит в теги и троллит в темах в которые не может, а также перестать проецировать свой опыт общения с «ублюдком» на все сообщество в целом. Может тогда и будет все цивилизованно. Но не на ЛОРе видимо.

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

начинать надо с тех, кто вбрасывает говеные статейки ниочем

Тогда адептам CL придётся вариться в собственном соку.

Вон, намедни был вброс в сторону сообщества хаскелистов, притом в сторону конкретно русского сообщества, и конкретно определённой его части... И что? Даже на объекте вброса — хотя модерация там отсутствует как класс — тишь да гладь. ~80 ленивых, но весьма доставляющих комментов. Рекомендую к прочтению.

А всё почему? А потому что старая как мир, навязшая в зубах «аргументация». Ровно такой же, один-в-один, когда-то лет эдак 15 назад пытались затроллить линукс и линуксоидов.

А очередной митап, на этот раз в стенах Яндекса, способен на месяцы вперед нейтрализовать любые вбросы.

Так что...

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

В DrWeb мы просили кандидата ДОМА! написать функцию trimRight, обрезавшую пробелы в конце строки.

Напугаю тебя таким вариантом (после прочтения пары глав K&R и урезания функции которая просто лишние пробелы выкидывает):

#include <stdio.h>

int trimRight (char *str);

int main()
{
    char str[256];

    printf("Enter string            :>>");
    int j = 0;  //j - счётчик номера символа в массиве

    while ((str[j] = getchar()) != '\n')  // чтение строки с пробелами
      ++j;
    str[j]='\0'; //добавление конца строки
    printf("Your init string        :>>%s<<\n", str);

    trimRight(str);
    printf("Your trimed-Right string:>>%s<<\n", str);

return 0;
}

int trimRight (char *str)
// Функция должна удаять пробелы в конце строки
{
int j = 0, ns=0;
char *temp = str;

while (*(temp+j) != '\0') {
    if (*(temp+j) == ' ')
        ++ns; // счётчик пробелов

    if ((ns > 0) && (*(temp+j) != ' '))
        ns =0; // обнуление счётчика пробелов

    ++j; // переход к следующему символу в строке
    }
    // Отсекание лишних пробелов в конце строки
    if ((*(temp+j) == '\0') && (ns > 0))
        *(temp+j-ns)='\0';
return 0;
}

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

grem ★★★★★
()
Последнее исправление: grem (всего исправлений: 3)
Ответ на: комментарий от Macil

Метапрограммирование - это две стороны: генерация кода и его анализ. По генерации кода лисп неплох. По анализу кода лисп безнадёжно сливает.

В любой нормальной базе данных есть системные таблицы. Из них можно восстановить исходный текст любого объекта БД, если объекты не обфусцированы. После этого проанализировать код - это лишь вопрос создания инструментов, эти инструменты уже давно созданы и массово применяются.

Код на Java можно статически проанализировать (конечно, и там можно наворотить динамическую загрузку классов по сети и прочая, но это не по умолчанию делается, т.е. не всегда). Инструменты тоже давно созданы.

Лисп провоцирует писать код, который трудно статически проанализировать.

Рефлексия в лиспе гораздо слабее, чем в SQL. Например, в стандарте нет способа восстановить defstruct по существующей в памяти структуре. Исходник объекта по его имени достать невозможно. Поэтому в плане анализа кода лисп эпически сливает. Я вижу два способа это исправить:

1. Наложить ограничения на используемые фичи и стандартизировать их применение.

2. Сбор метаданных по мере сборки образа (перехват defun, macroexpand и т.п.).

Но это всё не так просто и это не сделано. Поэтому, например, для Java есть всякие IDE с рефакторингом, а для лиспа - нет. И это потеря производительности труда.

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

Поэтому достоинства у лиспа в энтерпрайзе - именно те, которые я сказал: отладка, контроль доступа, управление транзакциями. Но я должен был ещё упомянуть возможность горячей замены кода и приличное быстродействие, на фоне какого-нибудь питона. Это преимущество лиспа кардинально и оно позволяет увеличивать затраты времени на отладку как O(log(КоличествоСтрокВПроекте)), а не как O(КоличествоСтрокВПроекте^n), как обычно.

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

Первый, благодаря гугловскому пиару, в который вбуханы огромные средства.

А где можно посмотреть смету расходов на этот пиар?

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