оба вроде лиспы. но почему-то все утверждают что схема проще(лучше)).
тыкал racket guile принципиальной разницы не заметил.
какие обоснованные могут быть аргументы за схему?
Здравствуйте, vaa, Вы писали:
vaa>оба вроде лиспы. но почему-то все утверждают что схема проще(лучше)). vaa>тыкал racket guile принципиальной разницы не заметил. vaa>какие обоснованные могут быть аргументы за схему?
схема вроде как упрощённый интерпретируемый диалект лиспа с функциональными штуками,
он подходит для небольших приложений и либок,
common lisp более серьёзный, в нём тоже есть лямбды с какими-то особенностями,
вроде на steel bank common lisp (sbcl) куча всего написано, в т.ч. для emacs
сам когда-то писал небольшие утилиты на сыром newlisp, он совсем простой, но тормозной,
для чего-то более серьёзного наверное подойдёт что-нибудь вроде sbcl
CL — штука древняя и там всё древнее. Есть какие-то старые системы, написанные на нём. Есть компании, продающие реализацию этого лиспа за дикие деньги (типа дельфи). С опенсорсом там всё под вопросом.
Scheme — штука для академиков больше. Эдакий учебный язык. Минималистичный, красивый, ломать зубы молодым студентам. Чтобы можно было за семестр изучить практически в полном объёме, что-нибудь учебное попрограммировать и потом благополучно забыть.
При этом Scheme используется в некоторых опенсорс проектах в каком-то виде, как язык скриптов, поэтому практическая применимлость у него, кажется, повыше.
С какой-то версии Scheme начали развивать от маленького учебного языка в сторону большого практичного языка. У него также есть куча расширений, которые из него практически другой язык делают. Типа типизированной схемы и многого другого. Но я не слышал, чтобы оно где-то взлетело. Имхо, смысл Scheme исключительно в его исходной форме простого лиспа для студентов.
В целом это всё возня в песочнице. Нужен лисп для практики — бери clojure.
Здравствуйте, vaa, Вы писали:
vaa>оба вроде лиспы. но почему-то все утверждают что схема проще(лучше)). vaa>тыкал racket guile принципиальной разницы не заметил. vaa>какие обоснованные могут быть аргументы за схему?
Схема — это подчищенный Лисп до возможности компилирования в нейтив.
Т.е. более строгая версия языка.
Исходный Лисп исполняется интерпретирующей машинкой, тормозит прилично.
Здравствуйте, vaa, Вы писали:
vaa>оба вроде лиспы. но почему-то все утверждают что схема проще(лучше)). vaa>тыкал racket guile принципиальной разницы не заметил. vaa>какие обоснованные могут быть аргументы за схему?
Схема точно проще и меньше — про размер описания языка уже тут говорили.
Коммон Лисп древний, там очень много всего накопилось в плане как языка, так и умений компилятора.
В умелых руках КЛ быстрее.
Но бинарники будут огромные, т.к. будут включать в себя и толстый рантайм, и компилятор, и декомпилятор и что только не. И если не путаю, КЛ по манере компиляции похож на смолток — сохраняет живой образ.
Для Схемы же бывают классические компиляторы, некоторые через Си делают нативный код, например. Но не супер быстрый, ибо динамические типы.
Я сам сейчас потихоньку пописываю на Racket — это некоторое развитие Схемы (IDE DrRacket раньше называлась DrScheme), там много интересного и приятного. Сейчас там под капотом Chez Scheme, он нативный код тоже производит.
DM>Я сам сейчас потихоньку пописываю на Racket — это некоторое развитие Схемы (IDE DrRacket раньше называлась DrScheme), там много интересного и приятного. Сейчас там под капотом Chez Scheme, он нативный код тоже производит.
да как-то тутор тыкал с графикой. прикольно. а он умеет генерить маленькие бинарники получается?
Схема академична, CL практичен.
Схема минималистична, CL сборник всего на свете, почти что второй Кобол.
Схема концептуальна, CL забивает болт на все эти ваши иммутабельности и прочие заветы FP.
Если сквозь древние наслоения CL продираться нет желания, и хочется что-то сделать на красивой Схеме (в которой, однако, нихрена практически полезного из коробки нет), то, вероятно единственный путь — это писать "мясо" на чём-то традиционном и нативном (C, C++, Rust), а Схему прикрутить сверху как скриптовый язык, ворочающий сущностями верхнего слоя абстракции. А-ля guile или gambit.
Здравствуйте, D. Mon, Вы писали:
DM>Я сам сейчас потихоньку пописываю на Racket — это некоторое развитие Схемы (IDE DrRacket раньше называлась DrScheme), там много интересного и приятного. Сейчас там под капотом Chez Scheme, он нативный код тоже производит.
PS тыкнул 7.4 ХВ exe 19МБ. стартует соответственно не быстро. компилится тоже неприлично долго.
Здравствуйте, vaa, Вы писали:
DM>>Я сам сейчас потихоньку пописываю на Racket — это некоторое развитие Схемы (IDE DrRacket раньше называлась DrScheme), там много интересного и приятного. Сейчас там под капотом Chez Scheme, он нативный код тоже производит.
vaa>PS тыкнул 7.4 ХВ exe 19МБ. стартует соответственно не быстро. компилится тоже неприлично долго.
Версия 7 вроде на совсем другом движке была, надо 8.х брать.
Для практических нужд за основу стоит брать #lang racket/base, тогда и бинарник меньше, и собирается быстрее.
хелловорлд меньше 2 МБ, но есть подвох — это не самостоятельный бинарник, он полагается на наличие рэкета в системе. Там можно сделать stand-alone, он тогда генерит архив (8 МБ на линухе, Racket 8.7), в котором рядом с твоим бинарником кладет необходимый рантайм.
В это время коммон лисп делает бинарники в сотни мегов, так что разница на порядки.
PS. компилирует он у меня хелловорлд меньше секунды, но вообще можно и не компилировать, а сразу исполнять, получается по времени примерно как скомпилированный бинарник запустить.
(специально менял содержание, чтобы возможное кэширование не помешало время мерить)
Здравствуйте, vaa, Вы писали:
vaa>какие обоснованные могут быть аргументы за схему?
Как минимум в одной крупной fintech компании схема используется как DSL для довольно большой системы.
Надо сказать, вписалась туда схема очень хорошо.
Правда, стоит отметить, что у команды, которая эту систему поддерживает, есть некоторые проблемы с наймом и удержанием людей.