日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

計(jì)算機(jī)科學(xué)與技術(shù)

 F2967527 2019-12-15

程序和指令

程序是為了完成某項(xiàng)任務(wù)(例如聊天、聽音樂)而使用某種編程語言(例如C/C++)編寫的一組指令序列。

而指令是計(jì)算機(jī)程序控制的最小單位,由操作碼和操作數(shù)組成,操作碼是計(jì)算機(jī)要執(zhí)行什么操作,例如加減乘除操作,而操作數(shù)具體執(zhí)行的對象,具體的數(shù)據(jù)以及數(shù)據(jù)的位置。

所有指令的集合稱為指令系統(tǒng),常見的PC機(jī)指令系統(tǒng)有Intel X86指令集,常見的手機(jī)指令系統(tǒng)有ARM,因此手機(jī)上的程序不加修改是不能直接在PC機(jī)上運(yùn)行,因?yàn)椴煌闹噶罴遣患嫒莸摹?/p>

那么計(jì)算機(jī)是如何處理程序的?

根據(jù)馮諾依曼計(jì)算機(jī)結(jié)構(gòu)的原理,計(jì)算機(jī)的工作流程大致如下

當(dāng)用戶從計(jì)算機(jī)中打開程序時(shí)(鼠標(biāo)點(diǎn)擊桌面的快捷方式圖標(biāo)),程序開始執(zhí)行。

操作系統(tǒng)將程序的指令和相關(guān)的數(shù)據(jù)傳送到內(nèi)存中。

CPU根據(jù)程序內(nèi)容從內(nèi)存中讀取指令。

CPU分析、處理指令,并為下一條指令做準(zhǔn)備,如果有涉及到調(diào)用硬件資源(例如調(diào)用聲卡播放音樂)的指令,操作系統(tǒng)會通過調(diào)用對應(yīng)的硬件驅(qū)動程序來實(shí)現(xiàn)調(diào)用硬件的功能。

CPU取下一條指令并分析、處理,如此重復(fù)操作,直到執(zhí)行完程序中的全部指令,最后將計(jì)算的結(jié)果放到指令指定的存儲器地址中。

計(jì)算機(jī)編程語言發(fā)展史

計(jì)算機(jī)已經(jīng)成為人類大腦的延伸,成為不可或缺的一部分。而算法是計(jì)算機(jī)的靈魂,編程語言是塑造計(jì)算機(jī)靈魂的工具。讓計(jì)算機(jī)具備'靈魂',可以按照人的意志運(yùn)行,甚至某天按照計(jì)算機(jī)自己的意志運(yùn)行,其核心就是算法。

計(jì)算機(jī)程序設(shè)計(jì)語言經(jīng)歷了機(jī)器語言到匯編語言和高級程序設(shè)計(jì)語言三個(gè)階段,其特點(diǎn)是使得程序員用編程語言開發(fā)、測試、部署應(yīng)用程序越來越方便、高效。但是是以犧牲效率為代價(jià),但是隨著計(jì)算機(jī)硬件的快速發(fā)展,絕大多數(shù)應(yīng)用場景的效率損失可以忽略不計(jì)。

  • 機(jī)器語言

計(jì)算機(jī)發(fā)展的最早期,程序員編寫程序采用二進(jìn)制的指令(010010101)來實(shí)現(xiàn)的,而每種CPU都有各自不同的指令系統(tǒng)(SPARC/Intel X86/ARM),因此在不同的機(jī)器上使用不同的機(jī)器語言實(shí)現(xiàn)。其特點(diǎn)是性能特別高效,而面向機(jī)器編程也就意味著不能移植,需要手動處理底層硬件的差異性,而且二進(jìn)制的指令難以理解和維護(hù)。

  • 匯編語言

隨著時(shí)代和計(jì)算機(jī)技術(shù)的發(fā)展,匯編語言和編譯器的出現(xiàn)解決了機(jī)器語言需要記住非常多的二進(jìn)制機(jī)器指令的難題,但是還是沒有從根本上解決移植性的問題,只是將機(jī)器指令轉(zhuǎn)換為易懂的英文單詞,然后由編譯器編譯成機(jī)器指令,因?yàn)橛?jì)算機(jī)終歸揭底只能識別二進(jìn)制的0001110100110機(jī)器指令,而且匯編語言是面向機(jī)器的,不同機(jī)器(SPARC/Intel X86/ARM)的匯編指令是不相同的。盡管如此匯編語言目前仍然在工業(yè)電子編程、軟件的加密解密和計(jì)算機(jī)病毒分析等場景廣泛使用。

  • 高級程序設(shè)計(jì)語言

高級程序設(shè)計(jì)語言的高級之處體現(xiàn)在開發(fā)人員在編寫程序時(shí)無需關(guān)心計(jì)算機(jī)底層硬件差異而只需要專注于業(yè)務(wù)模塊實(shí)現(xiàn)即可。而且相對于機(jī)器語言、匯編語言而言,高級語言學(xué)習(xí)起來更加容易,因此會有更加充足的人力資源,也更容易開發(fā)大型商業(yè)軟件,例如Windows、macOS、Linux等操作系統(tǒng)都是使用C/C++實(shí)現(xiàn)。國內(nèi)的阿里巴巴在電商、物流、金融、支付領(lǐng)域大量使用Java實(shí)現(xiàn)。

計(jì)算機(jī)語言應(yīng)用場景

如果想知道目前主流的編程語言有哪些,可以訪問tiobe 首頁獲取編程語言排行榜。

2019年12月編程語言排行榜Top20

計(jì)算機(jī)科學(xué)與技術(shù)-淺談編程語言

根據(jù)Tiobe排行榜得知,Java/C/Python分別排在前三名, 隨后緊跟著C++,C#,JavaScript等等。

每種編程語言都有自己擅長的應(yīng)用場景。

計(jì)算機(jī)科學(xué)與技術(shù)-淺談編程語言

編程語言及其應(yīng)用場景

那么如果你作為初學(xué)者,面對如此之多的編程語言,到底應(yīng)該先從哪門語言上車呢?如果你想深入的學(xué)習(xí)其他語言和架構(gòu)相關(guān)的知識之前建議熟練掌握C語言。因?yàn)镃++/Java/C#等編程語言都模仿了C語言。無論哪種語言,都是實(shí)現(xiàn)目標(biāo)的工具,而不是目標(biāo)本身。

而不出意外的話,我的Devops 頭條號會覆蓋上述的十種編程語言,目的是實(shí)現(xiàn)全平臺(Windows,Linux,macOS)應(yīng)用開發(fā)、測試、部署。感興趣的同學(xué)可以關(guān)注。

程序的編譯和解釋

由于高級編程語言和計(jì)算機(jī)底層語言是互不相通的,計(jì)算機(jī)最底層只能識別01010這種二進(jìn)制的機(jī)器指令,因此需要使用工具進(jìn)行語言之間的轉(zhuǎn)換。這個(gè)就是程序編譯或者解釋的由來。

為了理解程序編譯和程序解釋,這里引入兩種語言,分別是高級計(jì)算機(jī)語言L1,以及低級計(jì)算機(jī)語言L0。

  • 程序編譯開發(fā)人員使用高級編程語言L1編寫的應(yīng)用程序通過編譯器生成成計(jì)算機(jī)底層能夠識別的低級語言L0,L0就是計(jì)算機(jī)實(shí)際執(zhí)行的語言,而編譯器生成的計(jì)算機(jī)底層識別的二進(jìn)制機(jī)器指令過程就是程序編譯。常見的編譯型語言有C/C++/Objective-C/Go
  • 程序解釋首先使用L0語言實(shí)現(xiàn)另外一個(gè)程序,也就是解釋器,然后將開發(fā)人員使用高級語言L1編寫的應(yīng)用程序作為輸入,每一句L1編寫的程序都會在L0中作為等價(jià)的轉(zhuǎn)換然后執(zhí)行,解釋的過程就是由L0編寫的解釋器去解釋L1程序。常見的解釋型語言有PHP,Python,JavaScript。

而Java和C#屬于編譯+解釋型語言,以Java為例子,Java程序在運(yùn)行之前首先被編譯成Java字節(jié)碼,然后在JVM虛擬機(jī)上解釋運(yùn)行。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多