Cha*_*tin 66
"自上而下"方法对问题进行了高级定义,并将其细分为子问题,然后以递归方式执行,直到您看到明显且易于编码的部分.这通常与编程的"功能分解"风格有关,但不一定如此.
在"自下而上"编程中,您可以识别可以组成的较低级别的工具,以成为更大的程序.
实际上,几乎所有编程都是通过多种方法完成的.在面向对象编程中,您通常通过识别域对象(这是一个自上而下的步骤)来细分问题,然后对其进行细化,然后将这些对象重新组合到最终程序中 - 自下而上的步骤.
Ecl*_*pse 20
在自上而下的开发中,您可以从主要功能开始,然后考虑需要采取的主要步骤,然后将每个步骤分解为子部分,依此类推.
在自下而上编程中,您可以考虑基本功能以及您将需要的部件并进行构建.你开发了演员和他们的方法,然后你把它们绑在一起,形成一个连贯的整体.
当您开发对象时,OOP自然倾向于自下而上,而当您开始使用一个函数并慢慢添加时,程序编程倾向于自上而下.
我从未听说过以这种方式使用的术语“自上而下”和“自下而上”。
这些术语通常用于描述一个软件系统的设计和实现方法,因此适用于任何语言或编程范式。
在“On LISP”中,Paul Graham 使用的术语“自下而上”略有不同,意思是不断将通用功能提取到共享函数中,以便您最终创建一种新的、更高级别的 LISP 方言,让您可以根据应用程序进行编程领域。这不是该术语的常见用法。如今,我们将其称为“重构”和“特定领域的嵌入式语言”(老 LISP 程序员会嘲笑 LISP 自 1950 年代以来就能够做到这一点)。
我从未听说过分类适用于特定语言,而是一种编程范例-您是否先填写细节(即构建完整的实现方法)然后将它们放在一起(例如,从它们中调用main()方法),或者从逻辑流程开始,然后充实实现?
您实际上可以同时使用两种语言……但是我要说的是相反的情况,在当前的OOP语言中,您首先要定义接口,形成逻辑结构,然后才担心实现,而直接使用过程像C这样的语言,您需要在调用它们之前实际实现一些方法。