動(dòng)態(tài)語(yǔ)言、動(dòng)態(tài)類(lèi)型語(yǔ)言、靜態(tài)類(lèi)型語(yǔ)言、強(qiáng)類(lèi)型語(yǔ)言、弱類(lèi)型語(yǔ)言介紹
關(guān)于如題這幾個(gè)概念,大部分人應(yīng)該比較熟悉,但是我昏了好久,所以寫(xiě)下來(lái)加深印象。
1. 動(dòng)態(tài)語(yǔ)言
又叫動(dòng)態(tài)編程語(yǔ)言,是指程序在運(yùn)行時(shí)可以改變其結(jié)構(gòu):新的函數(shù)可以被引進(jìn),已有的函數(shù)可以被刪除等在結(jié)構(gòu)上的變化。比如眾所周知的ECMAScript(JavaScript)便是一個(gè)動(dòng)態(tài)語(yǔ)言。除此之外如Ruby、Python等也都屬于動(dòng)態(tài)語(yǔ)言,而C、C++等語(yǔ)言則不屬于動(dòng)態(tài)語(yǔ)言。
而其實(shí)我們平時(shí)說(shuō)的“動(dòng)態(tài)語(yǔ)言”應(yīng)該指的是“動(dòng)態(tài)類(lèi)型語(yǔ)言”。至少我之前一直是這么認(rèn)為的。
2. 動(dòng)態(tài)類(lèi)型語(yǔ)言
在運(yùn)行時(shí),確定類(lèi)型的語(yǔ)言。
即編譯時(shí)與類(lèi)型無(wú)關(guān)。一般在變量使用之前不需要聲明變量類(lèi)型,而變量的類(lèi)型通常是由被賦的值的類(lèi)型決定。 如php、Python和Ruby。
3. 靜態(tài)烈性語(yǔ)言
與動(dòng)態(tài)類(lèi)型語(yǔ)言正好相反,在編譯時(shí),便需要確定類(lèi)型的語(yǔ)言。即寫(xiě)程序時(shí)需要明確聲明變量類(lèi)型。如C/C++、Java、C#等。
對(duì)于動(dòng)態(tài)語(yǔ)言與靜態(tài)語(yǔ)言的區(qū)分,套用一句流行的話就是:Static typing when possible, dynamic typing when needed。
4. 強(qiáng)類(lèi)型語(yǔ)言
強(qiáng)制數(shù)據(jù)類(lèi)型定義的語(yǔ)言。也就是說(shuō),一旦一個(gè)變量被指定了某個(gè)數(shù)據(jù)類(lèi)型,如果不經(jīng)過(guò)強(qiáng)制轉(zhuǎn)換,那么它就永遠(yuǎn)是這個(gè)數(shù)據(jù)類(lèi)型了。
強(qiáng)類(lèi)型定義語(yǔ)言是類(lèi)型安全的語(yǔ)言。
5. 弱類(lèi)型定義語(yǔ)言
數(shù)據(jù)類(lèi)型可以被忽略的語(yǔ)言。它與強(qiáng)類(lèi)型定義語(yǔ)言相反, 一個(gè)變量可以賦不同數(shù)據(jù)類(lèi)型的值。
強(qiáng)類(lèi)型定義語(yǔ)言在速度上可能略遜色于弱類(lèi)型定義語(yǔ)言,但是強(qiáng)類(lèi)型定義語(yǔ)言帶來(lái)的嚴(yán)謹(jǐn)性能夠有效的避免許多錯(cuò)誤。
另外,由上邊看出“這門(mén)語(yǔ)言是不是動(dòng)態(tài)類(lèi)型語(yǔ)言”與“這門(mén)語(yǔ)言是否類(lèi)型安全”之間是完全沒(méi)有聯(lián)系的!
- 使弱類(lèi)型的語(yǔ)言JavaScript變強(qiáng)勢(shì)
- 編程語(yǔ)言里的靜態(tài)、動(dòng)態(tài)、強(qiáng)類(lèi)型、弱類(lèi)型等概念介紹
- php判斷變量類(lèi)型常用方法
- PHP 變量類(lèi)型的強(qiáng)制轉(zhuǎn)換
- php 文件上傳后綴名與文件類(lèi)型對(duì)照表(幾乎涵蓋所有文件)
- php 網(wǎng)頁(yè)播放器用來(lái)播放在線視頻的代碼(自動(dòng)判斷并選擇視頻文件類(lèi)型)
- 淺析php數(shù)據(jù)類(lèi)型轉(zhuǎn)換
- 使用php判斷瀏覽器的類(lèi)型和語(yǔ)言的函數(shù)代碼
- PHP 八種基本的數(shù)據(jù)類(lèi)型小結(jié)
- PHP弱類(lèi)型的安全問(wèn)題詳細(xì)總結(jié)
相關(guān)文章
詳解使用內(nèi)網(wǎng)穿透工具Ngrok代理本地服務(wù)
本文主要介紹了使用內(nèi)網(wǎng)穿透工具Ngrok代理本地服務(wù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
最適合人工智能開(kāi)發(fā)的5種編程語(yǔ)言 附人工智能入門(mén)書(shū)籍
這篇文章主要為大家詳細(xì)介紹了最適合人工智能開(kāi)發(fā)的5種編程語(yǔ)言,并為大家推薦人工智能入門(mén)書(shū)籍,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-11-11
解析jetbrains IDE的插件加載不出來(lái)的問(wèn)題(IDEA、pycharm等)
這篇文章主要介紹了解析jetbrains IDE的插件加載不出來(lái)(IDEA、pycharm等),本文給大家分享解決方案,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
解決appcode打開(kāi)workspace無(wú)法找到xcodeproj項(xiàng)目文件問(wèn)題
這篇文章主要介紹了解決appcode打開(kāi)workspace無(wú)法找到xcodeproj項(xiàng)目文件問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
gradle+shell實(shí)現(xiàn)自動(dòng)系統(tǒng)簽名
這篇文章主要介紹了gradle+shell實(shí)現(xiàn)自動(dòng)系統(tǒng)簽名的相關(guān)資料,需要的朋友可以參考下2019-08-08
IDEA出現(xiàn)java:程序包javax.servlet不存在問(wèn)題解決方法
這篇文章主要給大家介紹了關(guān)于IDEA出現(xiàn)java:程序包javax.servlet不存在問(wèn)題的解決方法,這個(gè)錯(cuò)誤提示意味著你的Java程序中缺少了javax.servlet這個(gè)包,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11
Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法總結(jié)
這篇文章主要介紹了Matlab使用Plot函數(shù)實(shí)現(xiàn)數(shù)據(jù)動(dòng)態(tài)顯示方法總結(jié),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02

