我多次听说,每个程序员都应该学习每种语言中的一种。现在,这不一定是正确的,但我认为这是一个好主意。
我学到了程序语言(Perl的),但什么是其他类型的?
它们之间有什么区别,每个都有哪些示例?
我多次听说,每个程序员都应该学习每种语言中的一种。现在,这不一定是正确的,但我认为这是一个好主意。
我学到了程序语言(Perl的),但什么是其他类型的?
它们之间有什么区别,每个都有哪些示例?
Answers:
尽管术语远非标准化,但一种常见的方法是将主要的编程范式分类为
您似乎已经知道过程编程是什么样的。
在功能上语言中,功能被视为一流的对象。换句话说,您可以将一个函数作为参数传递给另一个函数,或者一个函数可以返回另一个函数。功能范例基于lambda演算,功能语言的示例包括LISP,Scheme和Haskel。有趣的是,JavaScript还支持函数式编程。
在逻辑编程中,您定义了描述实体之间关系的谓词,例如president(Obama, USA)
或president(Medvedev, Russia)
。这些谓词可能变得非常复杂,并且涉及变量,而不仅仅是文字值。指定所有谓词后,您可以提出系统问题,并获得逻辑上一致的答案。
逻辑编程的主要思想是,您无需告诉计算机如何计算事物,而可以告诉它什么是事物。示例:PROLOG。
在某些方面,面向对象范例是过程编程的扩展。在过程编程中,您拥有数据,这些数据可以是原始类型(例如整数和浮点数),复合类型(例如数组或列表)以及用户定义的类型(例如结构)。您还具有对数据进行操作的过程。相反,在OO中,您具有对象,其中包括数据和过程。这使您拥有诸如封装,继承和多态之类的美好东西。示例:Smalltalk,C ++,Java,C#。
泛型编程于1983年在Ada首次引入,并在C ++模板引入后得到广泛应用。这样的想法是,您可以在不指定实际操作数据类型的情况下编写代码,并让编译器将其弄清楚。例如代替写作
void swap(int, int);
void swap(float, float);
....
你会写
void swap(T, T);
一次,并让编译器为实际使用的代码生成T
可能生成的特定swap()
代码。
C ++,Java和C#在不同程度上支持通用编程。
重要的是要注意,许多语言(例如C ++)都支持多种范例。的确,即使说一种语言支持特定的范例,它也可能不支持所有范例的功能。更不用说在特定范例需要哪些功能方面存在很多分歧。
编程语言具有许多正交特性。最突出的一个就是他们支持的一种或多种范式。在维基百科的文章涵盖了范例详尽; 最重要的范例可能是:
但是语言在其他方面也有所不同:
当前正在流行几种不同的编程范例: