我认为OCaml的问题在于“开箱即用”它不太有用。人们使用某种语言的最终原因是因为它拥有他们所需的库。但是,没有什么“开箱即用”的东西,没有人能深入到项目中来意识到他们需要编写一个库。结果是没有库的语言,这使得编写“真实应用”变得很困难。
我认为这就是OCaml所遭受的-没有人会费心地在其中启动“实际项目”,因为那里只有一种编程语言。是的,我可以加两个和两个并打印结果。结果是收集了大部分都是学术性的抛弃式软件的库(作者获得了博士学位并继续前进),这对实践程序员并不太有用。
(我知道有一些工作正在改变这种状况,例如“包括电池”之类的项目。再过5年再回到这里,也许OCaml会更受欢迎。)
此规则有一些例外。Java最初是没有库的,但是Sun付钱给人们内部编写它们,然后他们把它全部卖掉了。Java认证,特定于Java的硬件,Java书籍,Java类等。然后,即使说这不是一种用于学习编程的好语言,大多数大学还是说服了他们专门讲授它。
结果是受欢迎。钱可以解决很多问题。
在功能语言领域,我们可以看到Haskell变得非常流行。我认为大多数的流行是由于像dons这样的人编写了有用的库,并且从未停止过销售这种语言。每天您都可以看到Haskell上有关Programming Reddit的几篇文章。这使它一直困扰着人们,直到他们最终决定“我将尝试Haskell”。当他们这样做时,他们会看到有用的东西,例如Web框架,对象数据库,OpenGL库和XML处理库。这意味着他们实际上可以做一些有用的“立即行动”。因此,在具有潜力的生产能力和对其进行大量了解之间,Haskell获得了很大的知名度。
CL具有许多与Haskell相同的库,并且速度几乎一样快,但是没有人谈论它,因此它“感觉死了”。确实,#lisp比#haskell安静得多,但是Lisp仍然是一种非常有生产力的语言,具有许多库。没有其他语言具有SLIME。但是营销非常重要,Haskell的表现要比Lisp或OCaml更好(并争夺相同的用户群)。
最后,有些人永远不会“获得”编程,因此打破他们的思维模式(变量是带有值的框,代码从上到下执行)将确保他们不使用您的语言。这种类型的程序员在编程人员中占很大比例,因此这进一步限制了诸如Lisp,Haskell和OCaml之类的抽象语言的可能用户群。