摘要:參考鏈接面向?qū)ο缶幊棠P同F(xiàn)在的很多編程語(yǔ)言基本都具有面向?qū)ο蟮乃枷耄热绲鹊龋嫦驅(qū)ο蟮闹饕枷雽?duì)象,類(lèi),繼承,封裝,多態(tài)比較容易理解,這里就不多多描述了。
前言
在我們的日常日發(fā)和學(xué)習(xí)生活中會(huì)常常遇到一些名詞,比如 命令式編程模型,聲明式編程模型,xxx語(yǔ)言是面向?qū)ο?/b>的等等,這個(gè)編程模型到處可見(jiàn),但是始終搞不清是什么?什么語(yǔ)言又是什么編程模型,當(dāng)你新接觸一門(mén)語(yǔ)言的時(shí)候,有些問(wèn)題是需要首先去思考的,比如“這門(mén)語(yǔ)言的編程模型是什么?” 為此。這里整理了一些常見(jiàn)的編程模型,可能不會(huì)對(duì)每一種編程模型說(shuō)的非常詳細(xì)(受限于水平),以及大致介紹每種編程模型的大概信息。
概念解釋模型是對(duì)事物共性的抽象,編程模型就是對(duì)編程的共性的抽象。
什么是編程的共性呢?
最重要的共性就是:程序設(shè)計(jì)時(shí),代碼的抽象方式、組織方式或復(fù)用方式。編程模型主要是方法與思想。編程模型處于方法或思想性的層面,在很多情況下,也可稱(chēng)為編程方法、編程方式、編程模式或編程技術(shù)、編程范式。在這里就當(dāng)做同一種說(shuō)法。介紹編程模型的時(shí)候主要通過(guò)不同的編程語(yǔ)言來(lái)解釋。
參考鏈接:http://www.cnblogs.com/xsmm/a...
文章中的說(shuō)法如有不對(duì),歡迎留言指正!同時(shí)也歡迎提意見(jiàn)補(bǔ)充內(nèi)容,完善文章。
分類(lèi)下面是個(gè)人整理的一些常見(jiàn)編程模型,可能還有更多。。。
命令式(過(guò)程式)編程模型
聲明式編程模型
面向?qū)ο缶幊棠P?/p>
函數(shù)式編程模型
原型編程模型
混合式編程模型
基于棧的編程模型
基于邏輯的編程模型
待續(xù)。。。。。。。。
1.命令式編程模型(Imperative Programming)個(gè)人覺(jué)得命令式和過(guò)程式是一個(gè)意思,都是一種面向過(guò)程的思想。命令式編程的意思是,程序員需要一步步寫(xiě)清楚程序需要如何做什么(How to do What)。我們平時(shí)使用的編程語(yǔ)言,比如C++、Java等,都有命令式編程的思想。
什么叫做程序需要如何做什么(How to do What)呢?和下個(gè)編程模型聲明式一起舉例說(shuō)明。
2.聲明式編程模型(Declarative Programming)聲明式編程的意思是,程序員不需要一步步告訴程序如何做,只需要告訴程序在哪些地方做什么(Where to do What)。
比如關(guān)系數(shù)據(jù)庫(kù)的結(jié)構(gòu)化數(shù)據(jù)查詢(xún)語(yǔ)言SQL。SQL也是一門(mén)聲明式語(yǔ)言,SQL只需要告訴數(shù)據(jù)庫(kù),處理符合一定條件的數(shù)據(jù),而不需要自己一步步判斷每一條數(shù)據(jù)是否符合條件。SQL的形式一般是 select … where …,update … where …,delete … where …。當(dāng)然,這樣一來(lái),很多基層工作,SQL做不了。因此,大部分?jǐn)?shù)據(jù)庫(kù)都提供了另外的命令式編程語(yǔ)言,用來(lái)編寫(xiě)存儲(chǔ)過(guò)程等,以便處理一些更加細(xì)節(jié)的工作。
這里的SQL的where 等等關(guān)鍵字所帶的各種條件就是告訴程序在哪些地方做什么。而不需要寫(xiě)的非常詳細(xì)。而很細(xì)致的問(wèn)題就是程序需要如何做什么,就需要命令式。
參考鏈接:http://developer.51cto.com/ar...
3.面向?qū)ο缶幊棠P停∣bject-oriented programming)現(xiàn)在的很多編程語(yǔ)言基本都具有面向?qū)ο蟮乃枷耄热鏹ava,PHP等等,而面向?qū)ο?/b>的主要思想:對(duì)象,類(lèi),繼承,封裝,多態(tài)比較容易理解,這里就不多多描述了。
通過(guò)目前三種編程模型的分析,發(fā)現(xiàn)很多編程語(yǔ)言在設(shè)計(jì)的時(shí)候采用的編程模型就是一個(gè)混合的模式,并不是一定只有其中的一種。
4.函數(shù)式編程模型(Functional programming)在看關(guān)于 JavaScript 和 Python 的介紹的時(shí)候,很多文章會(huì)提到JavaScript和 Python是一門(mén)函數(shù)式語(yǔ)言。就個(gè)人的理解而已,JavaScript和 Python不是一門(mén)純函數(shù)式語(yǔ)言,具體原因請(qǐng)查看下面的鏈接,再結(jié)合 JavaScript 和 Python的特性就知道了。代表語(yǔ)言有:Lisp Erlang(Ericsson Language) Haskell .
對(duì)于函數(shù)式編程的更細(xì)致的說(shuō)明,請(qǐng)看阮一峰老師的文章:
http://www.ruanyifeng.com/blo...
原型編程模型個(gè)人是認(rèn)為是一個(gè)非常重要的編程模型,但是上學(xué)的時(shí)候課本卻沒(méi)有講,很遺憾。而原型編程模型的代表是現(xiàn)在很火的 JavaScript,此外還有 IO ,Lua , Self 等等.而JavaScript在設(shè)計(jì)之初就參考過(guò)IO ,Self。
原型編程模型的主要思想就是用對(duì)象而不是用類(lèi)來(lái)作為定義對(duì)象甚至繼承的基礎(chǔ)。一般所見(jiàn)的關(guān)鍵內(nèi)容就是 原型鏈 ,委托繼承等等。
目前知識(shí)不夠,以后再補(bǔ)充。
6.混合式編程模型(Hybrid programming)就是采用多種編程模型開(kāi)設(shè)計(jì)程序或者編程語(yǔ)言。比如 Scala , Java 等等
7.基于棧的編程模型(Stack-based programming)這個(gè)是一個(gè)比較少見(jiàn)的編程模型,代表語(yǔ)言有 PostScript / Forth。主要思想是使用一個(gè)或者多個(gè)棧作為語(yǔ)言的核心特征。
8.基于邏輯的編程模型(Logic-based programming)這個(gè)同樣是一個(gè)比較少見(jiàn)的編程模型,代表語(yǔ)言有 Prolog。 以規(guī)則(rule)為中心建立起來(lái)的編程模型。
文章部分內(nèi)容參考:《七周七語(yǔ)言:理解多種編程范式》備注
還有一些服務(wù)器網(wǎng)絡(luò)編程模型,并發(fā)編程模型等等,但是這些編程模型不是編程語(yǔ)言層面的,是針對(duì)具體業(yè)務(wù)而想出的解決辦法,所以不是和上面的編程模型是同一個(gè)層面的。
待續(xù)。。。。。。。。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/68141.html
摘要:在函數(shù)式編程中數(shù)據(jù)在由純函數(shù)組成的管道中傳遞。函數(shù)式編程中函子是實(shí)現(xiàn)了函數(shù)的容器下文中將函子視為范疇,模型可表示如下但是在函數(shù)式編程中要避免使用這種面向?qū)ο蟮木幊谭绞饺《畬?duì)外暴露了一個(gè)的接口也稱(chēng)為。 showImg(https://segmentfault.com/img/remote/1460000018101204); 該系列會(huì)有 3 篇文章,分別介紹什么是函數(shù)式編程、剖析函數(shù)...
摘要:匿名函數(shù)是我們喜歡的一個(gè)重要原因,也是,它們分別消除了很多代碼細(xì)節(jié)上需要命名變量名或函數(shù)名的需要。這個(gè)匿名函數(shù)內(nèi),有更多的操作,根據(jù)的結(jié)果針對(duì)目錄和文件做了不同處理,而且有遞歸。 能和微博上的 @響馬 (fibjs作者)掰扯這個(gè)問(wèn)題是我的榮幸。 事情緣起于知乎上的一個(gè)熱貼,諸神都發(fā)表了意見(jiàn): https://www.zhihu.com/questio... 這一篇不是要說(shuō)明白什么是as...
摘要:這里推薦一本書(shū)源碼剖析源碼剖析豆瓣這本書(shū)把源碼中最核心的部分,給出了詳細(xì)的闡釋?zhuān)贿^(guò)閱讀此書(shū)需要對(duì)語(yǔ)言?xún)?nèi)存模型和指針有著很好的理解。 是否非常想學(xué)好 Python,一方面被瑣事糾纏,一直沒(méi)能動(dòng)手,另一方面,擔(dān)心學(xué)習(xí)成本太高,心里默默敲著退堂鼓? 幸運(yùn)的是,Python 是一門(mén)初學(xué)者友好的編程語(yǔ)言,想要完全掌握它,你不必花上太多的時(shí)間和精力。 Python 的設(shè)計(jì)哲學(xué)之一就是...
摘要:最黑科技的玩法就是字節(jié)碼編程,也就是動(dòng)態(tài)修改或是動(dòng)態(tài)生成字節(jié)碼。使用字節(jié)碼編程可以玩出很多高級(jí)玩法,其中最高級(jí)的玩法是在程序運(yùn)行時(shí)進(jìn)行字節(jié)碼修改和代碼注入。 showImg(https://segmentfault.com/img/bVbkqqg?w=1142&h=640);這個(gè)是我訂閱 陳皓老師在極客上的專(zhuān)欄《左耳聽(tīng)風(fēng)》,我貼出來(lái)是為了自己以后方便學(xué)習(xí)和記憶,同時(shí)也分享給你們一起學(xué)習(xí)...
閱讀 1951·2021-09-07 10:24
閱讀 2086·2019-08-30 15:55
閱讀 2037·2019-08-30 15:43
閱讀 668·2019-08-29 15:25
閱讀 1043·2019-08-29 12:19
閱讀 1927·2019-08-23 18:32
閱讀 1515·2019-08-23 17:59
閱讀 946·2019-08-23 12:22