Очередная
дискуссия на тему Haskell, начавшаяся с подсчета людей, которых можно найти для поддержки написанных на нем программ.
thesz спрашивает, почему я считаю, что хаскель малопригоден для промышленной разработки. Собственно говоря, самим фактом подсчета уже все сказано - почему-то никому не приходит в голову считать "сколько есть программистов на Java, С#, итд".
А вообще:
1) SPJ в интервью утверждал, что его цель - "не дать языку стать успешным". Это чтобы можно было в языке ради исследовательских целей менять что попало, будучи независимым от пользователей. И то - в языке до сих пор нету стандартных записей, с именнованными полями, все реализации на уровне расширений стандарта.
2) Полагаться в работе на язык, за который отвечают люди не из индустрии, а из академической среды - это значит искать себе неприятностей. Чтобы понять, что нужно для работы программистам - нужно работать программистом. Пообщаться с пользователями, пройти несколько авральных дедлайнов(это когда нет времени на вещи типа "разобраться, кто вызывает утечку памяти - мы или ошибка в сборщике мусора")
3) Язык должен быть доступен для освоения русскоязычными индусами с тремя
классами ЦПШ курсами ускоренной подготовки низшего кодерского состава. Ориентироваться на лучших, которые могут это освоить, это конечно хорошо, но не в этой жизни.
4) Сложные алгоритмы (то, в чем так хорош хаскель) уже давно писать практически не нужно. Нужна всякая хрень - расставить кнопки так как это удобно юзерам, вытащить из базы данные и напечатать так, чтобы это понравилось налоговой инспекции, интегрироваться с системой, написанной людьми, которые не то, что про Haskell не слышали, а вообще в проектировании софта не в зуб ногой.
5) Средств разработки нет. В фаре писать и компилировать из командной строки, конечно, удобно, но когда в проекте пару сотен или тысяч исходных файлов и сотня модулей - без IDE можно рехнуться. Вопрос о intellisense/code completion остается открытым, его можно делать по разному(с проверкой типа объекта, как в Delphi, или просто тупое перечисление всех видимых имен, как в
Visual studio) и реализация такой вещи для хаскеля это, по-моему, потянет на хороший курсовой/дипломный проект по соответствующей специальности :)
Да, автоматический вывод типов, ленивые вычисления и функции высшего порядка очень бы пригодились для работы, как минимум, можно было бы выкинуть множество мелких служебных классов, служащих для имитации этого на обычных языках.
Чистота языка - уже сложнее, ввод-вывод на хаскеле с использованием монад выглядит уже не так приятно, как какие-нибудь красивые математические алгоритмы, и сравним по ужасности с кодом на обычных императивных языках. Вот
пример Но все остальные заморочки языка перевешивают его преимущества.
Для идеального сферического программизма в вакууме - хороший язык. Для промышленной разработки с целями "сделать продукт, продать, поддерживать и дорабатывать еще лет пять" - нет. Вопрос в исходном посту по ссылке так и остался открытым - кто будет поддерживать сложные продукты на хаскеле после того, как их первый разработчик загремит в психушку/уйдет на другую работу/отбросит коньки?