Perl: ЗА (и ПРОТИВ?)

Get Started. It's Free
or sign up with your email address
Rocket clouds
Perl: ЗА (и ПРОТИВ?) by Mind Map: Perl: ЗА (и ПРОТИВ?)

1. Любой размер программы

1.1. Иделен для Oneliners

1.1.1. Среди соперников только Bash+станд.утилиты в случае стандартных задач

1.2. Подходит для больших проектов

1.2.1. ~ 250 тыс. строк кода в reg.ru

2. Любая форма применения

2.1. Web-приложения

2.1.1. Catalysy

2.1.2. Mojo

2.1.3. Maypole

2.2. CRON-скрипты

2.3. Сетевые демоны

2.3.1. Daemon::Generic

2.4. Интерактивные приложения

2.4.1. Консольные

2.4.1.1. Term::Slang

2.4.1.2. Curses

2.4.2. GUI

2.4.2.1. PerlGTK

2.4.2.2. PerlQT

2.4.2.3. PerlTK

2.4.2.4. wxPerl

2.4.2.5. FLTK-perl

3. Любая сфера применения

3.1. Web

3.2. Системное администрирование

3.3. Обработка данных

3.3.1. В особенности текст

3.3.2. Меньше подходит для расчётных задач

3.4. Glue-language

4. Быстрая разработка

4.1. CPAN

4.1.1. 80000 модулей

4.1.2. 20000 дистрибутивов

4.1.3. 20 MLOC

4.1.4. Охвачены все сферы применения

4.1.5. CPANTS

4.2. Высокоуровневые возможности

4.2.1. Цепочные конструкции

4.2.2. Операции над списками

4.2.3. Regexps

4.2.4. Встроенные в язык структуры данных

4.2.4.1. Очень просто обращаться

4.2.4.2. Не нужны доп. библиотеки

4.3. Динамическая типизация

4.3.1. Тестирование против статической типизации

4.3.1.1. 5000 модулей, в назв. которых присутствует "Test"

4.4. Simple things simple, complex things possible

5. More Fun

5.1. Адекватное сообщество

5.1.1. Perl Mongers

5.1.2. Много Конференций

5.1.2.1. Неформальная обстановка

5.1.3. Perl Hackers

5.2. TIMTOWTDI

5.2.1. "Mechanism not policy"

5.3. DWIM

5.4. Perl Golf / Obfuscations

5.5. "Насыщенный" код

5.5.1. Много "интеллекта" в маленьком пространстве

6. Вездесущий / Универсальный

6.1. Кросс-платформенность

6.1.1. 98 платформ

6.2. Мультипарадигменность

6.2.1. ФП

6.2.1.1. "Higher Order Perl"

6.2.2. ООП

6.2.2.1. ООП можно делать "под себя"

6.2.3. Процедурное

6.2.4. "Бесструктурное"

6.3. Производительность

6.3.1. Достаточная

6.3.1.1. Для web, бизнес-логики, администрирования -- более чем

6.3.2. Критичные участки можно писать на C/C++ (XS)

6.3.2.1. XS сложен

6.3.2.1.1. Зато Inline прост

7. Динамические возможности

7.1. Выход в "4-е измерение"

7.2. Например

7.2.1. Замыкания

7.2.2. "Компиляция на лету"

7.2.3. Создание / удаление / модификация

7.2.3.1. Процедур / методов

7.2.3.2. Переменных

7.2.3.3. Классов / модулей

7.3. Примеры использования

7.3.1. Продвинутый шаблонизатор (TT)

8. Недостатки

8.1. Кривая обучения

8.2. Недостаточно популярен

8.2.1. Тяжело найти программистов

8.2.2. Плохо пиариться

8.2.2.1. Большое количество информации о морально устаревших подходах

8.2.2.2. Мало пиарится новых Perl-технологий

8.2.3. Распространённое мнение, что язык слишком сложен и слишком old-school

8.3. Много мусора на CPAN

8.4. Много исторического мусора в языке

8.4.1. Formats

8.4.2. Punctuation variables

8.5. Не очень удачная мультитредовость

8.5.1. Зато прекрасная работа с асинхронным IO

8.5.1.1. AnyEvent

8.5.1.2. POE

8.5.1.3. IO::Lambda

8.5.1.4. Coro

8.5.1.5. IO::AIO

8.6. Не так удобно выкладывать на хостинг, как PHP

8.6.1. Дополнительно повышает "планку входа"

8.6.2. Не популярен для "коробочных" решений

8.6.2.1. В основном разработка "для себя"

8.7. Любую фичу можно рассматривать как недостаток ;)