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