我有丰富的PHP Web开发背景。我学习函数式编程语言的原因如下:
- 提高我的编程技能。强烈建议学习FPL以帮助提高技能水平。这是高优先级的,因为我想变得更好。
- 学习通用编程语言以解决脚本编写任务(如操作系统脚本、文本处理等)。
- 作为Web开发中PHP的替代选择。
此外,哪种编程语言有更好的社区支持、教程和书籍,并带有更好的Web应用框架?
欢迎推荐其他编程语言。
我的建议是学习 JavaScript。
我的意思是,真正地去学习它。
我最近尝试了Scala和Clojure,出发点相似。这是我的发现:
Scala非常灵活和强大;Scala允许您精确地定义类型,并允许您定义简洁和干净的DSL。Scala有很多很酷的构造,人们希望Java也有其中的一些,包括一堆函数扩展。但归根结底,我最终在Scala语言中编写了命令式的Java,因为所有那些很酷的东西的复杂性让我无法应对。
我在大学时做过一些Lisp,并且一直想回到它身边。一些非常聪明的人在Lisp中做了一些真正酷的前沿工作,在很少的行数中完成。我想成为那些聪明的人之一,或者至少试着像他们一样。但我从来没有真正理解Scheme,并且我错过了Java中“无限的库资源”。我无法想象自己会用Scheme编写GUI,并且很难想象Web应用程序。
然后我尝试了Clojure,感觉一切都恰到好处。Clojure被故意使得更加友好:试图减少圆括号的使用,并使用不同的圆括号标点符号来处理不同的情况。将数组、文本和XML等内容视为序列,再加上强大的一组序列函数,使许多问题变得非常简单,就像函数式Java。函数式思维模式需要一点时间来适应,但我在Clojure中找不到比这更易接近或更令人愉悦的体验。我的代码几乎不再需要循环,但它更清楚地指示了它正在循环/序列化,并且更为简洁。如果我真的需要,可以使用可变状态,但我必须明确说明;作为交换,该状态受到Clojure并发机制的保护。并发因此几乎变得是显而易见的,有时我的代码安全地并行执行,而我自己却没有任何意识上的努力。
对于不来自Java的人来说,这似乎不太有用,但Clojure可以做任何Java能做的事情,包括完全兼容的.class文件。最重要的是,它可以与所有Java库进行接口,仅这个能力就足以使PHP对您来说成为一个玩具语言。
以下是一位自称Clojure拥护者对于Scala的看法,当然你可以自己评估,但你可能会发现他的观点很有用。
你也许会对他对于PHP vs Clojure的看法感兴趣。
我是一个新的Clojure转换者。它让我开阔了思路,但又足够易于理解和有趣。我很满意。
但是
PHP和Clojure存在不同的宇宙中。我曾经尝试过一些函数式编程语言,并在接触Clojure之前尝试过其他Lisp语言。对于一个直接从PHP转换而来的经验不足的开发人员来说,Clojure可能会带来太多文化冲击。
作为两者之间的合理折衷方案,以及一种脚本化程度足够高,可以让您逐渐接近FP而不是一下子跳入其中的语言,我推荐Ruby。Ruby是现代、干净、优雅的语言。在JRuby版本中,它甚至还很快。学习Ruby并尝试使用Rails是令人愉快和有益的。