功能和模块有什么区别?

时间:2011-01-22 10:20:01

标签: functional-programming modular

我对c ++很陌生并且在模块化编程面向函数编程之间的区别之间感到困惑。我从未完成模块化编程所以我只知道模块定义它包含函数。顺序(面向函数的语言)和模块化编程之间有什么区别?提前感谢。

编辑: 我正在阅读有关C ++的OOP的内容。它开始的内容类似于非结构化编程,而不是基本了解结构化编程,而不是模块化编程和最后,请 OOP

3 个答案:

答案 0 :(得分:4)

模块化编程主要是一种减少计算机程序中耦合的策略,主要是通过封装。

在模块化编程之前,结构化编程确保了代码的局部一致性,但缺乏全局一致性:如果您认为您的拼写检查字典将被实现为红黑树,那么此实现将暴露给程序中的其他人,以便程序员在文本渲染上工作,就能够访问红黑树节点,用它们做有意义的事情。

当然,一旦你需要改变字典的实现,这就变成了地狱,因为那样你就必须修复其他程序员的代码。

更糟糕的是,如果实现细节涉及全局变量,那么你必须非常小心谁更改它们以及以什么顺序,或者会出现奇怪的错误。

模块化编程通过将实现(私有模块)与接口分离(程序的其余部分可以使用)将封装应用于所有这些。因此,字典模块可以公开只能通过findWord(word,dictionary)等模块函数访问的抽象类型。在字典模块上工作的人永远不需要在该模块之外查看是否有人可能正在使用实现细节。

答案 1 :(得分:3)

它们是构建代码的两种方式。如果您对面向功能的编程感兴趣并希望更好地理解它,我会看一下lisp。 C ++并不是真正的面向函数,因为每个函数都应该返回一个值,但C ++函数可以返回void(使它成为一个过程而不是一个函数),因此它不是一个真正的函数式编程语言。

  

“我从未完成过模块化编程,因此根据定义我只知道模块包含函数”。

模块的级别高于函数。

这是一个好的开始。将一个函数视为一个工作单元,它可以执行某些操作,当您有多个可以按特定方式分组的函数时,可以将它们放在一个模块中。因此,string.h有许多用于处理字符串的函数,但是只需包含标题,您就可以直接访问所有这些函数。然后,您可以在其他项目中重复使用这些模块,因为您之前已经使用过模块,并且它们已经(我假设)已经过调试和测试,并阻止人们重新发明轮子。重点是从累积经验中受益。

我建议您考虑一个您喜欢的项目并编写一些函数,并考虑如何组织代码供其他开发人员使用。

希望这对你有用。

答案 2 :(得分:0)

我相信,到目前为止,函数式编程将我们带入微服务范式,而模块化编程则倾向于类似于OOP概念。