版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系我們

[科普中國(guó)]-編程范型

科學(xué)百科
原創(chuàng)
科學(xué)百科為用戶提供權(quán)威科普內(nèi)容,打造知識(shí)科普陣地
收藏

編程范型、編程范式程序設(shè)計(jì)法(英語(yǔ):Programming paradigm),(即模范、典范之意,范式即模式、方法),是一類典型的編程風(fēng)格,是指從事軟件工程的一類典型的風(fēng)格(可以對(duì)照方法學(xué))。1

定義編程范型、編程范式程序設(shè)計(jì)法(英語(yǔ):Programming paradigm),(即模范、典范之意,范式即模式、方法),是一類典型的編程風(fēng)格,是指從事軟件工程的一類典型的風(fēng)格(可以對(duì)照方法學(xué))。如:函數(shù)式編程、程序編程、面向?qū)ο缶幊?、指令式編程等等為不同的編程范型?/p>

簡(jiǎn)介編程范型提供了(同時(shí)決定了)程序員對(duì)程序執(zhí)行的看法。例如,在面向?qū)ο缶幊讨?,程序員認(rèn)為程序是一系列相互作用的對(duì)象,而在函數(shù)式編程中一個(gè)程序會(huì)被看作是一個(gè)無(wú)狀態(tài)的函數(shù)計(jì)算的序列。

正如軟件工程中不同的群體會(huì)提倡不同的“方法學(xué)”一樣,不同的編程語(yǔ)言也會(huì)提倡不同的“編程范型”。一些語(yǔ)言是專門為某個(gè)特定的范型設(shè)計(jì)的(如Smalltalk和Java支持面向?qū)ο缶幊蹋鳫askell和Scheme則支持函數(shù)式編程),同時(shí)還有另一些語(yǔ)言支持多種范型(如Ruby、Common Lisp、Python和Oz)。

很多編程范型已經(jīng)被熟知他們禁止使用哪些技術(shù),同時(shí)允許使用哪些。例如,純粹的函數(shù)式編程不允許有副作用;結(jié)構(gòu)化編程不允許使用goto。可能是因?yàn)檫@個(gè)原因,新的范型常常被那些習(xí)慣于較早的風(fēng)格的人認(rèn)為是教條主義或過(guò)分嚴(yán)格。然而,這樣避免某些技術(shù)反而更加證明了關(guān)于程序正確性——或僅僅是理解它的行為——的法則,而不用限制程序語(yǔ)言的一般性。

編程范型和編程語(yǔ)言之間的關(guān)系可能十分復(fù)雜,由于一個(gè)編程語(yǔ)言可以支持多種范型。例如,C++設(shè)計(jì)時(shí),支持過(guò)程化編程、面向?qū)ο缶幊桃约胺盒途幊?。然而,設(shè)計(jì)師和程序員們要考慮如何使用這些范型元素來(lái)構(gòu)建一個(gè)程序。一個(gè)人可以用C++寫出一個(gè)完全過(guò)程化的程序,另一個(gè)人也可以用C++寫出一個(gè)純粹的面向?qū)ο蟪绦?,甚至還有人可以寫出雜揉了兩種范型的程序。

例子結(jié)構(gòu)化編程對(duì)比非結(jié)構(gòu)化編程

命令式編程對(duì)比宣告式編程

消息傳遞編程對(duì)比命令式編程

程序編程對(duì)比函數(shù)式編程

Value-level programming對(duì)比Function-level programming

流程驅(qū)動(dòng)編程對(duì)比事件驅(qū)動(dòng)編程

純量編程對(duì)比陣列編程

基于類編程對(duì)比基于原型編程(在面向?qū)ο缶幊痰纳舷挛闹校?/p>

Rule-based programming對(duì)比Constraint programming(在邏輯編程的上下文中)

基于組件編程(如OLE)

面向方面編程(如AspectJ)

符號(hào)式編程(如Mathematica)

面向表格編程(如Microsoft FoxPro)

管道編程(如Unix命令中的管道)

Post-object programming

面向主題編程

自省編程或稱反射編程

本詞條內(nèi)容貢獻(xiàn)者為:

王沛 - 副教授、副研究員 - 中國(guó)科學(xué)院工程熱物理研究所