代码之家  ›  专栏  ›  技术社区  ›  WeNeedAnswers

在.NET中,从OOP思维转变为纯面向函数的编程思维有多困难?[关闭]

  •  7
  • WeNeedAnswers  · 技术社区  · 14 年前

    我一直在和 C# 很多年来,从测试版开始。我有一段时间,从 OOP functional-oriented programming (FOP)。我从以下概念开始 procedural programming 和功能组成在20世纪80年代后期,从1995年开始一直在做OO UML 在我刚开始编程的时候 Delphi 程序和OO的多范式方法。有没有好的书籍建议,帮助从一个根深蒂固的OO程序员过渡到功能编程?

    我试过了 Haskell 书,但它似乎需要一些背景知识的主题,是非常难以接近。

    我有两个 O'Reilly , Apress 关于F的书,但这一切似乎有点模糊和中途的房子,只是完成工作。它还将对象与函数混合起来以满足需要。

    F# 似乎在我的OOP中原谅我比哈斯克尔思考的更多,但我认为为了得到真正的好处,我需要进入FOP的思维模式,以便从代码中获得最好的效果。在我的日常C语言之间,我已经阅读了大约两年的函数式编程。但是我觉得我没有进入到思考中去。

    我很确定外面有很多像我一样的人。我认为,任何答案都会对很多想搬到F区的C区的人有很大帮助。尤其是在市场上有很多大的击球手要求F。我是一个需要尽快跟上进度的承包商。

    4 回复  |  直到 11 年前
        1
  •  10
  •   Tomas Petricek    14 年前

    这当然是主观的,但我认为很多人都在问类似的问题。当我开始学习F(作为一个有C经验的人)的时候,我当然学了。以下是一些不同的想法:

    • 选择正确的学习问题 -学习函数式编程的最好方法是开始处理一些非琐碎的项目。如果您选择一个以OO方式容易解决的项目,那么您可能会倾向于OO解决方案。然而,如果您选择一些自然适合FP解决方案的项目,那么您将学到一些东西。在我的案例中,我研究了从F引用到JavaScript的转换程序,这涉及到大量递归处理和歧视联合。

    • 不要试图完美 -如果你试图用功能性的方式写一些东西,那么它在第一次尝试时可能并不完美。不要担心(也不要对自己说你可以用OO的方式做得更好)。你也可以用FP的方式做得更好-只是需要一些时间来了解如何做到这一点。

    • 试着成为纯粹主义者 -如果您开始学习haskell,那么您将不得不编写纯函数代码。F并没有强制执行,但我认为这并不意味着F不适合学习函数式编程。如果你知道C和.NET,你可以重用很多你的经验。尽量对自己更严格,避免使用可变状态和继承之类的非功能结构——它们有时很有用,但在学会用fp方式思考之后,您可以使用它们。

    回答这样的问题是我的主要动机之一。 Real World Functional Programming 书,也许这能帮助…

        2
  •  3
  •   Merlyn Morgan-Graham    14 年前

    有没有好的书籍建议,帮助从一个根深蒂固的OO程序员过渡到功能性编程

    计算机程序(SICP)的结构和解释:

    他的课程似乎主要集中在功能组合上。它在Lisp中,但它与语言无关,而更多地与抽象概念有关。

    我不认为他说了太多(或任何)关于纯FP的东西,但我也没有真正读完所有的东西:()尽管如此,概念和思维方式仍然应该是高度适用的。

        3
  •  2
  •   ffriend    14 年前

    我相信,要真正理解函数式编程,首先必须重新组织所有关于实现不同事物的方法的知识(例如,您必须了解对象可能被表示为散列图甚至关联列表,而不仅仅是记录)。此外,您还需要开始考虑不可变数据和纯函数(没有副作用的过程)。然后,您必须比较实现和处理对象的功能性和过程性方法。

    所有这些你可以在 SICP -学习的经典书籍不仅是FP,而且是一般编程。要理解功能性的方式,你不需要阅读所有的书,但至少要阅读前3章。

    在理解了主要的FP概念并能够实现其风格的任何东西之后,阅读关于静态类型语言的任何书籍。例如,关于F的新闻书籍将更容易阅读。

        4
  •  1
  •   Rei Miyasaka    14 年前

    Learn You a Haskell 是一本不错的书,尽管它可能有点太基础了,因为你可能已经从你读过的一本书中知道了haskell的语法…

    往上一个台阶 Programming in Haskell 如果你向下滚动到那个页面,就会看到一系列视频讲座的链接,这些视频讲座是根据微软研究院的ErikMeijer提供的书制作的。

    等式推理的东西是特别有趣的,如果只是在学术上。

    在应用方面,另一个答案中给出的现实世界函数编程书看起来真的很好——尽管我没有读过,所以我不能做出任何判断。