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