Почему Lisp является общественным так фрагментированный? [закрытый]

69
задан Drew 6 October 2013 в 06:01
поделиться

8 ответов

Сообщество Lisp фрагментировано, но все остальное тоже.

  • Почему так много дистрибутивов Linux?

  • Почему так много вариантов BSD? OpenBSD, NetBSD, FreeBSD, ... даже Mac OS X.

  • Почему так много языков сценариев? Ruby, Python, Rebol, TCL, PHP и бесчисленные другие другие.

  • Почему так много оболочек Unix? Ш, CSH, Bash, KSH, ...?

  • Почему так много реализации логотипа (> 100), базовых (> 100), C (бесчисленные), ...

  • Почему там так много Варианты рубин? Ruby Mri, Jruby, Yarv, MacRuby, Hotruby?

  • Python может иметь главный сайт, но есть несколько слегка разных реализаций: CPYthon, IronPython, Jython, Python для S60, Pypy, Unlanden ласточка, CL-Python, ..

  • Почему там C (CLANG, GCC, MSVC, TURBO C, WATCOM C, ...), C ++, C #, CILK, Objective-C, D, BCPL, ...?

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

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

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

Если вы посмотрите на обычный Lisp, есть около трех или четырех различных активных коммерческих продавцов. Попробуйте заставить их позади одного предложения! Не будет работать. Тогда у вас есть куча активных реализаций с открытым исходным кодом с разными целями: один компилирует C, другой написан в C, один пытается иметь быстрый оптимизирующий компилятор, кто пытается иметь некоторую землю с помощью собственного компиляции, один нацеливается на JVM ... И так далее. Попробуйте рассказать сопровождающим, чтобы бросить свои реализации!

Схема имеет около 100 реализаций. Многие мертвы или в основном мертвы. Не менее десяти до двадцати активны. Некоторые являются хобби проекты. Некоторые являются университетскими проектами, некоторые являются проектами компаний. Пользователи имеют разнообразные потребности . Нужна необходимость в реальном времени GC для игры, еще одна нужна встраивается в C, нужно только босыевые конструкции для образовательных целей, и так далее. Как сказать разработчикам держать от взлома их реализации.

Тогда есть некоторые, которые не любят Common Lisp (слишком большой, слишком старый, не достаточно функциональный, не объектно, слишком ориентирован, слишком быстро, не достаточно быстро, ...). Некоторые не любят схему (слишком академические, слишком маленькие, не масштабируются, слишком функциональные, не достаточно функциональные, без модулей, неправильных модулей, а не правильные макросы, ...).

Тогда кому-то нужен Лисс, в сочетании с объектом-C, тогда вы получаете ну. Кто-то взломает какой-нибудь Lisp для .NET. Тогда вы получаете несколько лиссов с параллелизмом и свежими идеями, тогда у вас есть Clojure.

Это языковая эволюция на работе . Это как камбрийский взрыв (когда появилось много новых животных). Некоторые умрут, другие будут жить, появится новое новое. В какой-то момент некоторые диалекты появляются, что поднимают состояние искусства (схема для всего с функциональным программированием в Lisp в 70-х / 80-х и обыкновенном Lisp для всего Maclisp - в 80-х годах) - это заставляет некоторые диалекты исчезнуть в основном ( А именно стандартные Lisp, Interlisp и другие).

Общий Lisp - это аллигатор диалекторов Lisp. Это очень старый дизайн (сотни миллионов лет) с небольшими изменениями, выглядит немного страшно, и время от времени он ест несколько молодых ...

Если вы хотите узнать больше, Эволюция Lisp Соответствующие слайдов) - это очень хорошее начало!

162
ответ дан 24 November 2019 в 13:36
поделиться

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

(fun (+ 3 4))

Однако почти все остальное может варьироваться между реализациями. Схема и Cl - это совершенно разные языки и должны быть считать такими.

Я думаю, что позвонив с фрагментированным сообществом Lisp - это как позвонить в «C вроде» сообщества фрагментированной. Он имеет C, C ++, D, Java, C #, Go, JavaScript, Python и многие другие языки, которые я не могу думать.

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

14
ответ дан 24 November 2019 в 13:36
поделиться

Лисс не так же фрагментирован как основной.

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

Даже наиболее часто используемая реализация (MS VB) отличается между версиями.

8
ответ дан 24 November 2019 в 13:36
поделиться

Схема и обычные LISP стандартизированы. SBCL кажется, что Sefacto Open Source Lisp и есть много примеров, на то, как его использовать. Это быстро и бесплатно. Clozurecl также выглядит довольно хорошо.

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

CL Hyperspec кажется таким же хорошим, как для меня javadoc.

Что касается фрагментации сообщества, я думаю, что это мало для стандартов или ресурсов. Я думаю, что это гораздо больше, чтобы сделать то, что было относительно небольшим сообществом до недавнего времени.

Clojure, я думаю, имеет хороший шанс стать лисс для нового поколения кодеров.

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

8
ответ дан 24 November 2019 в 13:36
поделиться

Тот факт, что существует множество реализаций общих веществ, следует считать хорошей вещью. Фактически, учитывая, что существует примерно одинаковое количество свободных реализаций Common Lisp, поскольку существуют бесплатные реализации C ++, замечательны, учитывая относительную популярность языков.

Бесплатные общие реализации LISP включают CMU CL, SBCL, OpenMCl / Clozure CL, CLISP, GCL и ECL.

Бесплатные реализации C ++ включают G ++ (с вариантами Cygwin и Mingw32), Digital Mars, Open Watcom, Borland C ++ (Legacy?) И Cint (переводчик). Существуют также различные реализации STL для C ++.

Что касается схемы и обыкновенного Lisp, хотя, хотя и по общему признанию, неточная аналогия, есть времена, когда я бы рассмотрел схему, является обыкновенным Lisp, что C является C ++, т. Е. В то время как схема и C представляют собой небольшие и элегантные, обычные Lisp и C ++ Большой и (возможно) больше подходит для более крупных приложений.

4
ответ дан 24 November 2019 в 13:36
поделиться

То, что вы хотите, на самом деле не существует, для моих знаний.

Самая близкая вещь к тому, что вы хотите, на общий уровень, это XDEBUG . Он превращает процесс на небольшой сервер, который примет отладку команд. Это обычно используется для отладки и профилирования, а не в качестве общения интерпретирования, но его возможность. Я считаю, что Perl ActiveState может управляться как сервер XDeBug.

В противном случае вам нужна явная программа в каком-либо боковом канале, что программа Perl слушает команды (которая имеет значение xdebug). Это может быть так же просто, как открытие розетки, которое читает строку, уклоняется от него, кодирует результат как yaml (или что-то еще) и записывает его обратно. Refl, но на розетке, а не на терминале.

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

Извините, у меня нет ничего более конкретного. Это сделало бы большой модуль CPAN.

-121--4132690- [11132690-

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

Итак, когда у вас есть куча признанных хакеров и культура модификации, происходит фрагментация. Вы получаете схему , , Common Lisp , ELISP , ARC . Это все довольно разные языки, но они все «Lisp» одновременно.

Теперь, почему сообщество фрагментировано? Ну, я виню время и зрелости на этом. Язык 50 лет! : -)

10
ответ дан 24 November 2019 в 13:36
поделиться

Два возможных фактора:

Языки Lisp не очень популярны по сравнению с другими языками, такими как C/C++/Ruby и т.д., что само по себе может создать иллюзию фрагментированного сообщества. В других языковых сообществах может быть равная фрагментарность, но в более крупном сообществе будут более крупные фрагменты...

Языки Lisp легче, чем большинство из них. Я видел много, много "игрушечных" лисповых реализаций, которые люди делали для развлечения, много "правильных" лисповых реализаций для решения конкретных задач. Реализаций на Lisp гораздо больше, чем, скажем, интерпретаторов Python (я знаю около... 5, большинство из которых обычно взаимозаменяемы)

Есть многообещающие проекты, такие как Clojure, который является новым языком, с четкой целью (concurrency), без особого "исторического багажа", простой в установке/настройке, может переписываться на "экосистему" библиотеки Java, имеет хороший сайт с документацией/библиотеками, а также имеет официальный список рассылки. Это позволяет проверить каждую проблему, с которой я столкнулся, пытаясь выучить Common Lisp некоторое время назад, и способствует созданию более централизованного сообщества.

3
ответ дан 24 November 2019 в 13:36
поделиться

Я считаю, что Lisp - это небольшой язык, поэтому его легко реализовать (сравните с Java, C #, C, ...).

Примечание: многие комментируют, что это действительно не так уж и мало, но я упускаю из виду мою точку зрения. Позвольте мне быть более точным: это падение до цены точки входа. Создание виртуальной машины, которая компилирует какой-нибудь хорошо известный основной язык, совсем не похоже на создание виртуальной машины, которая имеет дело с LISP. Тогда это упростит создание небольшого сообщества вокруг небольшого проекта. Теперь библиотека и спецификация могут быть или не могут быть полностью реализованы, но ценностное предложение все еще существует. Замыкну типичный пример, когда R5RS точно не входит в сферу применения.

3
ответ дан 24 November 2019 в 13:36
поделиться