Аналитика
Лучше плохо, но сейчас. Взгляд на пути развития ПО

Лучше плохо, но сейчас. Взгляд на пути развития ПО

Сейчас такие языки как Perl и Ruby чувствуют себя не лучшим образом. Но ещё 10 – 15 лет назад они были на "гребне волны".

Сейчас такие языки как Perl и Ruby чувствуют себя не лучшим образом. Но ещё 10 – 15 лет назад они были на "гребне волны". Большие активные сообщества, тонны готовых модулей под самые разные задачи. И если история Ruby для меня не близка, то про Perl я могу что-то рассказать. А заодно – сравнить с судьбой их соперников.

Изображение Шпаргалка по командам Linux, FreeBSD и MacOS

Немного истории ПО

Далёкий 1990-ый год. Проект GNU и Фонд Свободного Программного Обеспечения во главе со всемирно известным активистом СПО Ричардом Столлманом запускают проект по разработке ядра операционной системы – GNU Hurd.

Hurd проектируется согласно прогрессивным представлениям об архитектуре ядер – микроядром. Сообщество приветствует эту инициативу и поддерживает – наконец-то у GNU появится ядро, а значит – целая свободная операционная система. Умные бородатые дядьки принимаются за работу.

Сентябрь 1991-го года. Финский студент решил написать свою Unix-подобную операционную систему. Видимо, из-за отсутствия глубокого понимания ущербности монолитного ядра, он пишет примитивную 1-ую версию тогда то ли Freex-а, то ли Linux-а (на тот момент ещё даже не определились с названием). Умеет она немного, но вскоре подключаются активисты GNU и СПО – ядро выходит под лицензией GNU.

1995 – 2000 года. "Бум доткомов", взрывной рост веб-сайтов – набрана критическая масса технологий, компании ринулись в интернет-коммерцию. Интернет захватил мир. Один из основных web-серверов – Apache (также СПО), который работает на базе ОС GNU/Linux... Второй по популярности держится IIS от Microsoft.

2002-ой год – Ричард Столлман заявляет о скором выходе стабильной версии GNU/Hurd. Однако, даже в 2005-ом он не состоялся (см. дистрибутив Bee GNU/Hurd).

На данный момент имеется два живых известных дистрибутива с Hurd: Debian GNU/Hurd и Arch Hurd – оба являются ответвлениями более известных дистрибутивов на Linux.

GNU/Hurd начали раньше, имели более правильные идеи в плане архитектуры, уже существующие сообщество, некоммерческий Фонд СПО... Однако, именно GNU/Linux стал общеиспользуемым (сервера, мобильные телефоны), а не GNU/Hurd. Несмотря на незрелость лидера, "кривую" архитектуру, нулевую информационную и финансовую поддержку (на старте).

Немного про Perl / PHP / Python

Perl, равно как и GNU/Hurd, начал раньше своих "соперников" – в 1987-ом. Также имел большое сообщество, огромную базу пакетов на CPAN (хостинг пакетов/модулей для Perl). Своей популярности он также обязан "буму доткомов" – многие сайты в то время писались именно на Perl под CGI-модуль веб-серверов.

И даже его иной раз странность и сложность сообщество воспринимало как плюс – проходили конкурсы на самый короткий код, самый запутанный. Чего только стоят вполне себе официальные (описанные в официальной документации) команды "Венера" (0+ – для приведения к числовому типу) или "Goatse" (=( )= – для приведения в нужный контекст)...

А как вам выделение программистов, которые способны объяснять поведение Perl и вообще "шарят", в отдельную "касту" – монахи Perl?

И всё было здорово, да радужно. Но Ларри Уолл (создатель языка) и приближённые монахи осознавали, что язык нужно развивать, при чём капитально...

И вот в 2000-ом году опять умные бородатые дядьки сели за работу. Спешить не нужно, надо грамотно всё продумать, написать тонну документации, кучу тестов на свои крутые и довольно изощрённые придумки.

Первый ± рабочий прототип Perl6 появился в 2005-ом году. В 2006-ом он даже прошёл все тесты... Однако, сам язык был другим, непривычным. Да и не было той тонны написанных модулей как под Perl 5.

Но хуже всего – 6 лет ожидания и полная неясность будущего. Неопределённость и замедление выхода новых модулей, версий – всё же много сил сообщества были оттянуты на Perl6.

На фоне этого выходили PHP 5 c Java-подобной объектной системой и кучей фреймворков, Python 2 с простым ООП и отличной стандартной библиотекой. И первый и второй обходились без толкователей типа Perl-монахов, зато имели хорошую и серьёзную документацию по стандартной библиотеке и языку.

Плюс Ruby, который "как Perl, только с объектами и лучше"...

Мир не стоит на месте – постоянно выходят новые протоколы, новые приложения – нужны новые модули. Помимо технологического развития есть ещё и мода. Как стало популярно ООП, или та же статическая типизация. А такое на запланируешь на пять лет вперёд, да и не сделаешь идеально. А людям это просто надо. Сейчас, не через 5 лет.

В этом плане мне симпатизирует подход PHP и Python – мы пока не готовы сделать проверку и вывод типов по-взрослому. Поэтому – вот вам возможность указывать типы – может IDE, да всякие сторонние анализаторы проверят. И они проверяют. Плохо, но проверяют уже сейчас.

Я не утверждаю, что нужно делать плохо. Но делать медленно из-за попыток достичь идеала – явный путь к вечному отставанию и проваленным проектам.