Perl Data Language
PDL (сокращение от англ. Perl Data Language) — набор векторных расширений для языка программирования Perl 5-й версии. Предназначен для научных расчётов и иных задач, связанных с обработкой больших объёмов данных, в том числе: обработка изображений, компьютерное моделирование физических систем.
PDL подключается к Perl программе при помощи: use PDL;
Общие сведения
| Perl Data Language (PDL) | |
|---|---|
| Класс языка | векторная (en:Array programming) |
| Появился в | 1996 |
| Автор | Карл Глейзбрук, Шарль Бринчманн, Томас Лукка и Кристиан Соллер |
| Разработчик | Карл Глэйзбрук[d] |
| Выпуск | 2.077 (16 марта 2022) |
| Испытал влияние | APL, IDL, Perl |
| Лицензия | GNU General Public License, Artistic License |
| Сайт | pdl.perl.org |
Дизайн языка
PDL является векторным языком: синтаксис выражений сходен с стандартными математическими обозначениями операций над векторами многомерными матрицами. В этом отношении PDL сходен с языком программирования APL и часто сравнивается с MATLAB, Interactive Data Language, NumPy и Octave. В отличие от MATLAB и IDL, язык PDL допускает более гибкую индексацию и векторизацию, например, если в функцию, обрабатывающую двумерные матрицы, подать трёхмерную, то функция будет применена послойно к каждому слою куба.
На начало 2005, функциональность, сходная с PDL, планировалась к включению в шестую версию языка (Perl 6).
Графика
Ввод-вывод
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)