Perl Data Language
PDL (сокращение от англ. Perl Data Language) — набор векторных расширений для языка программирования Perl 5-й версии. Предназначен для научных расчётов и иных задач, связанных с обработкой больших объёмов данных, в том числе: обработка изображений, компьютерное моделирование физических систем.
Perl Data Language (PDL) | |
---|---|
Класс языка | векторная (en:Array programming) |
Появился в | 1996 |
Автор | Карл Глейзбрук, Шарль Бринчманн, Томас Лукка и Кристиан Соллер |
Разработчик | Карл Глэйзбрук[d] |
Выпуск | 2.4.11 (20 мая 2012) |
Испытал влияние | APL, IDL, Perl |
Лицензия | GNU General Public License, Artistic License |
Сайт | pdl.perl.org |
PDL подключается к Perl программе при помощи: use PDL;
Дизайн языка
PDL является векторным языком: синтаксис выражений сходен с стандартными математическими обозначениями операций над векторами многомерными матрицами. В этом отношении PDL сходен с языком программирования APL и часто сравнивается с MATLAB, Interactive Data Language, NumPy и Octave. В отличие от MATLAB и IDL, язык PDL допускает более гибкую индексацию и векторизацию, например, если в функцию, обрабатывающую двумерные матрицы, подать трёхмерную, то функция будет применена послойно к каждому слою куба.
На начало 2005, функциональность, сходная с PDL, планировалась к включению в шестую версию языка (Perl 6).
Графика
PDL предоставляет интерфейсы к нескольким модулям для создания графиков. NetPBM используется для ввода-вывода изображений; PLplot, PGPLOT и Karma используются для двумерной графики. Для трёхмерной графики используется интерфейс OpenGL.
Ввод-вывод
PDL предоставляет возможности для чтения и записи данных в различных форматах, включая JPEG, PNG, GIF, PPM, MPEG, FITS, NetCDF, GRIB, двоичные файлы, CSV.
perldl
Вместе с PDL обычно устанавливается интерактивный интерпретатор perldl, который позволяет производить несложные вычисления без необходимости создания файлов с текстом программы. Пример работы с perldl:
perldl> $x = pdl [[1, 2], [3, 4]]; perldl> $y = pdl [[5, 6, 7], [8, 9, 0]]; perldl> $z = $x x $y; perldl> p $z; [ [21 24 7] [47 54 21] ]
В данном примере создаются две матрицы и затем, при помощи перегруженного оператора x
, выполняется матричное умножение. Команда p
является сокращением для print
.
Реализация
Ядро PDL реализовано на языке Си. Значительная часть функциональности реализована на PP, метаязыке PDL. Некоторые модули написаны на FORTRAN, с интерфейсом к C или PP. PP упрощает написание расширений к PDL на языке Си.
Реализация PDL использует объектно-ориентированные возможности Perl: PDL определяет новый скалярный объект типа «PDL» (часто обозначается piddle, ведет себя подобно скалярным типам), содержащий матрицы произвольной размерности. Все стандартные операторы языка перегружены для прозрачной поддержки объектов piddle. В отличие от стандартных массивов языка, piddle изначально разрабатывались для эффективной численной обработки
Литература
- Games, diversions, and Perl culture: best of the Perl journal. Jon Orwant. Chapter 11 "PDL: The Perl Data Language"
Ссылки
- PDL — The Perl Data Language — основной сайт проекта
- PDL Quick Reference — введение в PDL
- Черновик книги PDL Book (PDL-2.4.10)