我是一名C#程序员,经过一些关于函数式编程和声明式编程的精彩讨论后,我感觉自己两种都不擅长:P,因此,我想开始学习Prolog和Haskell。请建议这样做的可行性。如果我学习F#,那么学习Haskell有意义吗?这些语言将为我提供哪些质量,可以帮助我编写更好的C#程序?
如果你想写一篇得到 Reg Braithwaite 认可的文章 "我在使用语言 Y 时从语言 X 学到的让我成为更好的程序员", 那么很少有语言 X 是不行的,甚至没有。
C# 本身正在积累一些函数式构造 - lambda 表达式和 System.Linq
扩展方法 - 因此学会思考函数式编程绝对有助于发挥最佳日常工作语言的效果,同时也是一种有趣的体验。碰巧的是,在 C# 之后,Erlang 是我接触的第一种函数式/模式匹配语言,但仅此一项就足以让我重新审视我的 C# 编码风格和解决问题的方式。
函数式编程正成为下一个大趋势,有很多语言可以看看并决定哪种最适合学习 - Haskell、Erlang,还有新手 F#、Scala 和 Clojure 都在搭这股浪潮。
学习一门新语言永远不会有害。我可能会误引用这句话,但其核心意思是:“如果你不知道如何书写一个思想,你就不知道如何思考这个思想”。虽然该语句是针对自然语言的,但我认为它也适用于编程语言。
看看Prolog、Haskell,并进行一些尝试。至少,这将增加你的工具库。
函数式编程和逻辑(声明式)编程是另一种编程范式,你需要从另一个角度思考问题。
但是这两种范式可能不会直接影响你使用C#进行编码,但在思考问题本身时可能会产生间接影响。
我建议您从Prolog开始学习,因为它是两者中更容易的一种。这将让您对一种新的编程范式有所了解。然后尝试学习Haskell或F#。
我建议您选择F#而不是Haskell,因为F#更容易创建与C#和.NET兼容的库,因此更加实用。
我认为学习这两种语言都不会让你成为更好的C#程序员。我建议你把时间花在练习C#编程上。