Perl
Матеріал з Вікіпедії — вільної енциклопедії.
![]() |
|
| Дата появи: | 1987 |
|---|---|
| Дизайнер: | Ларрі Волл (Larry Wall) |
| Останній реліз: | 5.10.0 (18 грудня 2007) |
| Система типізації: | Dynamic |
| Під впливом від: | C, sed, awk, shell |
| Вплинула на: | Python, PHP, Ruby, ECMAScript, Dao |
| ОС: | багатоплатформова |
| Ліцензія: | GNU General Public License, Artistic License |
| Сторінка інтернет: | http://www.perl.org/ |
Perl — високорівнева, інтерпретована, динамічна мова програмування загального призначення. Perl було розроблено у 1987 році Ларі Уолом, лінгвістом і програмістом за освітою, який у той час працював системним адміністратором у NASA, як скриптова мова для Unix, метою якої було полегшити процес обробки текстів файлів журналів[1][2]. З того часу до мови було внесено багато змін, і здійснено перегляд її концепції та архітектури, в результаті чого вона стала дуже популярної серед програмістів. Ларі Уол продовжує працювати над ядром мови, і наразі очікується вихід нової версії, Perl 6.
Perl запозичує можливості з багатьох інших мов програмування, як то C, shell scripting, AWK та sed.[3] Мова надає потужні можливості для обробки тексту без довільних обмежень на довжину даних багатьох сучасних інструментів Unix,[4] полегшуючи процес маніпуляції текстових файлів. Використовується для програмування графіки, системноо адміністрування, мережному програмуванні, у написанні програмного забезпечення, яке взаємодіє з базами даних, у програмуванні CGI для веб. Perl за свою гнучкість і потужність отримав прізвисько "швейцарського армійського ножа мов програмування".[5]
Зміст |
[ред.] Історія
Ларрі Волл розпочав роботу над Perl у 1987 році, коли працював програмістом у компанії Unisys,[6] 18 грудня того ж року, у списку поштової розсилки comp.sources.misc від повідомив про вихід версії 1.0.[7] Наступні два роки мова дуже стрімко розвивалась, і вже наступного року було випущено версію 2.0, основним нововведенням якої була покращена робота з регулярними виразами. Perl 3 вийшла у 1989 році, у ній було додано підтримку двійкових потоків даних.
Спершу документація по Perl являла собою усього лиш дну сторінку підручника man. У 1991 році було опубліковано книгу Programming Perl (відома багатьом програмістам під іменем "Camel Book"), яка невдовзі стала, де-факто, стандартним посібником по мові Perl. Разом з цим, було випущено Perl версії 4.0, до якої не жодних серйозних нововведень, лише нова документація.
Після цього слідувала серія випусків, що містили виключно виправлення знайдених помилок, яка завершилась у 1993 році виходом Perl версії 4.036. Після цього, Ларі Уол закинув Perl 4, і розпочав роботу над Perl 5.
Початковий етап роботи над дизайном Perl 5 було завершено у 1994 році. Того ж року, для координації роботи по портуванню Perl 5 на різні платформи, було відкрито список поштової розсилки The perl5-porters.[8]
Perl 5 було випущено 17 жовтня 1994 року. У цій версії було повністю переписано інтерпретатор, а до самої мови було додано багато нових можливостей, включно з об'єктами, лексичними (my) змінними, і підтримкою модулів. Модулі являли собою механізм розширення мови без змін інтерпретатора. Це дозволило з часом стабілізувати код інтерпретатора, а стороннім розробникам працювати над розширенням можливостей мови.
На сьогодні, Perl 5 й досі підтримується, і є основною гілкою мови. Пізніше до неї було додано багато нових можливостей, як то підтримка Unicode, потоків, покращено підтримку об'єктно-орієнтованого програмування, та багато іншого.
18 грудня 2007 року, рівно через 20 років після виходу Perl 1.0, було повідомлено про вихід Perl 5.10.0. До нього увійшло багато нових нововведень, які наблизили мову за своїми можливостями до Perl 6, серед них, перемикач станів (який іменують "given/when"), покращення підтримки регулярних виразів, оператор ~~, та чимало іншого.[9]
Однієї із найважливіших подій в історії Perl 5 було додання підтримки модулів. 26 жовтня 1995 року, було відкрито Comprehensive Perl Archive Network (CPAN), яка стала репозиторієм модулів для Perl. На даний момент, репозиторій пістить більше 13,500 модулів понад 6,500 авторів. CPAN широко розглядається як одна з найбільших практичних переваг Perl.
[ред.] Ім'я
Perl спершу мав ім'я "Pearl", на честь притчи про перли з Євангеліє від Матвія. Ларі Уол шукав для мови коротку назву з можливими конотаціями; він стверджує, що перебрав (і відкинув) усі трьох і чотирьох буквенні слова англійської мови. Він також у свій час планував дати мові ім'я Gloria, на честь своєї дружини. Уол дізнався, що на момент виходу першої версії мови Perl, вже існувала мови PEARL, через що йому довелося змінити написання назви мови, не змінивши її вимови.
Говорячи про мову, назва, як правило, капіталізуються (Perl). Коли ж мови йде про інтерпретатор мови, назва декапіталізується (perl) оскільки Unix-подібні файлові системи є залежними від регістру. До виходу першого видання книги Programming Perl, назва мови писалася, як perl; Однак, Рональд Шварц (Randal L. Schwartz) написав її назву у своїй книзі з великої літери, мотивуючи це тим, що таким чином вона виглядає більш привабливо. Пізніше такий варіант прижився, і став, де-факто, стандартним.[10]
Інколи ім'я пишуть великими літерами "PERL", такий спосіб офіційною документацією зветься невірним[10], через що деякі члени спільноти називають його написанням аутсайдерів.[11] Не зважаючи на те, що Perl часто вважають акронімом для Practical Extraction and Report Language (який часто з'являється у документації[12]), це насправді бекронім; деякі інші розшифровки згодом стали канонічними, наприклад, жарт Ларі Уола Pathologically Eclectic Rubbish Lister.[13] Однак, пан Уол стверджує, що така назва обрана для того, щоб надихнути програмістів до вигадання інших розшифровом даного акроніму.[14]
[ред.] Зображення верблюда
Programming Perl, опублікована видавництвом O'Reilly Media, містила на своїй обкладинці зображення верблюда, через що отримала назву The Camel Book.[6] Нині це зображення є символом мови Perl.
Це також хакерська емблема, яка часто наноситься на футболки, бейсболки, наплечники, тощо.
Дане зображення є торговою маркою, правом на яку володіє O'Reilly, однак, компанія дозволяє вільно його використовувати, і стверджує, що утримує на нього права виключно з метою захисту емблеми від використання в інших цілях.[15] Однак, зображення верблюда ніколи не було офіційним символом мови Perl.[16]
[ред.] Огляд
Perl — мова програмування загального призначення, котра на початку розроблялась, як інструмент для обробки тексту, і тепер використається для вирішення дуже широкого кола завдань, включно із системним адмініструванням, веб-розробкою, розробкою мережного програмного забезпечення, та програмного забезпечення з графічним інтерфейсом користувача.
Мова віддає перевагу практичному (простота у використанні, ефективність, повнота) над гарним (крихітність, елегантність, мінімалістичність).[17] Вона має багато можливостей, включно із підтримкою кількох парадигм програмування (процедурне програмування, об'єктно-орієнтоване програмування, а також функціональне програмування), управлінням пам'яттю, вбудованою підтримкою системи обробки текстів, і величезною колекцією сторонніх модулів.
Згідно зі словами Ларрі Волла, Perl має два гасла. Перше — "Є більше одного способу щось зробити" (англ. "There's more than one way to do it"), більше відомий, як TMTOWTDI, а також "Легкі речі повинні лишатися легкими, а важкі повинні бути можливими" (англ. "Easy things should be easy and hard things should be possible".[18]
[ред.] Особливості
Загальна структура програм на мові Perl була запозичена у С. Perl є типової процедурною мовою, зі змінними, виразами, присвоюваннями, дужками-розділювачами, блоками, циклами та підпрограмами.
Perl також запозичив деякі особливості з shell-програмування. Назви усіх змінних розпочинаються зі спеціальних знаків, кожен з яких характеризує певний тип даних (наприклад, скаляри, масиві та хеш-таблиці). Важливо зазначити, що це дозволяє правильно інтерпретувати назви змінних безпосередньо у текстових рядках. Perl має багато вбудованих функцій, які забезпечують програміста інструментарієм, котрий часто використовується у shell-програграмуванні (хоча, багато з цих інструментів реалізовується за допомогою зовнішніх інструментів), як то сортування або виклик зовнішніх програм.
Perl запозичив списки з мови Lisp, асоціативні масиви (хеші) з AWK, і регулярні вирази з sed. Це зпростило процес парсингу і обробки великих об'ємів текстової інформації.
У Perl 5, була додана підтримка комплексних структур даних, функції першого класу, і об'єктно-орієнтованої моделі програмування. Що включає у себе посилання, пакунки, та інше. Серед найбільших нововведень у Perl 5 слід відмітити наявніть моделів, які дозволяють повторно використовувати один і той же код. Ларі Уол пізніше сказав: "Додання до Perl 5 підтримки модулів було здійснено з метою стимулювати зростання культури Perl, а не самої мови."[19]
Усі версії Perl здійснюють автоматичне типізування змінних і управління пам'яттю. Інтерпретатор знає про тип та способи зберігання усіх об'єктів даних у програмі.
[ред.] Дизайн
Дизайн Perl можна описати, як відповідь на три основні тенденції в комп'ютерної індустрії: зниження вартості апаратного забезпечення, зростання вартості робочої сили, а також вдосконалення технології компіляторів. Багато ранніх мов програмування, як то Fortran та C, були розроблені таким чином, щоб якомога ефективніше використовувати на той час дороге апаратне забезпеченя. У протилежність, Perl було розроблено для підвищення ефективності роботи дорогих на даний час програмістів.
Perl має багато можливостей, які збільшують ефективність програміста за рахунок інтенсивного використання мікропроцесора та великих об'ємів оперативної пам'яті. Серед них: автоматичне управління пам'яттю; динамічна типізація; стрічки, списки, та хеші; регулярні вирази; самоаналіз; та функція eval().
Ларі Уол має лінгвістичну освіту, і зпроектував Perl з використанням багатьох принципів лінгвістики. Наприклад, використовуючи кодування Хофмана (основні конструкції повинні бути короткими), хороше закінчення зважування (основна інформація повинна бути першою), і велику колекцію мовних примітивів. Perl підтримує мовнs конструкції, які є короткими і природніми для людей при їхньому читанні і написанні, навіть якщо це ускладнює реалізацію інтерпретатора Perl.
[ред.] Синтаксис
Синтаксис Perl має багато спільного з синтаксисом мов Сі, Awk, Sed і Shell. Перший рядок початкового коду може починатися з "#!/Шлях/до/Perl [-ключі]" - що указує системі шлях до інтерпретатора Perl для виконання програми в *NIX системах і виконання їх на Веб-сервері.
[ред.] Приклад програми
Перл часто використовується для перетворення форматів файлів. Наведена нижче програма перетворює «Infobox Town AT» (збережений в файлі city.txt) англійської вікіпедії в Картку:Місто української, створюючи майже готову сторінку.
# /usr/bin/perl $country = 'Австрія'; $region = 'Каринтія'; $town = '{{subst:PAGENAME}}'; open (MTC,"city.txt"); while ($line = <MTC>) { if ($line =~ m/^[\{\}]/) { } else { ($name1, $name2, $res) = split(/=/, $line,3); $name1 =~ s/\s//; $name2 =~ s/\n//; $name2 =~ s/\|//; $name2 =~ s/\s+$//; if ($name1 eq 'name') {$town_local = $name2;} if ($name1 eq 'image_coa') {$coat = $name2;} if ($name1 eq 'postal_code') {$postal_code = $name2;} if ($name1 eq 'population') {$population = $name2;} if ($name1 eq 'pop_dens') {$population_density = $name2; $population_density =~ s/\./\,/;} if ($name1 eq 'area') { $area = $name2; $area =~ s/\./\,/; } if ($name1 eq 'lat_deg') {$lat_deg = $name2;} if ($name1 eq 'lat_min') {$lat_min = $name2;} if ($name1 eq 'lon_deg') {$lon_deg = $name2;} if ($name1 eq 'lon_min') {$lon_min = $name2;} if ($name1 eq 'area_code') {$city_code = $name2;} if ($name1 eq 'mayor') {$mayor = $name2;} if ($name1 eq 'website') {$web = $name2;} } } print<<EndCard \{\{Картка:Місто | назва = $town | місцева_назва = $town_local | зображення = $image | зображення_розмір = $image_size | зображення_підпис = $caption | прапор = $flag | прапор_підпис = $flag_caption | герб = $coat | герб_підпис = $coat_caption | країна = $country | регіон = $region | розташування = $location | розташування_розмір = $location_size | засноване = $foundation | статус = $status | магдебурзьке право = $magdeburg | населення = $population | густота = $population_density | агломерація = $aglomeration | площа = $area | поштові індекси = $postal_code | код країни = $country_code | код міста = $city_code | координати = \{\{Coor dms |$lat_deg\|$lat_min\|$lat_sec\|N\|$lon_deg\|$lon_min\|$lon_sec\|E\|/scale:30000\}\} | поділ міста = $structure | міста-побратими = $twins | день міста = $day | адреса = $address | веб-сторінка = $web | мер = $mayor }} '''\{\{\subst:PAGENAME}\}''' (\{\{lang-de\|$town_local\}\}) - місто в федеральній землі [[Каринтія]], [[Австрія]]. \{\{geo-stub\}\} \[\[Категорія:Міста Австрії\]\] \[\[de:$town_local\]\] EndCard ;
[ред.] Джерела інформації
- ↑ What is Perl?
- ↑ perl.com: Beginner's Introduction to Perl
- ↑ Ashton, Elaine (1999). The Timeline of Perl and its Culture (v3.0_0505).
- ↑ Wall, Larry, Tom Christiansen and Jon Orwant. Programming Perl, Third Edition (2000), O'Reilly.
- ↑ Sheppard, Doug (2000-10-16). Beginner's Introduction to Perl. O'Reilly Media. Процитовано 2008-07-27.
- ↑ а б Larry Wall. Процитовано 2006-08-20.
- ↑ Perl, a "replacement" for awk and sed. Процитовано 2007-12-18.
- ↑ `perl5-porters' Mailing List Archive
- ↑ perldelta—what is new for perl 5.10.0
- ↑ а б perlfaq1: What's the difference between "perl" and "Perl"?.
- ↑ Schwartz, Randal. PERL as shibboleth and the Perl community. Процитовано 2007-06-01.
- ↑ Wall, Larry. Larry Wall. Процитовано 2008-10-02.
- ↑ Wall, Larry. BUGS. perl(1) man page. Процитовано 2006-10-13.
- ↑ Wall, Larry. Re^7: PERL as shibboleth and the Perl community. Процитовано 2007-01-03.
- ↑ O'Reilly—The Perl Camel Usage and Trademark Information
- ↑ Perl Trademark, User Logos, Perl Marks and more
- ↑ perlintro(1) man (Unix)
- ↑ With Larry Wall, Creator Of Perl
- ↑ Usenet post, May 10th 1997, with ID 199705101952.MAA00756@wall.org.
[ред.] Ресурси Інтернет
- Perl.org — офіційний майданчик тенет
- Документації по Perl
- The Perl Foundation
- Офіційна Wiki мови Perl 5
- Perl, каталог посилань Open Directory Project
