PHP之后要学什么?Scala还是Clojure?[已关闭]
我有一个沉重的PHP网络开发背景。我学习函数式编程语言的原因是:
- 提高我的编程技能。有人强烈建议学习FPL会有所帮助。这有很高的优先级,因为我想越来越好。
- 学习一种通用编程语言来解决脚本(操作系统脚本,文本操作等)等任务。
- 在 Web 开发中用作 PHP 的替代方案。
另外,哪个有更好的社区支持,教程和书籍以及更好的Web应用程序框架?
随意建议其他语言。
我有一个沉重的PHP网络开发背景。我学习函数式编程语言的原因是:
另外,哪个有更好的社区支持,教程和书籍以及更好的Web应用程序框架?
随意建议其他语言。
我最近尝试了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看起来像一种玩具语言。