sam*_*ung 20 php scala clojure
我有一个沉重的Web开发背景与PHP.我学习函数式编程语言的原因是:
还有更好的社区支持,教程和书籍以及更好的Web应用程序框架?
随意建议其他语言.
Rya*_*ary 46
对于函数式语言,学习Scala和Clojure.您将从两者中学习新的思维方式.去学习一些Reia和Erlang吧.
说真的,你掌握的语言越多,不管你最终使用哪种语言,你作为一名程序员就越好.
兰特: "我应该学什么语言?" 问题变得令人厌倦.每次答案应该是相同的,但没有人给出正确的圣人建议.相反,每个人都传播FUD,并建议他们恰好用于日常工作的语言是你应该学习的语言.胡说.
Sco*_*den 24
我的建议是学习JavaScript.
我的意思是,真的学习它.
Car*_*icz 24
基于类似的动机,我最近尝试过Scala和Clojure.这是我发现的:
Scala功能强大,功能强大; Scala允许您以极高的精度定义类型,并允许您定义简洁且干净的DSL.Scala有许多人希望Java拥有的很酷的结构,包括一堆功能扩展.但是当它出现时,我最终编写了Scala语言中的命令式Java,因为所有那些很酷的东西的复杂性让我不知所措.
我在大学里做了一些Lisp,并且总是渴望再次回到它.一些非常酷的尖端东西是由Lisp中非常聪明的人完成的,并且只有极少数几行.我想成为那些聪明人之一,或者至少尝试像他们一样.但我从来没有真正理解Scheme,而且我错过了Java的"无限库".我无法看到自己在Scheme中编写GUI,并且无法想象Web应用程序.
然后我尝试了Clojure,似乎所有东西都被点击了.故意使Clojure更加局外友好:试图减少括号并在不同情况下使用不同的括号标点符号.将数组,文本和XML等事物作为序列处理,结合一组强大的序列函数,使得很多问题变得非常简单,对数组和哈希映射的支持也是如此.它(故意)就像功能Java一样.功能性mindeset需要一些习惯,但我发现它在Clojure中是平易近人的或令人愉快的.我的代码几乎不再需要循环了,但它更清楚的是循环/排序的位置,更简洁.如果我真的需要,我可以做可变状态,但我必须明确它; 作为交换,该状态受Clojure的并发机制保护.因此,并发性几乎变得毫无疑问,有时候我的代码会在没有自己的意识努力的情况下安全地并行执行.
不是来自Java,这对您来说似乎没有用,但Clojure可以做任何Java可以做的事情,包括完全兼容的.class文件.最重要的是,它可以与所有Java库连接,而这种能力本身就可以使PHP看起来像是一种玩具语言.
Joe*_*ler 12
这是一位自称为Clojure的倡导者对Scala所说的话.当然,要自己决定,但你可能会发现他的观点很有用.
您可能也对他对PHP与Clojure的看法感兴趣.
这是一个非常困难的电话.就个人而言,我认为Scala作为Web开发人员的通用语言更有用.有许多Web框架,或适应它.例如,在非常快速和肮脏的一面,有Play.在完美的Comet支持方面,还有Lift.
但是你谈到了学习功能风格的程序.在这方面,Scala无法与Clojure竞争.Scala可以在功能样式中使用,但它确保您不必使用.另一方面,使用Clojure,除了功能风格之外的任何事情都是痛苦的.
所以,如果你想要替代PHP,我会打赌Scala.如果你想真正学习函数式编程,Clojure.
最后,让我说我不认为Clojure不是通用语言,或者它不能用于Web开发.我只是认为Scala在这方面更多.
得到一袋水泥,硬化,学习哈斯克尔,为了好!
从PHP跳转到Scala或Clojure将是一个巨大的文化冲击.PHP非常注重快速/肮脏的完成工作(或者使用最后10%的脏(或:)来完成90%的清理,而函数式编程语言会强制你思考一定的正确性和抽象性.在你到达Scala或Clojure之前,你我想要介于两者之间.如果是我,我会
选择我的最终目标作为Clojure,因为(据我所知)你可以使用Clojure获得整个Java标准库,使它立即比Scala之类的东西更有用
我花了一些时间用Java构建一些东西,只是为了感受一种强类型的OO语言.我选择Java而不是C#(甚至是ZendFramework风格的PHP),因为一旦你到达Clojure它就会很有用.Google Web Tools可能是一个很好的开始.它是一种Web开发,但非常像Java,而不是像PHP/HTML那样.
花些时间查看jQuery的内容,并开发自己的jQuery模块或添加核心功能.这将使您习惯于思考的功能,同时将其应用于您熟悉的问题.
最后一点建议:尝试接受您选择的语言/平台的常用方法.不要试图将您的PHP编码风格用于任何一种语言.虽然一开始看起来会更容易,但是你会得到一些结果,但你会错过这个练习的重点,即对问题进行不同的思考和更广泛的思考.
祝好运!
如果您正在寻找PHP的一个很好的替代品,我建议使用Python和Ruby.如果您需要一种能够为Web开发提供良好支持的功能语言 - 请学习Erlang.以下是一些项目/框架,可帮助您在Erlang中创建高度可伸缩的Web应用程序:
它也是为构建容错的分布式软件而专门设计的少数几种语言之一.
| 归档时间: |
|
| 查看次数: |
16045 次 |
| 最近记录: |