目錄
內(nèi)存管理、適用 區(qū)別
C
手動(dòng)內(nèi)存管理:C語(yǔ)言沒(méi)有內(nèi)置的安全檢查機(jī)制,容易出現(xiàn)內(nèi)存泄漏、緩沖區(qū)溢出等安全問(wèn)題。
適用于系統(tǒng)級(jí)編程
C++
手動(dòng)內(nèi)存管理:C++需要程序員手動(dòng)管理內(nèi)存,包括分配和釋放內(nèi)存,這可能導(dǎo)致內(nèi)存泄漏和指針錯(cuò)誤。
適用于游戲引擎和系統(tǒng)級(jí)編程
Java
內(nèi)存管理:垃圾收集器自動(dòng)管理內(nèi)存,減少了內(nèi)存泄漏的風(fēng)險(xiǎn)。
平臺(tái)無(wú)關(guān)性:具有“一次編寫(xiě),到處運(yùn)行”的能力,因?yàn)樗ㄟ^(guò)Java虛擬機(jī)(JVM)來(lái)實(shí)現(xiàn)跨平臺(tái)性。
python
快速開(kāi)發(fā):Python重視開(kāi)發(fā)者的生產(chǎn)力,它有豐富的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù),用于快速開(kāi)發(fā)應(yīng)用程序。
js
事件驅(qū)動(dòng)和異步編程:JavaScript使用事件驅(qū)動(dòng)和異步編程模型,處理用戶界面事件和網(wǎng)絡(luò)請(qǐng)求時(shí)
前端+服務(wù)器開(kāi)發(fā):JavaScript最初是一種用于在瀏覽器中添加交互性的腳本語(yǔ)言,現(xiàn)在也可以用于服務(wù)器端開(kāi)發(fā)(Node.js)。
按執(zhí)行方式分類:執(zhí)行效率
編譯型:c、c++
解釋型:python、js
動(dòng)態(tài)解釋型(不用聲明變量類型):python、js
混合:java
按照代碼組織的方式分類:擴(kuò)展/維護(hù)/性能
面向過(guò)程:c
面向?qū)ο螅∣OP):java
封裝性
繼承性
多態(tài)性:覆蓋
多范式(過(guò)程、對(duì)象):c++、js、python
作用域:在作用域末尾自動(dòng)銷毀
函數(shù)
塊{}
js(ES6新增let和const關(guān)鍵字,允許塊級(jí)作用域的變量定義)
類:在類中定義成員變量和成員函數(shù)
除了c(面向過(guò)程)
全局
python(global聲明)
變量提升:js
內(nèi)存管理、適用 區(qū)別
C
手動(dòng)內(nèi)存管理:C語(yǔ)言沒(méi)有內(nèi)置的安全檢查機(jī)制,容易出現(xiàn)內(nèi)存泄漏、緩沖區(qū)溢出等安全問(wèn)題。
適用于系統(tǒng)級(jí)編程
C++
手動(dòng)內(nèi)存管理:C++需要程序員手動(dòng)管理內(nèi)存,包括分配和釋放內(nèi)存,這可能導(dǎo)致內(nèi)存泄漏和指針錯(cuò)誤。
適用于游戲引擎和系統(tǒng)級(jí)編程
Java
內(nèi)存管理:垃圾收集器自動(dòng)管理內(nèi)存,減少了內(nèi)存泄漏的風(fēng)險(xiǎn)。
平臺(tái)無(wú)關(guān)性:具有“一次編寫(xiě),到處運(yùn)行”的能力,因?yàn)樗ㄟ^(guò)Java虛擬機(jī)(JVM)來(lái)實(shí)現(xiàn)跨平臺(tái)性。
python
快速開(kāi)發(fā):Python重視開(kāi)發(fā)者的生產(chǎn)力,它有豐富的標(biāo)準(zhǔn)庫(kù)和第三方庫(kù),用于快速開(kāi)發(fā)應(yīng)用程序。
js
事件驅(qū)動(dòng)和異步編程:JavaScript使用事件驅(qū)動(dòng)和異步編程模型,處理用戶界面事件和網(wǎng)絡(luò)請(qǐng)求時(shí)
前端+服務(wù)器開(kāi)發(fā):JavaScript最初是一種用于在瀏覽器中添加交互性的腳本語(yǔ)言,現(xiàn)在也可以用于服務(wù)器端開(kāi)發(fā)(Node.js)。
按執(zhí)行方式分類:執(zhí)行效率
編譯型:c、c++
在編譯性語(yǔ)言中,源代碼首先被編譯器(compiler)翻譯成機(jī)器碼。這個(gè)翻譯過(guò)程在程序執(zhí)行之前發(fā)生,生成的可執(zhí)行文件可以在不依賴源代碼的情況下多次執(zhí)行,所以速度快
編譯性語(yǔ)言的可執(zhí)行文件通常是與特定平臺(tái)相關(guān)的,因此需要重新編譯以適應(yīng)不同的操作系統(tǒng)或硬件架構(gòu)。
解釋型:python、js
源代碼逐行被解釋器(interpreter)解釋執(zhí)行。代碼行按順序逐行翻譯成機(jī)器代碼并立即執(zhí)行。因此,程序的執(zhí)行是一邊翻譯一邊執(zhí)行的,不需要先編譯成獨(dú)立的可執(zhí)行文件,所以速度慢
解通常在特定的解釋器上運(yùn)行,因此可以跨平臺(tái)執(zhí)行,只要有相應(yīng)的解釋器。
因?yàn)?strong>逐行執(zhí)行,所以方便調(diào)試
動(dòng)態(tài)解釋型(不用聲明變量類型):python、js
混合:java
需要程序快速啟動(dòng)和運(yùn)行時(shí),解釋器可以首先發(fā)揮作用,省去編譯的時(shí)間;
當(dāng)程序運(yùn)行一段時(shí)間后,編譯器可以發(fā)揮作用,將更多的代碼編譯成本地代碼,減少解釋器的中間消耗,獲得更高的執(zhí)行效率。
當(dāng)內(nèi)存限制較大時(shí),使用解釋執(zhí)行節(jié)約內(nèi)存;反之使用編譯執(zhí)行來(lái)提升效率
java可以被編譯成“.class”文件(字節(jié)碼)然后由JVM(Java虛擬機(jī))解釋執(zhí)行的語(yǔ)言。這使得它既具備了跨平臺(tái)性,又可以在運(yùn)行時(shí)獲得一定的性能優(yōu)勢(shì)。
按照代碼組織的方式分類:擴(kuò)展/維護(hù)/性能
面向過(guò)程:c
面向?qū)ο螅∣OP):java
封裝性
就是把屬性和方法都放在一個(gè)類里面,而且還可以通過(guò)訪問(wèn)類的權(quán)限屬性給區(qū)分開(kāi),更加安全,不想要釋放的功能,直接搞成私有機(jī)制。
繼承性
就是把之前已經(jīng)實(shí)現(xiàn)好的代碼或者方法通過(guò)繼承的方法拿過(guò)來(lái)使用,能節(jié)省大量的代碼量,符合代碼設(shè)計(jì)里面的繼承優(yōu)秀代碼特性。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-712447.html
多態(tài)性:覆蓋
由于可以繼承多個(gè)類,能夠組合成多種特性,但多態(tài)的關(guān)鍵是覆蓋,就是同一個(gè)方法可以用不同的方式去實(shí)現(xiàn),展現(xiàn)出多態(tài)性。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-712447.html
class Animal {
speak() {
console.log("Animal makes a sound");
}
}
class Dog extends Animal {
speak() {
console.log("Dog barks");
}
}
class Cat extends Animal {
speak() {
console.log("Cat meows");
}
}
const dog = new Dog();
const cat = new Cat();
dog.speak(); // 輸出 "Dog barks"
cat.speak(); // 輸出 "Cat meows"
多范式(過(guò)程、對(duì)象):c++、js、python
作用域:在作用域末尾自動(dòng)銷毀
函數(shù)
塊{}
js(ES6新增let
和const
關(guān)鍵字,允許塊級(jí)作用域的變量定義)
類:在類中定義成員變量和成員函數(shù)
除了c(面向過(guò)程)
全局
python(global聲明)
變量提升:js
到了這里,關(guān)于c、c++、java、python、js對(duì)比【面向?qū)ο?、過(guò)程;解釋、編譯語(yǔ)言;封裝、繼承、多態(tài)】的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!