用C ++编程了好几年并读了几个月的HN,我想学习一种函数式编程语言来扩展/改变我对编写程序的看法。我应该选择学习哪种函数式编程语言? Python,Ruby,Haskell,其他?拥有像样的库支持是很好的,这样我就可以使用它来编写基于Web的产品并将其托管在某处:)。请指教。
答案 0 :(得分:15)
这取决于你最终的目标是什么。如果您对功能编程感兴趣,或者您真的想要掌握必需品,我建议Haskell是您最好的选择。这个环境可以免费下载,它有一个近乎狂热的支持者社区,它是“最纯粹”的函数式编程语言之一,所以它真的会迫使你调整你的思维方式以适应编程的功能。功能编程可能听起来有点像程序编程,但实际上它是完全不同的。
我建议您阅读Graham Hutton撰写的“Haskell编程”副本,这是一篇优秀的介绍性文章,下载环境并进行重击。还有一些优秀的讲座(基于这本书),可以从Haskell粉丝和函数编程研究员Meijer博士那里获得,可以在微软的Channel 9网站上免费下载。
如果您对将函数式编程应用于商业环境更感兴趣,我喜欢F#的概念,但如果您已经插入.Net生态系统,那么使用它的主要好处就存在了。它允许您将功能代码的各个部分介绍到现有的OO程序中。
即使在那种情况下,我也建议从Haskell开始。 F#似乎对程序性思维过于宽容,Haskell强迫你重新评估你的思维方式。
答案 1 :(得分:4)
Clojure是Lisp编程语言的最新方言。它是一种支持交互式开发的通用语言,它鼓励函数式编程风格,并简化多线程编程。它在Java虚拟机和公共语言运行时上运行。与其他Lisp一样,Clojure将代码视为数据并具有复杂的宏系统。
目前,我正在学习这个没有任何基本的Lisp背景。你可以赶上它!
答案 2 :(得分:-5)
Python
是多范式的。虽然C++
既是程序性的又是面向对象的,Python
是程序性的,面向对象的,并且具有一些功能特性。就个人而言,我相信Python
简单而实用,值得学习,期间!但我离题了..
如果你想要一些基于网络的东西,我会说你需要学习JavaScript
。浏览器不支持其他客户端编程语言,因此您必须使用JavaScript
。
对于服务器端,您可以将Python
与Google App Engine一起使用。还支持Java
,并添加了Go
的实验性支持。
您还可以使用NodeJS在服务器端使用JavaScript
。但是,找到托管可能会有点麻烦。
TL; DR:想要制作基于网络的产品吗?了解JavaScript
(和Python
)。