| |||
|
|
Среда для статистических расчётов под названием R R -- свободно распространяемая кроссплатформенная среда для интерактивных статистических расчётов и не только. Есть хорошая общедоступная документация и приличное community. Основной язык -- R, это S с улучшениями, в частности lexical (static) scoping. Сама среда написана на R + C. Есть сторонние средства для интеграции поддержки R в Emacs, jEdit, Eclipse. Стандарнтая среда R имеет интерфейс command-line + graphics plotter (в одной программе много консольных и графических окон). Есть несколько сторонних GUI-обвязок (RKWard, SciViews-R, Rcmdr). Сама по себе среда R не является сервером. Databases Есть модули для R: RMySQL, RODBC, ROracle, RSQLite, pgUtils (postgreSQL). Extensions Есть возможность писать свои процедуры на R (т.е. и на S), C, C++. Есть хорошая документация. Для вызова из R процедур на Java есть небольшой дополнительный пакет rJava. Ещё один пакет SJava (ниже), обладает более широкими возможностями. О threads в R никакой информации нет, вероятно R не поддерживает треды. Interfaces (local) SJava -- Открытая библиотека, написанная на Java+C. Она позволяет вызывать Java из R и R из Java (последнее только на UNIX-платформах). При желании вызывать R из Java, с управляющей программой на Java, необходимо создавать экземпляр R. Нельзя подключиться к уже запущенному экземпляру R. Однако, есть возможность задать для одного экземпляра (ROmegahatInterpreter) несколько независимых пользовательских контекстов (REvaluator). К сожалению, хотя сам по себе REvaluator является thread-safe, интерфейс R таковым не является и одновременная работа с REvaluator в нескольких тредах невозможна. Должно быть, запросы к REvaluator-у из разных тредов ставятся в очередь. Есть немаленький открытый Java-проект CDK (Chemistry Development Kit), который успешно использует SJava. Interfaces (client-server) Есть простой движок RWeb (на cgi), вызывающий R из command line. Его исходники открыты для изучения. Ничего особенного. Есть свободно распространяемый кроссплатформенный пакет RServe, который позволяет организовать клиентский интерфейс (C, C++, Java) к R на сервере. Сам RServe запускается изнутри R, чем выгодно отличается от SJava и RWeb. RServe использует бинарный, а не текстовый интерфейс к R, что обеспечивает хорошую скорость передачи данных. RServe может работать с многими клиентами одновременно. К сожалению, это только на UNIX-серверах (по причине отсутствия в Windows API поддержки fork()). Windows-версия RServe не держит более одного клиента единовременно. Каждый клиент получает персональный контекст (RConnection), но не может использовать его одновременно в параллельных тредах (что понятно), и не имеет права на более чем один RConnection (что непонятно). Кроссплатформенность Язык R, разумеется, аппаратно-независим. Как было сказано, R -- кроссплатформенная среда, но SJava и RServe имеют ограниченную функциональность под Windows. Лицензии Цитата с сайта RServe: "All files and sources are released under GPL. Please contact us if you need a different license." R и SJava также имеют GPL лицензию. Любые программы, делающие (даже динамическую) линковку с GPL-кодом, обязаны распространяться под GPL |
|||||||||||||