Довольно активно обсуждается призыв чаще, пользуясь аналогиями автора, провоцировать мутации в языках программирования для их же блага: http://olabini.com/blog/2009/04/languages-should-die/
Одним из недостатков аналогии как приёма является соблазн использования её “в обратную сторону”, то есть использования не для демонстрации своего предположения, а для его доказательства.
Сначала всё идёт как следует - выделяются наиболее характерные черты обсуждаемых сущностей, после чего выбираются их аналоги из другой области, обладающих этими чертами в более выраженной и доступной для понимания форме. Однако некоторые на этом не останавливаются, а идут дальше – выделяют “удобные” посторонние черты в подобранных аналогах и переносят их на изначально обсуждаемые понятия.
“Нужно доказать, что жираф – птица. Проведём аналогию: жираф длинношеий, как цапля, а цапля птица – значит, жираф умеет летать”.
Возвращаясь к предмету обсуждения, развитие языков программирования не может быть корректно описано в стохастически-эволюционных терминах, поскольку они являют собой яркий пример intellegent design. Более того, язык является не самоцелью, а лишь инструментом решения задачи, и в большинстве случаев задача может быть решена практически на любом языке – с разницей лишь в требуемых трудозатратах и избыточности решения.
Таким образом, вероятность того, что новый язык совершит некий качественный прорыв, достаточно мала, поскольку возможность прорыва в решении не решённых на данный момент задач ограничена далеко не только тем, что существующие языки неудобны для их решения. Опять же, если эти “внеязыковые” проблемы будут решены, сложность создания специального языка (или его подмножества, библиотеки и пр.) под класс задач, пусть даже и с нуля, не станет принципиально сдерживающей в сравнении с уже потраченными усилиями.
Если идти дальше, то строго говоря, языки должны не умирать, а умереть – т.е. потерять то критическое значение, которое они имеют до сих пор. Вопрос о том, на каком языке следует реализовать решение задачи, в идеальном мире должен вставать в самую последнюю очередь не иметь принципиального значения.
Да, существующее сейчас положение, когда на выбор языка влияет множество “внезадачных” факторов (например, окружающая инфраструктура, в которой будет функционировать ПО, необходимость развития и поддержки, доступность на рынке специалистов в этом конкретном языке и т.д.), просуществует ещё очень долго. И все эти факторы для подавляющего большинства программых продуктов очень важны. Но если брать во внимание подобные практические бизнес-вопросы, то описанный подход “fork your language” совершенно некорректен по очевидным причинам (не хвататало только своего языка у каждой команды).
Этот подход может быть корректен, если задаваться глобальными целями и смотреть на индустрию с научной (а не бизнес- или даже инженерной) точки зрения. Однако в этом случае такое внимание языку тоже не слишком понятно, т.к. лишённая своей привязки к реалиям и рынку, “проблема языка” теряет прежнее значение.

0 comments:
Post a Comment