A. Д. Корлан

Эффективный сборник языков R (S, Splus) в переводе на CommonLisp
Что это Загрузить Установка Объяснение Переводы

Что это. R2cl это минимальное доказательство концепта переводчика с языка R или S в Common Lisp. Увеличение в скорости более чем в 1000 раз может потом быть достигнуто путем применения бесплатного компилятора родного кода CMU Common Lisp на полученный код, делая его сравнимым с FORTRAN, Ada или C.

Единственная цель текущей версии (0.1) это разрешить автоматический перевод и компиляцию простого исходного пункта. Мы не внедряли больше никаких функций, нужных не для этого.

Загрузить R2cl-0.1.tgz релиз 7 янв, 2006.

Установка и использование. Чтоб его установить, вам надо вначале установить cmucl (CMU Common Lisp) и R. оба идут в комплекте с большинством распространителей Linux по умолчанию, но вы должны специально выбрать его для установки. Я думаю, последние (после 2000 года) версии будут работать. У меня R 1.5.1 и cmucl x86-linux 3.0.8 18c+ работающая на Debian 3.0 (мощная). Вы должны были запустить оболочку bash (которая есть по умолчанию) и GNU Make в вашей системе (которые обычно тоже есть).

Просто распакуйте архив распределения:

tar xvzf R2cl-0.1.tgz

Это создаст каталог R2cl. Напечатайте:

cd R2cl

make

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

Объяснение. R является повторной реализацией языка S для статистической обработки. Это бесплатный проект, смотрите на r-project.org. R это очень выразительный "матричный" язык (это делает широкое использование матричных и векторных операторов) с огромной библиотекой статистических функций. Тем не менее, экспрессивность требует динамического двигателя выполнения на основе модели "бесконечной памяти", которая медленная. Оно также требует, чтобы выражения и функции могли быть построены с помощью программы или введены оператором во время выполнения, при этом усиливая интерпретирующий подход. Это делает прямые реализации этой медленной модели. Для программ, которые могли бы иметь эквивалент в FORTRAN, этот эквивалент FORTRAN был бы в 1000 раз быстрей.

Lisp является языком с той же моделью исполнения, за исключением того, что он даже более общий, и включают в себя обширную функцию макросъемки и объектно-ориентированную. Есть ароматы мая, но основные течения – это Схема (которая редукционистская, отдает простотой) и Common Lisp (стандарт ISO, которая обширна и связана с эффективной компиляцией).

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

Тем не менее, нет никаких причин для кусков кода, которые не имеют никакого использования общности (например, генерация исходного кода и исполнение во время выполнения), чтобы не быть скомпилироваными в код так быстро, как FORTRAN. На практике это очень сложная задача. Тем не менее, она была достигнута в свободном осуществлении, например, в CMU CommonLisp, чток я был рад узнать, когда пробовал эти критерии.

Семантика R является подмножеством семантики Схемы. Оно также включает в себя, конечно, богатство типов данных, пригодных для статистики. Семантика (выразительные механизмы) CommonLisp, вероятно, расширение Схемы. Это означает, что R легко выразить в схеме (на самом деле двигатель свободного осуществления является двигателем Схемы) и, возможно, легко перевести в CommonLisp. Последнее интересно, по причине наличия эффективного компилятора.

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

Многим приложениям R не нужна скорость. Вы можете описать работу, которую вам нужно сделать так быстро, что вы редко можете позволить себе подождать пару секунд, чтоб система сделала это. Тем не менее, есть и целые классы приложений, где скорость необходима, и если полное портирование R на CommonLisp (действительно большой проект) будет сделано все они станут реальными для таких пользователей R, как и я.