1组合编程

本论文在很大程度上是围绕着组合编程.我们的意思是通过组合生成程序的编程方法子程序。子程序的内部细节可以是从中提取,这使得人脑有可能创建并理解非常复杂的程序。这种方法有:,当然,在各种编程中已经练习了几十年语言。然而,这是一种有时被遗忘的方法,并且通常只用于程序的一部分;例如,在执行以下操作时与操作系统相关的任务。

要使组合编程普及,这一点很重要我们不仅可以访问一个好的子程序库,而且编程活动还必须处理形成新的适合组合的子程序。否则我们可以编写的程序也变得有限复杂。因此,组合编程还涉及形成新级别的子程序。

当然,编程的一个重要方面是哪个编程一个人使用的语言。不同的编程语言差异很大当我们想通过组合。在形成新的子程序。作者发现编程语言基于声明的样式适合于此尊重。声明性编程语言允许我们编写程序以数学的方式。例如,考虑以下表达式

f((a+b)/2,(a+b)/2)
在声明性编程语言中,我们可以将我们可以命名的子程序平均的.

平均值=(a+b)/2在里面f(平均,平均)
重要的是,形成子程序的活动应该对程序员来说尽可能简单。如果程序员是需要写入比中显示的字符多得多的字符前面的例子中,另一种编程方法可能会变得更多有吸引力,即通过复制并粘贴。这将很快就会产生难以理解和理解的程序维持,但不幸的是,这是一种实践过于广泛的方法。

前面的示例实际上并没有引入子程序。可以简单地视为声明局部变量。然而,在声明性编程语言,当我们想形成子程序。表达式

f(a,a+b)+f(a、a+c)+f
对函数使用循环调用模式(f).这个模式很容易被我们可以调用的子程序捕获f2.

f2(x)=f(a,a+x)在里面f2(b)+f2(c)+f2(d)
在流行编程中形成相应的子程序例如,C语言将更加复杂。我们会首先需要声明一个新的顶级函数,然后确保name没有与同一顶级函数中的其他顶级函数冲突源文件,最后,该函数需要一个额外的变量的参数。所有参数都需要一些类型声明。

作为中组合编程的更高级示例声明式,我们可以考虑解析组合词[伯尔75][瓦德85](从现在起,我们将经常谈论连接符什么时候我们指的是为多功能设计的子程序组合)。大量文本解析器可以由四个组合器:

从这些组合符中,程序员可以构建更有用的组合词。下面是一个可用于解析的组合符括号内的内容:

within括号(p)=标记('(')>>>p>>>标记(')')
或者我们可以声明这个组合子许多(第页),其中形成一个可以接受任何内容的解析器第页接受,零或在一个序列中重复多次(这通常是写的第页*):

许多(p)=(p>>>很多(p))||epsilon
请注意,在大多数这些组合符中,我们都使用了可能性子程序参数化,这是声明性编程语言的另一个重要特性自然支撑。