Кіріспе

Perl Data Language (қысқаша PDL) – Perl бағдарламалау тіліне арналған массивтік бағдарламалау кітапханасы. PDL – Perl бағдарламалау тіліне қосылатын, ашық кодты массивтік бағдарламалау кеңейтулерінің жиынтығы. PDL Perl-дің кіріктірілген дерек құрылымдарын үлкен көпөлшемді массивтерді қоса беру арқылы кеңейтеді және оларды векторлық нысандар ретінде өңдеуге мүмкіндік беретін функционалдық мүмкіндіктерді ұсынады. Одан әрі, ол бейне өңдеу, машиналық оқыту, физикалық жүйелерді компьютерлік модельдеу, графикалық сызу және деректерді көрсетуге арналған құралдарды қамтиды. Күрделі емес операциялар автоматты түрде массивтердің барлығы бойынша векторландырылады, ал жоғары өлшемді операциялар (мысалы, матрица көбейту) қолдау көрсетіледі.

Тілдік дизайн

PDL – векторлық массивтік бағдарламалау тілі: өрнек синтаксисі стандартты математикалық векторлық жазудың өзгеруі болып табылады, сондықтан пайдаланушы үлкен массивтерді қарапайым өрнектермен біріктіріп, олармен жұмыс істей алады. Осы тұрғыдан алғанда, PDL APL бағдарламалау тілінің дәстүрін жалғастырады және MATLAB, Interactive Data Language сияқты коммерциялық тілдермен, сондай-ақ NumPy және Octave сияқты ашық кодты тілдермен салыстырылады. MATLAB және IDL-ден өзгеше, PDL индекстеу және векторлауда үлкен икемділікке мүмкіндік береді: мысалы, егер кіші бағдарлама әдетте 2D матрицамен жұмыс істейтін болса, оған 3D дерек текшесін беру арқылы текшедегі әрбір 2D қабатқа бірдей операция қолданылады. PDL Perl-ден кем дегенде үш негізгі бағдарлама құрылымын қабылдайды: императивті бағдарламалау, функционалдық бағдарламалау және конвейерлік бағдарламалау нысандары біріктірілуі мүмкін. Кіші бағдарламалар автоматты жүктеу механизмі арқылы немесе әдеттегі Perl модульдері механизмі арқылы жүктелуі мүмкін.

Графика

Perl-дің бастапқы тіліне сай, PDL графика мен сызуды қолдау үшін әртүрлі модульдерден материал алады. NetPBM кескіндерді оқу және жазу (I/O) мүмкіндігін ұсынады (бірақ FITS тікелей қолдауға ие). Gnuplot, PLplot, PGPLOT және Prima модульдері 2D графикалық және сызу қолданбалары үшін, ал Gnuplot және OpenGL 3D сызу және көрсету үшін қолдау көрсетеді.

Ж/С

PDL көптеген ашық дерек форматтарын оқу және жазу мүмкіндігін ұсынады, оның ішінде JPEG, PNG, GIF, PPM, MPEG, FITS, NetCDF, GRIB, шикі бинарлық файлдар және шекараланған ASCII кестелері бар. PDL бағдарламашылары CPAN Perl I/O кітапханаларын пайдаланып, жүздеген стандартты және арнайы файл форматтарындағы деректерді оқу және жазу мүмкіндігіне ие.

Машиналық оқыту

PDL машиналық оқыту үшін қолданылуы мүмкін. Ол классикалық k-құрал кластерлеуді немесе ANOVA, сызықтық регрессия, PCA және логистикалық регрессия сияқты жалпы және жалпыланған сызықтық модельдеу әдістерін жүзеге асыру үшін қолданылатын модульдерді қамтиды. Регрессиялық модельдеу міндеттері үшін PDL қолданылуының мысалдары: ата-аналардың білім деңгейі мен олардың тегінің айырмашылықтары арасындағы байланысты бағалау, регрессияға негізделген нормалдау қажет болатын РНК-белок өзара әрекеттесу профильдерін салыстыру және галактикалардың спектрлерін талдау.

Іске асыру

PDL-дің негізгі бөлігі C тілінде жазылған. Көптеген мүмкіндіктер PP тілінде жазылған, бұл PDL-ге арналған метатіл, ол қарапайым C кодтарын векторлауды және оларды Perl XS компиляторы арқылы Perl тілімен байланыстырады. Кейбір модульдер Fortran тілінде жазылған, C/PP интерфейстік қабатымен бірге. Көптеген ұсынылған функциялар PDL-дің өзінде жазылған. PP пайдаланушыға PDL үшін C тіліндегі кеңейтімдерді жазуға мүмкіндік береді. Сондай-ақ, Inline модулі (Inline::Pdlpp) бар, ол PP функцияларын тікелей Perl сценарийіне енгізуге мүмкіндік береді; тиісті код төменгі деңгейде компиляцияланып, Perl процедурасы ретінде қолжетімді болады. PDL API негізгі Perl 5 объектіге бағытталған мүмкіндіктерін пайдаланады: PDL Perl скалярлық объектісінің жаңа түрін анықтайды (сол атаумен "PDL" немесе "ndarray" деп аталады), ол Perl скаляры ретінде жұмыс істейді, бірақ сандық немесе символдік мәндердің реттелген массивін қамтиды. Барлық стандартты Perl операторлары PDL объектілерімен түсінікті түрде жұмыс істеу үшін қайта жүктеледі, ал PDL-ді әдеттегі Perl скалярларымен біріктіруге болады. PDL-мен жұмыс істеу үшін жүзден астам нысандық әдістер негізгі модульдермен ұсынылады.