Я думаю, что проблема с OCaml заключается в том, что он не слишком полезен "из коробки". Возможная причина, по которой люди используют язык, заключается в том, что в нем есть нужные им библиотеки. Однако, не имея ничего «из коробки», никто не заходит достаточно далеко в проект, чтобы понять, что им нужно написать библиотеку. В результате получается язык без библиотек, что затрудняет написание «настоящих приложений».
Я думаю, что это то, от чего страдает OCaml - никто не удосуживается запустить в нем «реальные проекты», потому что все, что есть, - это язык программирования. Я могу добавить два и два и распечатать результат. В результате мы получаем коллекцию библиотек, которые в основном являются академическим отказом от программного обеспечения (автор получил докторскую степень и ушел), что не слишком полезно для практикующих программистов.
(Я знаю, что в настоящее время ведется работа по изменению этого, с такими проектами, как «Батареи включены». Вернитесь сюда через 5 лет, и, возможно, OCaml станет более популярным.)
Есть некоторые исключения из этого правила. Java начиналась без библиотек, но Sun платила людям, чтобы они писали их дома, а потом они чертовски продвигались. Сертификация Java, специфическое для Java оборудование, книги по Java, классы Java и т. Д. Затем даже убедили большинство университетов преподавать его исключительно, хотя он не очень хороший язык для обучения программированию.
Результатом стала популярность. Деньги могут решить много проблем.
На функциональной языковой арене мы видим, что Haskell становится довольно популярным. Я думаю, что большая часть популярности связана с такими людьми, как Доны, которые пишут полезные библиотеки и никогда не прекращают маркетинг языка. Каждый день вы видите несколько статей на Haskell по программированию Reddit. Это удерживает его в сознании людей, пока они наконец не решат: «Я собираюсь попробовать Хаскелл». Когда они это делают, они видят полезные вещи, такие как веб-платформы, объектные базы данных, библиотеки OpenGL и библиотеки обработки XML. Это означает, что они действительно могут сделать что-то полезное «прямо сейчас». Таким образом, между потенциалом продуктивности и большим слухом, Haskell приобрел большую популярность.
CL имеет много тех же библиотек, что и на Haskell, и работает почти так же быстро, но никто не говорит об этом, поэтому он «чувствует себя мертвым». Действительно, #lisp намного тише, чем #haskell, но Lisp по-прежнему очень продуктивный язык с большим количеством библиотек. Ни один другой язык не имеет SLIME. Но маркетинг очень важен, и Haskell делает это лучше, чем Lisp или OCaml (и конкурирует за ту же базу пользователей).
Наконец, некоторые люди никогда не «начнут» программировать, поэтому нарушение их ментальной модели (переменные - это поля со значениями, код выполняется сверху вниз) гарантирует, что они не будут использовать ваш язык. Программисты этого типа составляют значительную долю населения, занимающегося программированием, поэтому это дополнительно ограничивает возможную пользовательскую базу абстрактных языков, таких как Lisp, Haskell и OCaml.