需要学习Prolog,Haskell作为C#程序员

需要学习Prolog,Haskell作为C#程序员,c#,haskell,prolog,C#,Haskell,Prolog,我是一名C#程序员,在经历了一些关于函数式编程和声明式编程的精彩讨论之后。我觉得两方面我都不擅长:P,所以,我想开始学习prolog和haskell。请说明这样做的可行性。如果我学F#,那么学Haskell有什么意义?这些语言能为我提供哪些品质,帮助我编写更好的c#程序?我认为学习这两种语言都不能帮助你成为一名更好的c#程序员。我会花时间在C#上练习编程。函数式和逻辑(声明式)编程是另一种编程范式,您是从另一个角度思考的 但这两种范式可能不会直接影响您使用c#进行编码,但当您思考问题本身时,这可

我是一名C#程序员,在经历了一些关于函数式编程和声明式编程的精彩讨论之后。我觉得两方面我都不擅长:P,所以,我想开始学习prolog和haskell。请说明这样做的可行性。如果我学F#,那么学Haskell有什么意义?这些语言能为我提供哪些品质,帮助我编写更好的c#程序?

我认为学习这两种语言都不能帮助你成为一名更好的c#程序员。我会花时间在C#上练习编程。

函数式和逻辑(声明式)编程是另一种编程范式,您是从另一个角度思考的


但这两种范式可能不会直接影响您使用c#进行编码,但当您思考问题本身时,这可能是间接的

很少有语言X,如果有的话,您无法为其编写经Reg Braithwaite批准的表单帖子“”

C#本身正在积累大量的功能结构——lambda表达式和
System.Linq
扩展方法——因此,学习功能性思维肯定会帮助你从日常工作中获得最佳的工作语言,并从中获得乐趣。碰巧,Erlang是我在C#之后学习的第一种函数/模式匹配语言,但仅此一点就足以让我再次审视我的C#风格以及如何处理问题


FP正在成为下一个重要的东西,而且不缺乏语言来研究和决定哪种语言最适合你学习——Haskell、Erlang,以及新来者F#、Scala和Clojure都在乘着这股潮流。学习像C#这样的命令式语言的函数式编程非常困难,这是一种全新的思维方式(至少对我来说,你可能会发现函数式语言更容易理解!这取决于你的大脑如何工作;)

F#将是一个不错的选择,因为它位于CLR上,这意味着您可以轻松地使用从C#代码编写的F#库

F#通常更适合“函数”(数学)问题

我正在考虑用F在我的C代码中重写一些复杂的算法,使它们更快、更简洁


正如艾哈迈德提到的。学会用新的方式思考问题只会是有益的

学习一门新的语言我是无伤大雅的。我打算删掉这段话,但jist是“如果你不知道如何写一个想法,你就不知道如何思考这个想法”。 这是在自然语言的背景下,但我认为它也适用于编程语言


看一下prolog、haskell和tinker。它至少会给你的腰带增加一些工具

我从prolog开始,因为它是两者中比较容易的。将给你一个新的范例的感觉。然后去haskell或f#试试


我推荐f#而不是haskell,因为一般来说,创建与c#和.net兼容的库更容易,因此它更有用

我在这里看到的观点是,最好先开始学习prolog。我个人不同意。函数式编程更接近于其他语言。例如,C++中有很多来自函数编程透视的方法(STL算法、Booo::Boost、Booo::lambda等)。我不知道,但有人告诉我,情况也一样

所以我认为从函数式语言开始会更容易。我个人知道haskell、scheme和prolog,我认为如果你直接从统一、跨搜索、规则等方面入手,可能会让你的头脑有点崩溃(至少会让我的头脑崩溃;-)。这只是一个观点

  • 就像第一次从命令式编程过渡到面向对象编程一样,使用函数式编程需要重新构建思考问题的方式。第一次你倾向于以一种混合的方式做事,直到你明白了所有的要点。由于您来自C#背景,我建议您尝试F#,因为您可能会更快地习惯它,因为.net语言共享一个通用框架,这足以让您开始学习

  • 也就是说,直接使用Prolog和Haskell不是一个坏主意,但与C和F之间的飞跃相比,您可能必须首先适应不同的语法和语言库。就我个人而言,我通过两本书从C#/Java到Haskell:和,管理得很好,所以你没有理由不这样做。:)

  • 学习F#和Haskell仍然需要一些工作,因为F#和Haskell是不同的:第一个是“不纯的”,第二个是“纯的”。杂质意味着某些“副作用”,如状态和IO本质上是允许的,而纯度意味着你不能立即得到它们,但必须使用某些方法(如单子)。来自C#也许更容易尝试F#,然后是哈斯克尔造成的

  • 我相信(个人意见警告),如果你想成为一名更好的C#程序员,学习F#和Haskell(或任何与此相关的东西)永远不会有坏处!特别是在F#的情况下,它可以与C#集成。函数式编程可能有助于您完成某些事情,并且知道它迟早会变得有用,特别是正如其他人所说的那样,现在似乎有一种趋向于函数式语言程序


  • 把自己锁在黑暗的房间里,不跟任何人说话,也不学习任何新的东西,这也是一个很好的方法。。。。。哦,等等,那很糟糕,不是吗,不好!我搜索了谷歌,试图制作我的第一个hello world prolog程序。但这一切都是徒劳的。我已经下载了SWI-PROLOG,但我无法猜测如何编写一个文件,然后运行(查阅)它。