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

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

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

Сейчас такие языки как 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

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

Читать »

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

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

Читать »
Фото Как настроить отправку почты из Django

Как настроить отправку почты из Django

Письма об ошибках, отчёты на почту, восстановление паролей - всё это полезно при работе с сайтом. Django предоставляет удобный способ это сделать с минимумом настроек!

Фото Добавляем поддержку медиа-файлов в Django проект

Добавляем поддержку медиа-файлов в Django проект

Современные сайты редко ограничиваются только текстом и вёрсткой. Часто в заметках красуются фотографии, а рядом с описанием товаров - их изображения.

Фото Настройка журналирования (логирования) в Python с примерами

Настройка журналирования (логирования) в Python с примерами

Во время работы программы часто нужно сохранять некоторые важные записи о процессе выполнения команды. В Python есть довольно мощный модуль для работы с логами - давайте разберёмся с тем, как его использовать.

Фото Что есть мотивация? Зачем мотивация тебе?

Что есть мотивация? Зачем мотивация тебе?

Говоря о руководстве командой разработчиков, сложно не впасть в эту старую как мир западню - мотивацию. Давайте сегодня постараемся понять: что есть реальная мотивация и как она помогает?

Фото Нет слов, одни... однострочники

Нет слов, одни... однострочники

На днях вышел пост со списком полезных однострочников для JavaScript программистов. Памятуя Perl-овую молодость, заглянул туда.

Фото Microsoft открывает исходники, а её IDE супер-популярна

Microsoft открывает исходники, а её IDE супер-популярна

Решил сложить пару фактов и немного над этим поразмыслить. Реально ли Microsoft "переобулись"?

Фото Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

Добавляем переменные в контекст Django шаблонов (свой контекст-процессор)

В Django вы можете передавать данные в шаблоны посредством контекстов. Контекст передаётся из контроллера (view в терминах Django), однако, если одни и те же данные нужны в разных местах, лучше сделать свой контекст-процессор.

Фото Пример своей консольной команды в Django проекте

Пример своей консольной команды в Django проекте

Если вы работали с Django проектом, то, скорее всего, запускали команды из консоли (manage.py). В Django есть простой способ писать свои команды для управления проектом.