複製鏈接
請複製以下鏈接發送給好友

約束編程

鎖定
約束編程(Constraint programming)是一種編程典範,在這種編程範式中,變量之間的‘關係’是以約束的形式陳述(組織)的。
中文名
約束編程
外文名
Constraint programming

目錄

約束編程簡介

約束編程(Constraint programming)是一種編程典範,在這種編程範式中,變量之間的‘關係’是以約束的形式陳述(組織)的。這些‘關係(約束)’和命令式編程語言元素不同的是:它們並非明確説明了要去執行的步驟中的某一步,而是規範其解的一些屬性。這樣看來,約束編程是一種聲明式的編程範式。 [1] 

約束編程編程範型

編程範型編程範式程序設計法(英語:Programming paradigm),(即模範、典範之意,範式即模式、方法),是一類典型的編程風格,是指從事軟件工程的一類典型的風格(可以對照方法學)。如:函數式編程程序編程面向對象編程指令式編程等等為不同的編程範型。
編程範型提供了(同時決定了)程序員程序執行的看法。例如,在面向對象編程中,程序員認為程序是一系列相互作用的對象,而在函數式編程中一個程序會被看作是一個無狀態的函數計算的序列。
正如軟件工程中不同的羣體會提倡不同的“方法學”一樣,不同的編程語言也會提倡不同的“編程範型”。一些語言是專門為某個特定的範型設計的(如SmalltalkJava支持面向對象編程,而HaskellScheme則支持函數式編程),同時還有另一些語言支持多種範型(如RubyCommon LispPythonOz)。
很多編程範型已經被熟知他們禁止使用哪些技術,同時允許使用哪些。例如,純粹的函數式編程不允許有副作用;結構化編程不允許使用goto。可能是因為這個原因,新的範型常常被那些習慣於較早的風格的人認為是教條主義或過分嚴格。然而,這樣避免某些技術反而更加證明了關於程序正確性——或僅僅是理解它的行為——的法則,而不用限制程序語言的一般性。
編程範型和編程語言之間的關係可能十分複雜,由於一個編程語言可以支持多種範型。例如,C++設計時,支持過程化編程、面向對象編程以及泛型編程。然而,設計師和程序員們要考慮如何使用這些範型元素來構建一個程序。一個人可以用C++寫出一個完全過程化的程序,另一個人也可以用C++寫出一個純粹的面向對象程序,甚至還有人可以寫出雜揉了兩種範型的程序。 [1] 

約束編程例子

參考資料
  • 1.    Tim Felgentreff; Alan Borning; Robert Hirschfeld (2014). "Specifying and Solving Constraints on Object Behavior". Journal of Object Technology. 13: 1–38. doi:10.5381/jot.2014.13.4.a1.