(計算機(jī)的數(shù)據(jù)都是以二進(jìn)制的補(bǔ)碼存儲的) https://m.toutiao.com/is/2TCgfoN/?=計算機(jī)組成原理 1. 計算機(jī)基本概念
1.1 什么是計算機(jī)計算機(jī)(Computer)俗稱電腦,是一種高速計算的電子機(jī)器,,可以進(jìn)行數(shù)值運(yùn)算,,邏輯判斷,能夠接收或者是存儲信息數(shù)據(jù)(文本,、圖片,、音頻、視頻),,并且可以按照存儲在其內(nèi)部的程序?qū)A康臄?shù)據(jù)進(jìn)行高速,、自動化的處理,然后將處理的結(jié)果輸出的一種現(xiàn)代化的智能電子設(shè)備,。 1.2 常見的計算機(jī)日常生產(chǎn)和生活中常見的計算機(jī)有手機(jī),、平板電腦、筆記本電腦,、臺式機(jī)都是屬于計算機(jī), 除此以外還有提供各種應(yīng)用(電商,、支付、物流,、金融)的大型服務(wù)器集群(Server Cluster),,服務(wù)器就是一臺高配的電腦,,服務(wù)器一般放在機(jī)房,所以一般人是接觸不到的,,互聯(lián)網(wǎng)公司一般都會安排Linux運(yùn)維工程師管理這些服務(wù)器,,服務(wù)器集群就是成千上萬臺(甚至幾十萬臺,上百萬臺)高配的電腦,。 服務(wù)器 1.3 計算機(jī)的應(yīng)用場景
計算機(jī)的軟硬件的結(jié)合實現(xiàn)了生活中的常見需求
2. 計算機(jī)系統(tǒng)組成計算機(jī)系統(tǒng)是由計算機(jī)硬件系統(tǒng)和計算機(jī)軟件系統(tǒng)兩部分組成 2.1 計算機(jī)硬件系統(tǒng)組成計算機(jī)硬件(Hardware)就是各種客觀存在的計算機(jī)相關(guān)的硬件設(shè)備,,例如CPU、內(nèi)存,、硬盤,、網(wǎng)卡、主板等等,。 2.2 計算機(jī)軟件系統(tǒng)組成計算機(jī)軟件(Software)就是利用計算機(jī)相關(guān)的硬件設(shè)備來完成日常生活中常見的需求,,例如聽歌、看電影,、上網(wǎng),、購物、上網(wǎng)課等等,。這些需求都是需要通過計算機(jī)的軟硬件的協(xié)作來共同完成的,。 計算機(jī)系統(tǒng)組成 3.計算機(jī)硬件系統(tǒng)3.1 計算機(jī)硬件之CPUCPU(Central Processing Unit) 中文是中央處理器,CPU是計算機(jī)中最核心的部件,,類似于人的大腦
CPU主要是用來執(zhí)行計算機(jī)指令以及處理計算機(jī)軟件的數(shù)據(jù)
3.2 計算機(jī)硬件之內(nèi)存內(nèi)存是計算機(jī)的存儲部件,內(nèi)存也被稱為內(nèi)部存儲器,,內(nèi)存的作用就是用于暫時存儲CPU運(yùn)算的數(shù)據(jù)和指令以及和硬盤等外部設(shè)備進(jìn)行數(shù)據(jù)交換,。
但是內(nèi)存的容量一般比較小(16GB-256GB),不能永久存儲數(shù)據(jù),,一旦斷電之后就會丟失數(shù)據(jù),,如果你之前使用過臺式機(jī)開發(fā)程序那么就應(yīng)該深有感觸,臺式機(jī)關(guān)機(jī)之后,,如果之前的數(shù)據(jù)沒有保留就會丟失,,因為臺式機(jī)沒有電池,因此我們以后在使用電腦的使用經(jīng)常使用快捷鍵Ctrl+s/Command+s 將數(shù)據(jù)保存到磁盤,從而實現(xiàn)永久存儲數(shù)據(jù),。 內(nèi)存的廠商有三星,、金斯頓、美商海盜船,、威剛等等 3.3 計算機(jī)硬件之硬盤硬盤是計算機(jī)的存儲部件,,主要是用于永久存儲數(shù)據(jù)(斷電之后數(shù)據(jù)不會丟失),容量比較大,,通常都是TB級,,例如1TB,2TB,,4TB,8TB,,其中1TB=1024GB CPU不能直接訪問硬盤中的數(shù)據(jù),如果想要訪問硬盤中的數(shù)據(jù),,需要使用程序?qū)⒂脖P中的數(shù)據(jù)加載到內(nèi)存中再提供給CPU訪問,。 硬盤分為機(jī)械硬盤和固態(tài)硬盤 機(jī)械硬盤容量大(TB級),價格便宜,,讀寫速度慢,,目前主要機(jī)械硬盤廠商有希捷、西部數(shù)據(jù)
3.4 計算機(jī)硬件之網(wǎng)卡網(wǎng)卡是用于網(wǎng)絡(luò)上的數(shù)據(jù)收發(fā),網(wǎng)卡分為有線網(wǎng)卡和無線網(wǎng)卡,,日常家用的電腦網(wǎng)卡一般是千兆網(wǎng)卡,,而服務(wù)器的網(wǎng)卡是萬兆網(wǎng)卡。 4.計算機(jī)軟件系統(tǒng)4.1 為什么會有軟件假如沒有軟件,,普通人(不懂計算機(jī)的人)是沒有辦法利用計算機(jī)硬件資源來實現(xiàn)日常生活中常見的需求,,例如訂外賣、上網(wǎng),、聽歌,、上網(wǎng)課、看電影,、購物等等,。 4.2 軟件的組成軟件是程序員/軟件工程師/開發(fā)工程師/碼農(nóng)/新型農(nóng)民工采用某種編程語言(C/C++ 4.3軟件的分類軟件分為系統(tǒng)軟件和應(yīng)用軟件兩大類 計算機(jī)系統(tǒng)組成 4.4 軟件的交互方式運(yùn)行在不同操作系統(tǒng)的軟件交互方式是不一樣的
5.計算機(jī)體系結(jié)構(gòu)
計算機(jī)體系結(jié)構(gòu) 6.推薦給Java工程師的計算機(jī)配置6.1 Java項目的開發(fā)流程
開發(fā)環(huán)境使用的操作系統(tǒng)是Windows或者macOS Windows11 macOS12 測試環(huán)境,、生產(chǎn)環(huán)境使用的系統(tǒng)是Linux(CentOS,、Ubuntu Server) CentOS7 CentOS8 Ubuntu Server 20.04 6.2 Java工程師常用的工具6.2.1 開發(fā)環(huán)境(Windows/macOS)
6.2.2 測試環(huán)境/生產(chǎn)環(huán)境(CentOS、Ubuntu Server)
在測試環(huán)境,、生產(chǎn)環(huán)境中一個服務(wù)可能會有多個實例,,比如MySQL服務(wù)一般會部署三臺服務(wù)器 6.3 推薦Java工程師的計算機(jī)配置Java工程師的計算機(jī)硬件配置只需要重點關(guān)注CPU、內(nèi)存,、硬盤即可 學(xué)習(xí)Java相關(guān)的技術(shù)用到幾十個工具,,而且為了有接近真實的項目經(jīng)驗,,還要模擬公司的測試環(huán)境、生產(chǎn)環(huán)境,。 大型的分布式系統(tǒng)架構(gòu)設(shè)計 因此我們需要配置非常高(價格貴)的電腦,但是如果以后你的電腦不能滿足需求(如果低于32G內(nèi)存,,32G內(nèi)存對于開發(fā)夠用),,大家可以去購買阿里云或者是騰訊云的云服務(wù)器用來模擬公司的測試環(huán)境、生產(chǎn)環(huán)境,。
選筆記本還是臺式機(jī)? 6.3.1 Windows+Intel
6.3.2 Mac
MacBookPro 雖然Windows和macOS都可以做Java開發(fā),,但是還是推薦初學(xué)者選擇Windows ,至于理由就是Windows生態(tài)相比macOS系統(tǒng)的生態(tài)更加完善 7. 計算機(jī)常用單位計算機(jī)常用單位指的是計算機(jī)的核心組件(CPU,內(nèi)存,,硬盤,,網(wǎng)卡)相關(guān)的單位,例如容量單位,、速度單位 7.1 計算機(jī)常用容量單位在購買電腦的時候,通常都會選擇高配置的CPU,、內(nèi)存,、硬盤等等,例如Mac Studio已經(jīng)可以選配128GB內(nèi)存,、8TB固態(tài)硬盤 Mac Studio 這里的128GB,、8TB就是常見的容量單位 在物理層面,我們使用高低電平來記錄信息,,通常都是使用高電平表示1,,低電平表示0,因此在計算機(jī)底層只能識別0和1兩種狀態(tài),。但是0和1能夠表示的內(nèi)容太少了,,因此需要更大容量的表示方法,所以出現(xiàn)了如下列表所示的容量單位
它們的換算關(guān)系如下所示 1EB=1024PB1PB=1024TB1TB=1024GB1GB=1024MB1MB=1024KB1KB=1024Byte1Byte=8bit 生活中遇到的一個疑問:為什么我買的4T硬盤的實際可用容量大約是3.63TB 因為計算機(jī)容量單位是以1024進(jìn)行換的,但是硬盤廠商是以1000進(jìn)行換算的 計算機(jī)中4TB硬盤換算成字節(jié)
硬盤廠商4TB硬盤換算成字節(jié) 4TB=4*1000*1000*1000*1000 4T硬盤的實際可用容量
4T硬盤的實際可用容量 7.2 計算機(jī)常用速度單位7.2.1 網(wǎng)速網(wǎng)絡(luò)常用的速度單位是Mbps 網(wǎng)絡(luò)帶寬提供商(長城,、電信等等)聲稱百兆帶寬實際上就是100Mbps,但是100M帶寬的峰值下載速度也就10MB左右,,它們之間的換算關(guān)系是100Mbit/s=(100/8)MB/s=12.5MB/s 7.2.2 CPU速度CPU的速度一般是由CPU的時鐘頻率所體現(xiàn)的,時鐘頻率的單位是赫茲(Hz),目前主流的CPU一般都是2GHz以上,,而赫茲(Hz)就是秒分之一,,也就是每秒鐘的周期性變動重復(fù)次數(shù)的計量。 GHz,、MHz和Hz的換算關(guān)系如下所示 1KHz=1000Hz1MHz=1000KHz1GHz=1000MHz 假如你的計算機(jī)CPU的速度是5GHz
也就是說5GHz的CPU每秒鐘的變化次數(shù)是50億次 Windows系統(tǒng)可以在任務(wù)管理器的性能欄目中看到CPU的基準(zhǔn)速度 8. 計算機(jī) 原碼,、反碼、補(bǔ)碼
8.1 有符號數(shù)和無符號數(shù)生活中的整數(shù)分為正整數(shù)和負(fù)整數(shù),例如+15和-15 計算機(jī)內(nèi)部都是采用二進(jìn)制來存儲數(shù)據(jù),,例如0000 1111和1000 1111 C語言中變量可以使用signed和unsigned來表示有符號數(shù)的變量和無符號數(shù)的變量 Java語言中沒有signed和unsigned這兩個關(guān)鍵字 8.2 原碼,、反碼、補(bǔ)碼原碼,、反碼,、補(bǔ)碼都是數(shù)據(jù)二進(jìn)制的表示方式
十進(jìn)制 +15 二進(jìn)制原碼 0000 1111 (一個字節(jié)) 十進(jìn)制 -15 二進(jìn)制原碼 1000 1111 (一個字節(jié))
正數(shù)的反碼就是原碼 十進(jìn)制 +15 二進(jìn)制原碼 0000 1111 (一個字節(jié)) 二進(jìn)制反碼 0000 1111 (一個字節(jié)) 負(fù)數(shù)的反碼就是原碼的符號位不變,其他位(數(shù)據(jù)位)按位取反(0變1 1變0) 十進(jìn)制 -15 二進(jìn)制原碼 1000 1111 (一個字節(jié)) 二進(jìn)制反碼 1111 0000 (一個字節(jié))
正數(shù)的補(bǔ)碼就是原碼 十進(jìn)制 +15 二進(jìn)制原碼 0000 1111 (一個字節(jié)) 二進(jìn)制反碼 0000 1111 (一個字節(jié)) 二進(jìn)制補(bǔ)碼 0000 1111 (一個字節(jié)) 負(fù)數(shù)的補(bǔ)碼是反碼+1 十進(jìn)制 -15 二進(jìn)制原碼 1000 1111 (一個字節(jié)) 二進(jìn)制反碼 1111 0000 (一個字節(jié)) 二進(jìn)制補(bǔ)碼 1111 0001(一個字節(jié)) 關(guān)于原碼,、反碼,、補(bǔ)碼的轉(zhuǎn)換規(guī)則
為什么原碼,、反碼、補(bǔ)碼需要相互轉(zhuǎn)換
8.3 為什么使用補(bǔ)碼存儲和計算數(shù)據(jù)?
需求1:使用原碼計算1-1 CPU內(nèi)部只有加法器 十進(jìn)制1-1 1 - 1 = 1 + -1 1+ -1 轉(zhuǎn)換成二進(jìn)制原碼
1000 0010 轉(zhuǎn)換成十進(jìn)制結(jié)果是-2 為什么不使用原碼來存儲和計算數(shù)據(jù)?
需求2:使用反碼計算 1-1
CPU內(nèi)部只有加法器 十進(jìn)制1-1 1 - 1 = 1 + -1 1+ -1轉(zhuǎn)換成二進(jìn)制反碼
1111 1111 轉(zhuǎn)換成十進(jìn)制 -127 為什么不使用原碼來存儲和計算數(shù)據(jù)
需求3:使用補(bǔ)碼來計算1-1
CPU內(nèi)部只有加法器 十進(jìn)制1-1 1 - 1 = 1 + -1 轉(zhuǎn)換成二進(jìn)制的補(bǔ)碼
因為補(bǔ)碼解決了原碼,、反碼的兩個問題,,因此計算機(jī)會使用補(bǔ)碼來存儲和運(yùn)算數(shù)據(jù)。 9. 計算機(jī)進(jìn)制9.1 計算機(jī)進(jìn)制介紹進(jìn)制是一種計數(shù)的方式,,也稱為進(jìn)位計數(shù)法或者位值計數(shù)法,進(jìn)制使用有限的數(shù)字符號表示無限的數(shù)值,,使用的數(shù)字符號的數(shù)量稱為這種進(jìn)制的基數(shù)或者是底數(shù),,例如十進(jìn)制就是由0-9之間的十個數(shù)字組成的。 相同進(jìn)制類型的數(shù)據(jù)在進(jìn)行運(yùn)算的時候會遵守:加法:逢R進(jìn)1,,減法:借1當(dāng)R,,這里的R表示進(jìn)制 計算機(jī)常用的進(jìn)制有十進(jìn)制、二進(jìn)制,、八進(jìn)制,、十六進(jìn)制四種。
1234=1000+200+30+4=1*10^3 + 2*10^2 + 3*10^1+ 4*10^0
9.2 正整數(shù)的十進(jìn)制和二進(jìn)制相互轉(zhuǎn)換
9.2.1 正整數(shù)的十進(jìn)制轉(zhuǎn)二進(jìn)制9.2.1.1 除2取余法除2取余法:使用十進(jìn)制正整數(shù)不斷除以2取數(shù)余數(shù),直到商為0時將余數(shù)逆序排序 需求:將正整數(shù)89使用除2取余法轉(zhuǎn)換為二進(jìn)制 轉(zhuǎn)換過程 使用Windows自帶的計算器驗證結(jié)果
使用Windows自帶的計算器驗證結(jié)果 9.2.1.2 拆分法拆分法:將十進(jìn)制整數(shù)拆分為若干個二進(jìn)制權(quán)重的和,,有權(quán)重下面寫1,,沒有就寫0 但是使用拆分法的時候需要提前了解二進(jìn)制權(quán)重和十進(jìn)制對應(yīng)關(guān)系關(guān)系
需求:使用拆分法實現(xiàn)將正整數(shù)89轉(zhuǎn)換成二進(jìn)制 89=64+16+8+1
9.2.2 正整數(shù)的二進(jìn)制轉(zhuǎn)十進(jìn)制加權(quán)法加權(quán)法:使用二進(jìn)制中的每個數(shù)字乘以當(dāng)前位的權(quán)重再累加起來 需求:將二進(jìn)制整數(shù) 1011001 轉(zhuǎn)成十進(jìn)制 1011001=1*2^0 + 1*2^3 + 1*2^4 + 1*2^6= 1+8 +16+ 64=89 9.3 負(fù)整數(shù)的十進(jìn)制和二進(jìn)制相互轉(zhuǎn)換9.3.1 負(fù)整數(shù)的十進(jìn)制轉(zhuǎn)換二進(jìn)制負(fù)整數(shù)的十進(jìn)制轉(zhuǎn)換二進(jìn)制:求十進(jìn)制負(fù)整數(shù)的補(bǔ)碼
需求:將十進(jìn)制的負(fù)整數(shù)-89轉(zhuǎn)換成二進(jìn)制補(bǔ)碼 實現(xiàn)步驟:
因此通過以上的步驟計算機(jī)出來負(fù)整數(shù)-89轉(zhuǎn)換成二進(jìn)制的結(jié)果是1010 0111(一個字節(jié)) 如何驗證這個結(jié)果是正確的,? 89+ -89=0 89的二進(jìn)制 0101 1001 -89的二進(jìn)制 1010 0111 相加的結(jié)果 1 0000 0000 這里的結(jié)果產(chǎn)生了高位溢出,最后的結(jié)果是0 還可以使用Windows的計算器驗證結(jié)果 這里的結(jié)果默認(rèn)是64位,,從右往左截取8位的結(jié)果就是1010 0111 驗證結(jié)果 9.3.2 負(fù)整數(shù)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制負(fù)整數(shù)的二進(jìn)制轉(zhuǎn)換為十進(jìn)制:根據(jù)補(bǔ)碼求原碼
需求:將二進(jìn)制的負(fù)整數(shù)1010 0111轉(zhuǎn)換成十進(jìn)制 實現(xiàn)步驟:
10. 計算機(jī)字符編碼和字符集10.1 計算機(jī)字符編碼上面說到計算機(jī)底層只能識別二進(jìn)制,,而我們在計算機(jī)中看到的數(shù)字,、英文、中文等字符都是二進(jìn)制轉(zhuǎn)換之后的結(jié)果,。 按照某種規(guī)則將字符存儲到計算機(jī)中稱為編碼,,編碼的本質(zhì)就是將字符轉(zhuǎn)換為字節(jié)存儲,而反過來將存儲在計算機(jī)中的二進(jìn)制數(shù)按照某種規(guī)則解析顯示出來稱為解碼,,解碼的本質(zhì)就是將存儲的的字節(jié)轉(zhuǎn)換為字符,。 字符編碼(Character Encoding)就是一套自然語言的字符與二進(jìn)制數(shù)之間的對應(yīng)規(guī)則,例如ASCII字符編碼中 字符a對應(yīng)的二進(jìn)制是01100001,,轉(zhuǎn)換為十進(jìn)制就是97 如果編碼和解碼的規(guī)則一樣就不會出現(xiàn)亂碼 例如在Visual Studio Code中以UTF-8編碼保存一個文本文件,,然后通過GBK編碼打開時則會出現(xiàn)中文亂碼,而英文部分沒有亂碼的原因是因為GBK和UTF-8編碼處理英文的方式相同,。 10.2 計算機(jī)字符集字符集(Charset)也叫作編碼表,,是一個系統(tǒng)支持的所有字符的集合,包括各個國家的文字,、標(biāo)點符號,、圖形符號,,數(shù)學(xué)符號、數(shù)字等等,。 計算機(jī)要準(zhǔn)確的存儲和識別各種字符集符號,,需要進(jìn)行字符編碼,一套字符集必然至少有一套字符集編碼,。常見字符集有ASCII字符集,、GBK字符集、Unicode字符集等,。 常用的字符集和字符編碼 從上圖可知當(dāng)指定了字符集編碼后,,它所對應(yīng)的字符集自然就指定了,因此字符集編碼才是我們真正應(yīng)該關(guān)心的,。
常用的中文字符集有GB2312,GBK,GB18030 GB2312:簡體中文碼表,。一個小于127的字符的意義與原來相同,。但兩個大于127的字符連在一起時,就表示一個漢字,,這樣大約可以組合了包含7000多個簡體漢字,,此外數(shù)學(xué)符號、羅馬希臘的字母,、日文的假名們都編進(jìn)去了,,連在ASCII里本來就有的數(shù)字、標(biāo)點,、字母都統(tǒng)統(tǒng)重新編了兩個字節(jié)長的編碼,,這就是常說的'全角'字符,而原來在127號以下的那些就叫'半角'字符了,。 GBK:最常用的中文碼表,。是在GB2312標(biāo)準(zhǔn)基礎(chǔ)上的擴(kuò)展規(guī)范,,使用了雙字節(jié)編碼方案,共收錄了21003個漢字,,完全兼容GB2312標(biāo)準(zhǔn),,同時支持繁體漢字以及日韓漢字等。 GB18030:最新的中文碼表,。收錄漢字70244個,,采用多字節(jié)編碼,每個字可以由1個,、2個或4個字節(jié)組成,。支持中國國內(nèi)少數(shù)民族的文字,同時支持繁體漢字以及日韓漢字等,。
它最多使用4個字節(jié)的數(shù)字來表達(dá)每個字母,、符號,,或者文字。有三種編碼方案,,UTF-8,、UTF-16和UTF-32,最為常用的UTF-8編碼,。 UTF-8編碼,,可以用來表示Unicode標(biāo)準(zhǔn)中任何字符,它是電子郵件,、網(wǎng)頁及其他存儲或傳送文字的應(yīng)用中,,優(yōu)先采用的編碼?;ヂ?lián)網(wǎng)工程工作小組(IETF)要求所有互聯(lián)網(wǎng)協(xié)議都必須支持UTF-8編碼,。所以,,我們開發(fā)Web應(yīng)用,也要使用UTF-8編碼,。它使用一至四個字節(jié)(可變長度)為每個字符編碼,,編碼規(guī)則:
字符集規(guī)定了字符對應(yīng)存儲的二進(jìn)制數(shù),,字符集編碼規(guī)定了字符存儲時對應(yīng)占據(jù)的存儲空間。 同一段文本內(nèi)容,,使用不同的編碼存儲所占據(jù)的內(nèi)存大小也是不相同的 測試文本內(nèi)容 我是中國人 I am Chinese 使用UTF-8編碼保存時占據(jù)28個字節(jié) UTF-8編碼文件大小 使用GBK編碼保存時占據(jù)23個字節(jié) GBK編碼文件大小 因為中文內(nèi)容'我是中國人'使用GBK編碼保存時每個中文字符占據(jù)2個字節(jié),,而使用UTF-8編碼保存時每個中文占據(jù)3個字節(jié) 11.計算機(jī)語言發(fā)展史11.1 什么是計算機(jī)語言語言是人和人之間進(jìn)行溝通交流的一種表達(dá)方式,例如中國人和中國人之間使用漢語進(jìn)行交流,,中國人和美國人之間使用漢語或者是英語進(jìn)行交流,,溝通交流的前提就是要使用雙方都能夠理解的語言。 計算機(jī)語言也叫編程語言,,因為學(xué)習(xí)計算機(jī)語言的目的就是為了開發(fā)程序(編程) 計算機(jī)語言是人(程序員、開發(fā)者,、軟件工程師)和計算機(jī)之間進(jìn)行溝通交流的一種表達(dá)方式,,該語言有很多種,主流的語言有20多種,,我們學(xué)習(xí)Java開發(fā)時會學(xué)習(xí)Java,、SQL、JavaScript,、Scala等等 11.2 計算機(jī)語言發(fā)展史任何事物都是從無到有逐漸發(fā)展壯大起來的,,計算機(jī)語言也是一樣的。 計算機(jī)語言經(jīng)歷了機(jī)器語言,、匯編語言,、高級語言(高級程序設(shè)計語言、高級編程語言)三個階段,,其特點就是讓程序的開發(fā),、測試、部署變得越來越高效,、簡單,、方便,。不過是以犧牲運(yùn)行效率(性能)為代價的,但是隨著計算機(jī)硬件的光速發(fā)展,,在絕大多數(shù)應(yīng)用場景下的性能損失可以忽略不計,。
計算機(jī)發(fā)展的早期,程序員采用二進(jìn)制(01010101)的機(jī)器指令來編寫程序,而每種CPU都有各自不同的指令系統(tǒng)(Ultra SPARC/Intel X86/ARM),這樣導(dǎo)致在不同的機(jī)器上同一套程序需要使用不同的機(jī)器語言,,機(jī)器語言的特點是運(yùn)行效率最高的,,不過面向機(jī)器編程的程序是不能移植的,需要手動處理底層硬件的差異性,,而且二進(jìn)制機(jī)器指令編寫的程序難以理解和維護(hù),。
隨著時代和計算機(jī)技術(shù)的發(fā)展,后來就出現(xiàn)了匯編語言,,匯編語言和匯編器(編譯器)的出現(xiàn)解決了機(jī)器語言需要記住非常多的機(jī)器指令,,但是沒有從根本上解決程序的移植性問題,只是將機(jī)器語言的指令轉(zhuǎn)換成了人類更佳容易理解的英文單詞,然后由匯編器編譯成機(jī)器能夠識別的機(jī)器指令,,因為計算機(jī)最終只能夠識別二進(jìn)制的機(jī)器指令,,而且匯編語言是面向機(jī)器的,不同機(jī)器的匯編指令是不一樣的,。盡管如此匯編語言在工業(yè)電子編程,、軟件的加密解密以及計算機(jī)病毒分析等等場景使用。
高級語言的高級之處體現(xiàn)在開發(fā)人員在編寫程序的時候不需要關(guān)注計算機(jī)底層硬件的差異性,,只需要關(guān)注實現(xiàn)的業(yè)務(wù)模塊即可,。 高級語言按照編程思想分類分成面向過程和面向?qū)ο髢纱箢?,例如C語言就是面向過程的,Java、Python就是面向?qū)ο?br>高級語言按照運(yùn)行機(jī)制分成編譯型和解釋型兩類 12. 計算機(jī)語言應(yīng)用場景12.1 Tiobe編程語言排行榜和走勢目前主流的編程語言有哪些? 我們可以訪問Tiobe編程排行榜查看當(dāng)前編程語言的排行榜 Tiobe編程語言排行榜 Tiobe編程語言排行版
Tiobe還提供了編程語言走勢圖,,從歷史趨勢可以看出Java和C語言是常年霸榜 12.2 主流編程語言應(yīng)用場景每種編程語言都是自己擅長的應(yīng)用場景(開發(fā)方向),大家可以根據(jù)自己的喜好(市場需求)選擇對應(yīng)的編程語言,。
那么如果你作為一名初學(xué)者,,面對如此之多的編程語言,,到底從哪一門語言開始上車 如果你想要深入學(xué)習(xí)其他語言、框架,、中間件,、架構(gòu)的知識之前建議深入掌握J(rèn)ava,因為Java語言上手容易,、功能強(qiáng)大,,無論是中間件、大數(shù)據(jù),、大型分布式系統(tǒng),、Android App都可以使用Java開發(fā),目前在招聘市場中需求旺盛,,大家可以去招聘網(wǎng)站(Boss直聘,、拉勾)搜索了解詳細(xì)的招聘要求。 Java招聘要求 但是無論學(xué)習(xí)哪種編程語言,,都是實現(xiàn)目標(biāo)的工具,,而不是目標(biāo)本身。 |
|