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

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

АналитикаPythonLinuxAgileУправлениеOpenSource

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

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

Далёкий 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, да всякие сторонние анализаторы проверят. И они проверяют. Плохо, но проверяют уже сейчас.

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

Фото Решаем проблему ERROR 1348 column password is not updatable при обновлении пароля root в MySQL / MariaDB
Решаем проблему ERROR 1348 column password is not updatable при обновлении пароля root в MySQL / MariaDB

В MySQL есть временами непонятные ограничения, которые не позволяют привычным нам образом его использовать. Однако, если разобраться, то всё начинает иметь смысл.

Фото Столлман мне друг, но этикет дороже
Столлман мне друг, но этикет дороже

Столлман – активист и лидер GNU, бывший директор Фонда Свободного Программного обеспечения. Кому и почему он неудобен?