LINUX.ORG.RU

Scheme vs CL


0

0

Часто можно услышать что Scheme подходит только для обучения, а CL для серьезных проектов. Кто нить может обьяснить чем CL лучше Scheme (кроме множества библиотек), желательно в формате: в CL есть X благодаря чему можно сделать Y (или сделать намного проще).

anonymous

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

Никакого домашнего задания.

Просто в данный момент активно изучаю scheme и интересуют якобы преимущества CL над ней.

anonymous
()

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

CL - ужасающий монстр, в который собрали всё, что было в лиспах в конце 80-х, как хорошего, так и не очень. Большой Дизъюнкт.

Scheme - изящный минималистичный лисп, повёрнутый в сторону академичности (по крайней мере раньше).

Не претендую на абсолютную истину, просто впечатление.

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

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

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

> придется делать руками / либами.

А поскольку либы(модули) стандартизированы только недавно в R6RS (раньше в каждой реализации были свои), портабельной реализации FFI (типа uffi в CL) нет - то о переносимости между реализациями схемы можно забыть.

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

Из этих соображений CL практичнее. Хотя Scheme - изящнее.

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

> А поскольку либы(модули) стандартизированы только недавно в R6RS (раньше в каждой реализации были свои), портабельной реализации FFI (типа uffi в CL) нет - то о переносимости между реализациями схемы можно забыть.

Ну, в CL UFFI/CFFI - это скорее из серии "на безрыбье и сам раком станешь", нежели то, что должно быть... Но, по крайней мере над CFFI, работа медленно идёт.

> Как следствие, количество библиотек для схемы гораздо меньше чем для CL.

Когда начинают вывешивать лозунги типа "в CL большое количество портабельных библиотек" - сразу вспоминаю CPAN. Не в смысле количества, а в смысле _средних_ качества и портабельности.

> И это при том, что его стандартная библиотека весьма спартанская.

Вы о стандарте или о реализациях? Отдельные "толстые" реализации схемы сами по себе совсем не маленькие и содержат немалое количество дополнительных библиотек.

Хотя должен согласиться - в итоге CL по количеству библиотек таки выигрывает у схемы. Но это выигрыш "больного" у "инвалида" :(

Меня и в CL "добивает" ситуация с именами функций: в стандартном модуле :COMMON-LISP их уже много, и либо приходится "скрывать" необходимые имена (что затрудняет импорт такой библиотеки в другой модуль), либо свои имена делать "внутренними" приписыванием префиксов (костыль), либо давать имена-синонимы, что тоже не всегда "хорошо". Учитывая, что в CL в пространство имён функций попадают и дженерики (т.е. все "методы" классов) и макры и спец. формы - слов катастрофически не хватает (наверное одна из причин "многословности" имён в лиспе).

А теперь ещё и объединить пространства имён для переменных и функций? Нет уж, нет уж - лучше вы к нам :)

P.S. Не смотрите на моё ворчание - остальные языки ещё более "узкопрофильные" (и очень часто этот профиль - профиль самого кодера) :)

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

Ладно, схема -- меньше, лаконичней, но мало библиотек, CL -- монстр, не так красив и лаконичен как, много библиотек.

Задача: распознавание текста (есть скан, необходим текст).

Вопрос: стали бы вы реализовывать это на Scheme или на CL?

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