воскресенье, 5 марта 2017 г.

[prog.flame] Вся сущность Хабра в одной ссылке

Интересная площадка, этот самый Хабр. Со временем лучше становится понятно, почему бывалые RSDN-еры и LOR-овцы отзываются о Хабре негативно. Квинтэссенцией на данный момент для меня стала вот эта статья на Хабре и ее обсуждение: "О чём молчат авторы «Hello, World!»-ов".

Сперва автор исходя из лучших побуждений, полагаю, написал откровенно слабую статью, без нормального введения, развития, кульминации и отчетливого вывода. Потом в комментариях начался треш и угар от публики, которая, очевидно, ни сном, ни духом о том, в каких условиях и как создавался язык Ada, и какую роль он играл в свое время в американском ВПК, да не только там, но и в разработке ПО для авионики во всем мире (может быть за исключением СССР и СНГ). Не удивлюсь, что все отметившиеся там комментарии (включая меня самого) и в кошмарном сне не смогут представить себе, что значит разработка ПО для проекта стоимостью в полмиллиадра долларов (вроде бы столько стоил взорвавшийся на старте Ариан 5, ПО для которого было написано как раз на Ada). Посему и вопросы в камментах из категории: а есть ли в Ada map/filter на лямбдах?

Тем, кто хоть чуть-чуть интересуется историей развития языков программирования очень рекомендую почитать про историю Ada. Ведь язык появился в результате попытки министерства обороны США упорядочить ситуацию с разработкой ПО для нужд армии. До появления Ada там царил хаос и анархия: каждый подрядчик использовал свои языки и технологии, никого не волновало, как именно будут сопрягаться разрозненные части одной и той же системы, созданные разными исполнителями в разных концах США. Создание Ada и ее насаждение в проектах для армии США, как по мне, сродни введению системы калибров и унификации артиллерийских систем в армиях самых продвинутых европейских стран в XVII-XVIII веков.

Язык Ada, действительно, является продуктом "разработки коммитетом", поэтому он выглядит достаточно страшно. Многословен, непрост в изучении, требует внимания при разработке. У современных хипстеров, эстетическое восприятие которых воспитано девайсами от Apple, может вызвать неудержимый рвотный рефлекс.

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

Вот говоря про то, какие разные программисты должны были начать использовать Ada, вспоминается язык Java, который оказался одним из немногих языков в истории ИТ, который успешно справился с такой же задачей: на Java могут писать все -- начиная от победителей мировых олимпиад по программированию, до Кумаров Гашишовичей и переучившихся в программисты психологов и филологов. Только какой ценой Java этого достигает? Ценой полного наплевательства на эффективность и ресурсопотребление.

Ну, некоторые умельцы умудряются и на Java делать системы реального времени. Правда, превращая Java в какое-то убогое подобие недосишки/недоплюсов, выбрасывая GC и вручную колупаясь с байтами, не имея при этом нормальных средств для того же обобщенного программирования. Причем началось все это где-то лет через 20 после того, как Ada появился и начал успешно использоваться. Подозреваю, что на технике из середины 80-х годов, Java оказалась бы неприспособленной к массовому использованию чуть меньше, чем полностью.

А вот Ada, не смотря на "разработку коммитетом", оказался вполне себе успешным экспериментом по созданию языка для массовой промышленной разработке софта для систем с высокими требованиями к качеству, надежности и ресурсоемкости. Нужен ли этот язык сейчас? И если нужен где-то, то многими ли он будет востребован? Это уже совсем другие вопросы. Но подходить к оценке Ada с точки зрения наличия в нем лямбда-функций и алгоритмов map/filter... Ну это как рассматривать возможность использования карьерных самосвалов в гонках Formula-1. И это если оставаться в рамках цензурной лексики ;)

Отправить комментарий