在我看来,函数式编程是一件很棒的事情。它消除了状态,并使自动使代码并行运行变得更容易。
许多最初学习命令式编程风格的程序员发现学习函数式编程非常困难,因为它太不同了。我开始怀疑,首先学习函数式编程的程序员是否会发现很难开始命令式编程。这似乎不会像相反的那样难,所以我认为如果先教更多的程序员函数式编程会是一件好事。
所以,我的问题是,函数式编程应该在命令式之前在学校教授吗?如果是这样的话,为什么不更普遍地从它开始呢?
发布于 2009-04-22 18:18:37
实际上,有些学校已经这样做了。在我学习的地方(哥本哈根大学),他们在第一学期教授SML,作为编程入门。然后他们教Java,作为OOP的入门。
我认为它工作得非常好,我同意你的观点,它比相反的方法更好。函数式编程对于不是程序员的人来说是相当直观的。它更好地映射了我们在高中或更早的时候学到的数学知识,所以还没有接触过命令式编程的人通常会毫不费力地学会它。
事实上,有一种趋势是,刚开始编程的人在注册时会比那些已经学习Java或C++的人学得更快。
从命令式到函数式似乎在概念上有了很大的飞跃,但对大多数人来说,反过来似乎容易得多。当学生在学习了SML之后接触到Java时,他们通常不会觉得Java很难。一旦你了解了编程的“纯”概念,粘在副作用上就相当简单了。但是,如果你对编程的全部理解都是基于副作用,那么很难想象没有副作用,一切都是可能的。
我认为这种方法的一大好处是,函数式编程原则成为编程工具箱的重要组成部分,而不是一些深奥的附加组件,如果你想炫耀的话。即使在使用命令式语言编程时,我认为拥有函数式语言的背景也是有好处的。即使在使用像C这样的低级语言进行编程时,考虑最小化状态和副作用,并习惯于高阶函数的概念(即使它们在语言中不可用)也是有益的。
发布于 2009-04-22 18:19:50
许多学校教授函数式编程。他们中的一些人甚至先教它。我想,在很长一段时间里,麻省理工学院在计算机编程导论课上都是讲授方案的。
在我的学校里,我们把ML作为“比较编程语言课”的一部分,每个人都必须上这门课。
无论如何,我认为函数式编程对于来自命令式语言的人来说并不难学。至少这不是为我准备的。
很多人认为像Haskell和Scheme这样的语言没有得到广泛采用的原因是因为人们被命令式编程“毁了”。这是胡说八道。
这些语言没有被广泛采用的真正原因是它们没有使用花括号。我是认真的。
C/Algol语法风格之所以流行,是因为人们喜欢它的外观。
越来越多地采用函数式编程的关键不是谈论Haskell有多伟大和副作用有多坏,也不是反复说"monad“这个词。相反,只要创建一种使用花括号和分号的函数式语言即可。人们将会使用它。
发布于 2009-04-22 18:08:57
许多(大多数?)学校教授函数式编程。由于许多原因,很少有人先教它很难。
https://stackoverflow.com/questions/778461
复制相似问题