Почему функциональное программирование не приобрело популярности?
Важная ремарка: я задаю этот вопрос, т.к. другие вопросы на stackoverflow не смогли ответить конкретно на ту часть, которая описывается мной ниже.
Я категорически не согласен с тем, что было в других вопросах, и как объясняют отсутствие функциональных языков при разработке ПО:
исторические причины (прошло уже очень много времени и функциональные языки существуют в различных вариациях и под различные цели и задачи; теперь это не такая диковинка, как в 90-х или 80-х),
плохая производительность (мы сейчас имеем языки (вроде Java), которые конвертируются в байт-код и запускаются виртуальной машиной. Разве при таких раскладах использование функциональных языков является слишком ресурсозатратным?),
отсутствие разработок в этой сфере (опять же бредятина, которую видел во многих вопросах. А как же Haskell и куча различных диалектов языков, которые проделывают тонну работ на ошибками?).
Единственное, что могу выделить, то это отсутствие специалистов. С этим аргументом претензий нету. Действительно, для бизнеса это огромный, жирный минус.
Ответы (1 шт):
Yulia, вы не зрите в корень.. Очень трудно найти черную кошку в темной комнате. Особенно, если ее там нет.
Всегда все решают время и деньги (коммунизм больше не кто не строит). Fortran используется с 50х годов. И менять его никто не собирается.
Причина — Это просто очень дорого.
Приведенный вам Haskell вполне себе жив и любим энтузиастами.
Так может проблемы не в исторических причинах, плохой производительности и отсутствии специалистов? :)
А в очень банальных и приземленных вещах:
- Скорость и соответственно цена разработки.
- Порог вхождения, а значит и кол-во специалистов (чем их меньше, тем выше ЗП).
Собственно все, это все причины.
Из-за специфической профессии, я так сказать "щупаю" довольно специфический софт. :)
Домофния bpt (ныне Came:bpt), ПО для консьержа/охраны Porter. Язык Java. Очень тормозной, кривой, и с первого взгляда выглядящий как первая софтина написанная при обучении. Сейчас заменен на Intercom view, dotNet.
Почему Java? По тому, что на момент написания, это были самые дешевые программисты.
А почему теперь dotNet? Есть ряд ограничений, которые не позволяют использовать Node.js
Снова решающий фактор - Деньги.
uProg, pProg, FireSec, Orion, Sigur,.. Этот список можно продолжат очень и очень долго.
Везде максимально "простой" (а правильнее сказать устаревший и не всегда только морально) GUI, куча багов и откровенных ляпов.
И везде прослеживается одно и тоже - При написании данного софта, заказчика волновали только время и деньги. Максимально быстро и дешево.
И, разумеется, при таких условиях не о каком функциональном программировании, не может быть и речи.
Rubezh Strazh - Охранная система и Система контроля и управления доступом в одном флаконе. GUI у "Стража", это вообще веб интерфейс на устройстве (ну как на роутере или коммутаторе). Появился в 2019 году. В очередной версии, очередного обновления с BugFix. При сработке тревоги, слетала часть настроек точки прохода. Как вам такое? :) А это между прочем СКУД, часть охранной системы.
Где же тестирование и отлов багов (тем более таких банальных)? Нету, это дорого.
И снова даже при беглом взгляде на ПО, проскальзывает мысль - Здесь экономили на всем.
Подводя так сказать итог. Не ищите причины где-то в глубине. Принцип "ищи кому выгодно", к сожалению не устаревает. Тем более в мире, где всем правят деньги.
У вас очень интересный полет мысли. Но относится он к моему глубокому сожалению, только к энтузиастам. Бизнесу нужны - минимальная цена и сроки. А функциональное программирование с этим не совместимо.
Энтузиазм это хорошо, но любому энтузиасту хочется кушать. А бизнес готов платить только за быстрый результат. Следовательно, ПО скажем на Miranda, не кому не интересно.
Как то так.