Чтение онлайн

на главную - закладки

Жанры

Язык программирования Perl

Шохирев Михаил Васильевич

Шрифт:

Ларри не раз повторял, что Perl задумывался как язык, предполагающий постоянное развитие. Поэтому в процессе его совершенствования, как и при развитии "человеческих" языков, из других языков программирования было позаимствовано все лучшее, практичное и удобное для разработчика. На становление Perl повлияли языки Ada, Basic, Fortran, Lisp, Pascal и, конечно, язык C. Perl впитал в себя разные течения компьютерной науки: процедурное, модульное, функциональное и объектно-ориентированное программирование, макрообработку текста, а кроме этого - культуру ОС Unix, с ее богатым набором команд и утилит, стройной продуманной архитектурой и унифицированным подходом к представлению

данных.

Решающее влияние на развитие языка Perl оказала среда Unix, в которой он разрабатывался. С самого начала эта операционная система создавалась небольшой группой программистов для самих себя. Поэтому принципы, заложенные в ней, ориентированы на удобство повседневного применения человеком: все делалось максимально функционально, кратко, единообразно. Например, большинство системных настроек хранится в обычном текстовом виде, так что их может читать и исправлять человек, вооруженный простым текстовым редактором. (Подумать только, что это было сделано во времена, когда памяти было так мало, что старались экономить даже биты данных!)

Для тех, кто знаком с операционной системой Unix, этот материал не будет новым. Но многим программистам, работающим с MS-DOS и Windows, важно познакомиться с принципами программирования, основанного на инструментальных средствах (software tools), которое зародилось и развивалось вместе с ОС Unix. О них написали замечательную книгу известные программисты Брайан Керниган (Brian W. Kernighan) и Филип Плоджер (Philip Plauger). Вот основные положения этого подхода.

1 Для решения некоторой задачи разрабатываются программы небольшого размера, каждая из которых выполняет одну функцию решаемой задачи.

2 Поставленная задача решается путем взаимодействия небольших программ за счет последовательной обработки данных каждой из них.

3 При разработке этих небольших программ следует ориентироваться на их максимально независимое использование, чтобы их можно было применять для решения других задач. Таким образом, постепенно создаются инструментальные средства (ИС) для дальнейшего универсального применения.

4 Большинство инструментальных средств разрабатываются в виде программ, представляющих из себя фильтры, которые читают поток данных из стандартного ввода и записывают обработанные данные в стандартный вывод.

5 Объединение инструментальных средств в приложения производится средствами командного языка ОС: перенаправление ввода-вывода, создание программных конвейеров (направление выходного потока одной программы на вход другой).

6 Основным форматом хранимых данных для инструментальных средств выступают текстовые файлы, одинаково хорошо подходящие для программной обработки и чтения их человеком.

7 Для эффективной обработки слабо структурированной текстовой информации применяются регулярные выражения (средства поиска по шаблонам, о которых речь пойдет в лекции 8).

Эти несложные правила определяют особенную технологию разработки программ, при которой создаются и накапливаются гибкие инструментальные средства, легко настраиваемые и удобно комбинируемые, с помощью которых можно решать широкий круг задач. При этом отдельные инструментальные средства часто объединяются в неожиданные комбинации, изначально не предусмотренные авторами при их разработке. Это действительно очень продуктивный подход, давно и широко применяемый среди программирующих в среде ОС Unix. Вместо продолжительной разработки и отладки

одной сложной многофункциональной программы, максимально используются готовые проверенные и надежные компоненты - инструментальные средства. При необходимости сравнительно быстро создаются несколько недостающих инструментальных средств (нестандартный диалоговый ввод, необычно форматированный отчет), также зачастую пригодных для дальнейшего применения. Perl развил идею инструментальных средств, функциональность многих Unix-утилит была реализована в конструкциях языка, а сам Perl стал идеальным средством для "склеивания" нескольких приложений в большие системы. Воспитанный на идеях Unix, Ларри Уолл сказал про свое детище: "Perl - это переносимая концентрация культуры Unix, оазис среди пустыни..."

В языке Perl к идеям Unix добавились достижения других языков программирования, и все это было переработано в соответствии с лингвистическими принципами и требованиями практического применения языка. Положения философии языка Perl были изложены Ларри Уоллом в его знаменитой книге "Программирование на Perl" и во множестве статей и интервью. Они часто заключены в форму изящных и остроумных афоризмов. Один из них гласит: "Perl разработан так, чтобы легко решать простые задачи, а трудные делать возможными". А эмблемой Perl стал верблюд - домашнее животное, не блистающее красотой и изяществом, но обладающее уникальными способностями для выполнения трудной, кажущейся невозможной, работы в экстремальных условиях.

Perl создавался как практичный язык, а какая же практичность без быстроты? Программы на Perl традиционно отличаются высокой скоростью выполнения и по быстродействию сравнимы с откомпилированными Unix-утилитами. Быстрота работы достигается за счет того, что исполняющая система Perl читает исходный текст Perl-программы и компилирует его "на лету", затем сразу интерпретирует откомпилированную программу. Говоря об этой уникальной исполняющей системе, сочетающей в себе компилятор и интерпретатор, принято называть ее perl (строчными буквами, в отличие от языка программирования Perl).

Ларри Уолл в шутку (в которой, как водится, есть немалая доля истины) провозгласил три главных добродетели программиста: лень, нетерпение, самомнение (laziness, impatience, hubris). И Perl спроектирован так, чтобы соответствовать этим качествам разработчика. "Ленивый" программист, часто ограниченный во времени, может написать программу максимально компактно и быстро, поскольку в Perl есть множество способов кратко и просто записать довольно сложные алгоритмы. К тому же любые символы не являются обязательными, если их отсутствие не меняет смысла программы. Например, обычную условную конструкцию

if ($x > 0) {

print($y / $x);

}

можно написать и по-другому - без пробелов и скобок, переместив условие в конец оператора:

print$y/$x if$x>0;

Часто внешние обстоятельства побуждают нас к быстрейшему достижению цели. Но при программировании на Perl терпение программиста подвергается минимальному испытанию, поскольку Perl-программа запускается без предварительной компиляции и выполняется очень быстро. И наконец, система программирования Perl предлагает необычайно широкий набор средств, чтобы реализовать самые амбициозные проекты любого программиста, даже с гипертрофированным самомнением.

Поделиться:
Популярные книги

Гром Раскатного. Том 2

Володин Григорий Григорьевич
2. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гром Раскатного. Том 2

Древесный маг Орловского княжества 5

Павлов Игорь Васильевич
5. Орловское княжество
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Древесный маг Орловского княжества 5

Император Пограничья 8

Астахов Евгений Евгеньевич
8. Император Пограничья
Фантастика:
городское фэнтези
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Император Пограничья 8

Законы Рода. Том 8

Мельник Андрей
8. Граф Берестьев
Фантастика:
юмористическое фэнтези
аниме
фэнтези
5.00
рейтинг книги
Законы Рода. Том 8

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Портрет дьявола: Собрание мистических рассказов

Скотт Вальтер
Проза:
классическая проза
8.09
рейтинг книги
Портрет дьявола: Собрание мистических рассказов

Я - истребитель

Поселягин Владимир Геннадьевич
1. Я - истребитель
Фантастика:
альтернативная история
8.19
рейтинг книги
Я - истребитель

Черный Маг Императора 17

Герда Александр
17. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Черный Маг Императора 17

Последний Паладин. Том 11

Саваровский Роман
11. Путь Паладина
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Последний Паладин. Том 11

Тринадцатый VI

NikL
6. Видящий смерть
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Тринадцатый VI

Запечатанный во тьме. Том 3

NikL
3. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 3

Неверный

Тоцка Тала
Любовные романы:
современные любовные романы
5.50
рейтинг книги
Неверный

Двойник короля 14

Скабер Артемий
14. Двойник Короля
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Двойник короля 14

Дворянин

Злотников Роман Валерьевич
2. Император и трубочист
Фантастика:
боевая фантастика
альтернативная история
5.00
рейтинг книги
Дворянин