我是一名C#程序员,经过一些关于函数式编程和声明式编程的精彩讨论.我觉得我两个都不擅长:P,所以,我正在考虑开始学习prolog和haskell.请告知这样做的可行性.如果我学习F#,那么学习Haskell是否有意义?这些语言能为我提供哪些特质可以帮助我编写更好的c#程序?
很少有语言X,如果有的话,你不能写一个Reg Braithwaite批准的帖子形式为" 我从语言X中学到的东西,当我使用语言Y时,这使我成为更好的程序员 "
C#本身正在积累许多功能结构 - lambda表达式和System.Linq扩展方法 - 所以学习在功能上思考肯定会帮助你充分利用日常工作语言,以及在...本身.事实上,Erlang是我在C#之后选择的第一个功能/模式匹配语言,但仅此一点就足以让我再次看到我的C#风格以及我如何处理问题.
FP正在成为下一个重要的东西,并且没有缺乏语言可供查看和决定哪些最适合你学习 - Haskell,Erlang,以及新人F#,Scala和Clojure都在这个浪潮中.
小智 7
就像你第一次从命令式转向面向对象一样,使用函数式编程需要重新思考如何思考问题.第一次你倾向于以混合方式做事,直到你得到它的全部要点.由于你来自C#后台,我建议尝试F#因为你可能会更快地习惯它,因为.net语言共享一个足以让你入门的通用框架.
这说直接去Prolog和Haskell并不是一个坏主意,但与C#和F#之间的飞跃相比,你可能必须先调整语言的不同语法和库.就我个人而言,我通过2本书来实现从C#/ Java到Haskell:RealWorldHaskell和The Craft of Functional Programming,并且管理得很好,所以你没有理由不能这样做.:)
学习F#然后Haskell仍然需要一些工作,因为F#和Haskell是不同的:第一个是"不纯",而第二个是"纯粹".杂质意味着某些"副作用"(如状态和IO)本质上是允许的,而纯度意味着您不会立即获得它们但必须使用某些方法(例如monad).来自C#可能更容易尝试F#然后Haskell原因.
我相信(个人意见警告),如果你想成为一个更好的C#程序员,了解F#和Haskell(或其他任何事情)永远不会受到伤害!特别是在F#的情况下,它可以与C#集成.函数式编程可以为您提供某些特定的功能,并且知道它可能迟早会变得有用,特别是因为它似乎像其他人所说的那样,目前有功能语言程序的趋势.
| 归档时间: |
|
| 查看次数: |
1649 次 |
| 最近记录: |