Здравствуйте, Mystic Artifact, Вы писали:
MA> От души могу добавить только то,что любому человеку который скажет что в каждой ... программе есть часть лиспа — готов не только плюнуть в рожу, но и больно ударить в нос. Потому что это бредятина сивой кобыли и слезные мечтания.
MA> Я ваш лисп наблюдал в ныне процветающих CAD системах и ничего кроме как сказать, что это полное уебище — просто невозможно.
MA> Но конечно, всегда найдутся альтернатмвно мыслящие которые найдут в этом хоть каплю хорошего. А что долдно быть им не ведомо.
Я таки чуть вступлюсь за него (заранее прикрыв нос

)
Что собственно хотел сказать тут Гринспун, это следующее:
1. Толстая система (будем говорить так) достаточно быстро дорастает до состояния, когда её надо тюнить по куче параметров, причём (если это десктопное приложение) индивидуально и часто ещё и параметризованно.
2. Толстая система должна поддерживать скриптование — как хуки на события, так и просто автоматизацию (по кнопке).
3. Язык этих скриптов должен быть достаточно гибким, чтобы быть, грубо говоря, эквивалентным машине Тьюринга.
4. Язык этих скриптов должен позволять средства метапрограммирования, включая генерацию кода на ходу (даже если от неё требуется примитив уровня make_adder).
По состоянию на сейчас этому соответствуют несколько языков, сюда годятся JavaScript, Python, Ruby, Lua и с два десятка ещё других менее известных. Но:
1. На 1993, широко известным таким языком был, пожалуй, только LISP. Остальные были в зачаточном состоянии (Python, Ruby) или вообще ещё не родились. Может, были какие-то сейчас забытые (наверняка даже были), но тоже малопопулярные.
2. LISP, в отличие от остальных, обладает гомоиконичным метапрограммированием, то есть в нём код и данные представлены идентично, любые данные могут быть отданы на исполнение как код. Код можно реформировать, оптимизировать и т.д. обычными средствами работы с данными. (Как пример, это делается внутри GCC: его GIMPLE это специализация LISP.) У остальных надо как минимум конвертировать между исполнимым и обрабатываемым представлениями.
Ну и Common LISP был на тот момент развитой отработанной реализацией.
Это всё не значит, что сейчас надо всегда использовать LISP, тем более тяжеловатый Common LISP. GNU в основном использует свою реализацию, близкую к Scheme. Гугл использует JavaScript (например, вы можете даже на стандартном акаунте нарисовать скрипт, который будет что-то делать с документами на Google Drive, и сказать запускать его периодически или по триггеру). В небольшой программе на C/C++ можно собрать код на ходу через libjit, в более толстой — подключить LLVM. Важно понимать стоящий за этим принцип.
В задаче реализации распределённого сервиса с устойчивостью к локальным проблемам, сетевым проблемам, невидимым обновлением на ходу и т.д. — Erlang показывает аналогичный образец, тут Вирдинг в заметной мере прав. Эрланг старается держать марку идеала такой ниши; там, естественно, есть 100500 вопросов к отдельным моментам реализации, но как образец он сохраняет силу и сейчас.
Другой вопрос, что уже появились неплохие конкуренты (вроде Go)...
Ну и проблемы у LISP с Erlang в заметной мере одинаковые из-за, например, функционального подхода (хоть и самого примитивного, по сравнению с группой ML, хаскеллоидами и так далее) — если 99% программистов пишут императивно, то в фаворе будут императивные средства.
И спасибо за комплимент
MA> А я вот знаю точно — ни лиспу ни эрлангу в современном мире места нет. Доживают, не иначе.
MA> Add: А если ты не GP язык — то заявить как бы и нечего. И дело даже не в обезьянах... Просто, каждый язык и область требует своего погружения. Где-то рядом в темах мне наверное не верят, что люди выжимают из выровненных указателей. На кой оно надо? Где это вообще возможно? Зачем? Но, я вот нашел ответы для себя на эти вопросы. Зачем ерланг, раст, го или еще какая люси — мне неведомо. Да, список просто наугад взят. Вся популярность раста растет не из за его ебанутой прости господи модели, а то что серво+мозилла. Так то он язычок был и есть так себе. Тоже самое с го без гугла — никто б и не взглянул. Так и ты с эрлангом, но это просто нишевое решение.
Не путай таки, кто раскручивает изначально, и есть ли в принципе заметный смысл. Что раскрутить язык сейчас требует заметных ресурсов — факт, поэтому идут на это только крупными коллективами и от безысходности. Поддержка — тоже (подсчитаем-ка затраты на развитие GCC и Clang). Но дальше, набрав силу, он может существовать и без начального толкателя.
На сейчас, мне кажется, Rust и Go достигли того уровня, который позволяет существовать без первосоздателя — его роль кто-то точно подхватит. А вот для Erlang это откровенно сомнительно. Ну разве что тот же фейсбук с WhatsApp подхватит... но популярности ему это не добавит.
MA> За пределами своей ниши обитают только обезьяны, и хотя это видимо должно многим людям быть обидно, просвященный человек в 2020 году знает что теория эволюции Дарвина относительно человека весьма туманна, а большинство находок начала прошлого столетия — подделки. Шило в мешке не утоишь.