Загальний огляд та порівняльний аналіз мов ОПП. Мова програмування Perl

Автор работы: Пользователь скрыл имя, 06 Июня 2014 в 17:40, контрольная работа

Краткое описание

Perl-високорівнева, динамічна мова програмування загального призначення. Perl було розроблено у 1987 році Ларі Уоллом, лінгвістом і програмістом за освітою, який у той час працював системним адміністратором у NASA.
Ларрі Волл розпочав роботу над Perl у 1987 році, коли працював програмістом у компанії Unisys, 18 грудня того ж року, у списку поштової розсилки comp.sources.misc від повідомив про вихід версії 1.0. Наступні два роки мова дуже стрімко розвивалась, і вже наступного року було випущено версію 2.0, основним нововведенням якої була покращена робота з регулярними виразами. Perl 3 вийшла у 1989 році, у ній було додано підтримку двійкових потоків даних.

Прикрепленные файлы: 1 файл

ЗМІСТ.docx

— 48.07 Кб (Скачать документ)

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

 

 

 

 

 

 

 

 

 

СЕМІНАР

На тему:Загальний огляд та порівняльний аналіз мов ОПП. Мова програмування  Perl.

 

 

 

 

 

 

 

 

 

 

 

 

:

 

 

 

 

 

 

 

 

2014

ЗМІСТ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.Історія розвитку  Perl 

 

Perl-високорівнева, динамічна мова програмування загального призначення. Perl було розроблено у 1987 році Ларі Уоллом, лінгвістом і програмістом за освітою, який у той час працював системним адміністратором у NASA.

Ларрі Волл розпочав роботу над Perl у 1987 році, коли працював програмістом у компанії Unisys, 18 грудня того ж року, у списку поштової розсилки comp.sources.misc від повідомив про вихід версії 1.0. Наступні два роки мова дуже стрімко розвивалась, і вже наступного року було випущено версію 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.

Perl 5 було випущено 17 жовтня 1994 року. У цій версії було повністю переписано інтерпретатор, а до самої мови було додано багато нових можливостей, включно з об'єктами, лексичними (my) змінними, і підтримкою модулів. Модулі являли собою механізм розширення мови без змін інтерпретатора. Це дозволило з часом стабілізувати код інтерпретатора, а стороннім розробникам працювати над розширенням можливостей мови.

На сьогодні, Perl 5 й досі підтримується, і є основною гілкою мови. Пізніше до неї було додано багато нових можливостей, як то підтримка Unicode, потоків, покращено підтримку об'єктно-орієнтованого програмування, та багато іншого.

18 грудня 2007 року, рівно через 20 років після виходу Perl 1.0, було повідомлено про вихід Perl 5.10.0. До нього увійшло багато нових нововведень, які наблизили мову за своїми можливостями до Perl 6, серед них, перемикач станів (який іменують «given/when»), покращення підтримки регулярних виразів, оператор ~~, та чимало іншого.

Однієї із найважливіших подій в історії Perl 5 було додання підтримки модулів. 26 жовтня 1995 року, було відкрито Comprehensive Perl Archive Network (CPAN), яка стала репозиторієм модулів для Perl. На травень 2010, репозиторій містить понад 17,750 модулів понад 8,000 авторів. CPAN широко розглядається як одна з найбільших практичних переваг Perl.

Perl спершу мав назву «Pearl», на честь притчі про перли з Євангеліє від Матвія. Ларрі Волл шукав для мови коротку назву з можливими конотаціями; він стверджує, що перебрав (і відкинув) усі три- і чотирибуквенні слова англійської мови. Він також у свій час планував дати мові ім'я Gloria, на честь своєї дружини. Волл довідався, що на момент виходу першої версії мови Perl, вже існувала мова PEARL, через що йому довелося змінити написання назви, не змінивши її вимови.

Говорячи про мову, назва, як правило, капіталізуються (Perl). Коли ж мова йде про інтерпретатор мови, назва декапіталізується (perl) оскільки Unix-подібні файлові системи є залежними від регістру. До виходу першого видання книги Programming Perl, назва мови писалася, як perl; Однак, Рональд Шварц (Randal L. Schwartz) написав її назву у своїй книзі з великої літери, мотивуючи це тим, що таким чином вона виглядає більш привабливо. Пізніше такий варіант прижився, і став, де-факто, стандартним. Інколи ім'я пишуть великими літерами «PERL», такий спосіб офіційною документацією зветься невірним, через що деякі члени спільноти називають йогонаписанням аутсайдерів.

 

 Не зважаючи на те, що Perl часто вважають акронімом для Practical Extraction and Report Language (який часто з'являється у документації), це насправді бекронім; деякі інші розшифровки згодом стали канонічними, наприклад, жарт Ларрі Волла Pathologically Eclectic Rubbish Lister. Однак, пан Волл стверджує, що така назва обрана для того, щоб надихнути програмістів до вигадання інших розшифровок даного акроніму.

 

2.Основні типи даних

 

Мова Perl для вирішення своїх завдань пропонує всього три типи даних: скаляри, масиви скаляров і асоціативні масиви скаляров, або хеши. У відповідності з допустимими типами даних існує три типи змінних, в яких можна зберігати дані перерахованих типів. У цій главі визначаються всі допустимі в мові типи даних, що вводяться числові і рядкові літерали, конструктори масивів і асоціативних масивів, а також обговорюються змінні та їх використання, але почнемо ми наше вивчення з питання, без якого неможливе входження у будь-яку мову програмування - набору допустимих символів, або алфавіту мови.

Скалярні змінні використовуються для зберігання поодиноких значень. Вони можуть містити числа, рядки і посилання на інші об'єкти. Перед ім'ям скалярної змінної необхідно ставити знак долара '$'. Тип скалярної змінної не фіксований (на відміну від, наприклад, мови Сі) і визначається динамічно в залежності від контексту. Наприклад:

$x = 10; # число 
$y = $x + 1; # використовуємо $x число... 
$z = $x . 'string'; # ... а тепер - як рядок 
$ref = \$x; # $ref є покажчиком на $x 
$$ref=0; # $x містить значення 0

Масив є впорядкованим списком скаляров. Кожен елемент масиву має порядковий індекс, за допомогою якого до нього можна отримати доступ. Нумерація елементів починається з нуля, тобто перший елемент має індекс 0.

Перед ім'ям змінної-масиву необхідно ставити знак '@', а для доступу до певного елемента масиву рекомендується ставити знак '$', так як певний елемент масиву є скаляром . Багатовимірні масиви можна змоделювати, поміщаючи в список посилання на інші списки.

@array = (1,2,3,4); # записали в масив @array чотири елемента

print $array[2]; # надрукувати третій елемент

print @array[2]; # надрукувати третій елемент, але рекомендується використовувати попередню версію

Хеш-таблиця являє собою асоціативний масив, що дозволяє асоціювати рядок (звану ключ) з скаляром (значення). Рядок називається ключем, а скаляр в хеш-таблиці значенням. Перед ім'ям змінної-списку, необхідно ставити знак відсотка '%', а для доступу до певного елемента масиву рекомендується ставити знак '$'. Фізично Хеш-таблиця являє собою масив, де у непарних позиціях знаходяться ключі, а на парних - значення.

%hash = (

'cat' => 'kitten',

'dog' => 'puppy',

'cow' => 'calf'

);

print $hash{'cat'}; #Надрукує kitten

print %hash{'cat'}; #Також надрукує kitten, але рекомендується використовувати попередню версію

print join("-", keys %hash) ; # Виведення всіх ключів. Надрукує cat-dog-cow

print join("-", values %hash) ; # Виведення всіх значень. Надрукує kitten-puppy-calf

print join("-", %hash) ; #Надрукує cat kitten-cow-calf-dog puppy

Функція являє собою фрагмент коду, що виконується. Функція завжди повертає якесь значення або UNDEF. Якщо обчислене значення явно не вказано оператором return, повертається останнім обчислене значення.

sub printTwo

{print 2;

}sub three

{

3;

}

$s=\&three;

print &$s; #Надрукує 3

$s=\&printTwo;

print &$s; #Надрукує 21. `2` в коді функції, а `1` як значення, що повертається функцією printTwo

print &printTwo #Те ж саме

Константа являє собою незмінне значення. Використання:

use constant MY=>2;

print MY;

Файловий дескриптор

Являє собою вказівник на файл, пристрій або PIPE канал, відкриті для запису, читання або для запису і читання

Використання:

$s=; #Читаємо один рядок  з дескриптора STDIN (стандартний потік  вводу)

@values=; #Читаємо всі рядки з деякого відкритого і пов'язаного з дескриптором файлу FILE.

print STDOUT $s; #Друкуємо в STDOUT (стандартний потік виводу)

 

3.Оператори 

 

Оператори призначені в мові Perl, як і в інших мовах програмування, для виконання логічних операцій. Послідовність таких операцій залежить від пріоритетності операторів. Далі буде вестися опис операторів в послідовності їх пріоритетності.

Терми і оператори списку.

Такі в собі містять змінні, логічні і арифметичні вирази в дужках, лапки, функції з параметрами (укладені в круглі дужки). Останні лише иммитируют функцію тому, як будь списковый (напр. print( ) ) або унарний (напр. unpack( ) ) оператор мають дужки у яких міститься список аргументів, які мають найбільший пріоритет, що і звичайні функції. У разі відсутності дужок пріоритетність спискового оператора визначають наступним чином. Спочатку йдуть аргументи (зліва-направо), стоять відразу після спискового оператора, потім також (зліва-направо), що стоять до оператора. Приклад:

@ i = ( 'R ', 'L ', print 'P ', 'E ');

print "\n", @ i, "\n"; # виведе PE і RL

Аналогічно термів обробляються послідовності do{} eval{}.

Оператор "->" ("стрілка")

Є інфіксним оператором посилання. Якщо права частина є [...] або {...} подпрограммой, тоді ліва частина повинна бути символьним посиланням на масив або хеш. В іншому разі, якщо права частина - ім'я методу або скалярна змінна що містить ім'я методу, то ліва частина повинна бути об'єктом або ім'ям класу.

Оператори "++" і "--"

Як відомо, " ++ " - инкременнт, а "--" декремент, тобто збільшення або зменшення на одну одиницю. І оператори, як ви здогадалися, названі так не випадково і працюють вони за таким же принципом. Залежить тільки від того, де він буде розташований, відносно змінної. При написанні даного оператора до змінної буде спочатку змінено значення змінної, а потім отриманий результат буде використаний. В іншому випадку ( після ) - спочатку застосування, потім зміна значення змінної. При написанні буквених символів слід враховувати, що великі і маленькі букви у мові Perl мають різні класи.

Приклад:

print ++($i = "z9") # отримаємо результат а0

print ++($i = "Z9") # отримаємо результат А0

 

Оператор зведення в ступінь ( ** )

У мові Perl подвійна зірочка "**" є експоненціальним оператором. Наведемо приклад:

print 3**3 # 27

print -3**3 # -27

Унарні оператори:

  1. ! - логічне заперечення
  2. - унарний мінус, при числовому значенні змінної означає звичайне арифметичне вычетание. Якщо операндом є ідентифікатор, то повертається рядок, що складається із знака мінус і ідентифікатора.
  3. + - унарний плюс, при числовому значенні змінної є арифметичним плюсом і вплив на рядки не має, але може застосовуватися для відділення ім'я функції від вираження укладеного у дужки, яке інакше розглядається як список аргументів.
  4. ~ - унарная тільда, покажчик побітового заперечення
  5. \ - отримання посилання на змінну, що стоїть за ним
  6. Оператори зв'язки "=~" та "!="

Оператор "=~" пов'язує ліву частину виразу з правого, яка є певним шаблоном. У випадку не зазначення даного оператора, за нього за замовчуванням буде діяти змінна $_ . Правий аргумент це зразок пошуку підстановки або трансляції, лівий аргумент - це те, що повинно бути підставлено замість $_ . Повертається величина показує успіх операції. Оператор " ! ~ " це теж саме, що і " = ~ ", тільки повертається величина є негативною в логічному сенсі ( НЕМАЄ).

Бінарні оператори:

  1. - множення чисел
  2. / - ділення чисел
  3. % - обчислення модуля двох чисел
  4. x - оператор повторень, в скалярному контексті праворуч від оператора число повторень, а зліва - рядок для повторення. У списковом контенті - елемент для повторення є список.

Наведемо приклади відповідно їх розгляду:print 'a' x '6'; # отримаємо 'aaaaaa'

print (0,9) x 5; # отримаємо 0909090909

  1. >> - виконує двійковий зрушення лівих аргументів вправо на кількість розрядів, зазначене в правих аргументах. Аргументи повинні бути цілочисельними.
  2. << - виконує двійковий зрушення лівих аргументів вліво на кількість розрядів, зазначене в правих аргументах. Аргументи повинні бути цілочисельними.

Оператори порівняння:

  1. < - повертає TRUE ( істина) якщо ліве значення чисельно менша, ніж праве
  2. lt - повертає TRUE якщо ліве значення (рядкове) менше, ніж праве
  3. - повертає TRUE якщо ліве значення чисельно більше, ніж праве
  4. gt - повертає TRUE якщо ліве значення (рядкове) більше , ніж праве
  5. <= - повертає TRUE якщо ліве значення чисельно менше або дорівнює, ніж праве
  6. le - повертає TRUE якщо ліве значення (рядкове) менше або дорівнює , ніж праве
  7. >= - повертає TRUE якщо ліве значення чисельно більше або дорівнює , ніж праве
  8. ge - повертає TRUE якщо ліве значення (рядкове) більше або дорівнює , ніж праве

Оператори рівності:

  1. == - повертає TRUE( істина) якщо ліве значення чисельно дорівнює правому
  2. eg - повертає TRUE якщо ліве значення (рядкове) одно правому
  3. != - повертає TRUE якщо ліве значення чисельно дорівнює правому
  4. ne - повертає TRUE якщо ліве значення (рядкове) не дорівнює правому
  5. <=> повертає -1, якщо < ; 0, якщо = 1, якщо > , застосуємо до чисел
  6. cmr - повертає -1 , якщо < ; 0 , якщо = 1 , якщо > , застосуємо до рядків

Информация о работе Загальний огляд та порівняльний аналіз мов ОПП. Мова програмування Perl