在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文解釋清楚什么是程序

jf_78858299 ? 來源:碼農的荒島求生 ? 作者:碼農的荒島求生 ? 2023-02-24 14:20 ? 次閱讀

雖然在這里我們主要關注的是操作系統,但畢竟操作系統的目的就是能更好的運行用戶程序,而且該教程主要是站在程序員的角度來講解操作系統,作為程序員是繞不開程序這個話題的,因此在深入理解操作系統之前還是有必要來聊一聊程序是怎么一回事。

究竟什么是程序?

我們引用Wikipedia對計算機程序的定義:

A computer program is a collection of instructions that performs a specific task when executed by a computer.

翻譯成大白話就是,能指揮計算機干活的一堆指令就叫計算機程序。那怎樣才能寫出指揮計算機干活的指令呢?這就涉及到程序是怎么來的。

程序是怎么來的呢?

程序是我們廣大程序員們用編程語言一個字符一個字符寫出來的文本字符串,只不過這些文本字符串是人類可以認識的。無論用的什么程序語言,C/C++Java、Python、JavaScript、C#、Perl、Lua、Shell、匯編語言等等等等,只要是你寫出來的文本字符串能指揮計算機干活,這都叫程序。這些程序員認識的文本字符串就是可以指揮計算機完成特定任務的指令。你可能有點糊涂了,這些文本字符串真的就是計算機能用來完成特定任務的指令嗎?計算機不是只認識0和1這兩個數字嗎?

天才的榆木疙瘩

計算機其實是一個數學學得非常差的家伙,以至于差到只能認識兩個數,0和1,其它的就都不能認識了,我們要面對的就是這樣一個榆木疙瘩。

雖然這個榆木疙瘩數學不好識數不多,但是這家伙有一個我們人類難以望其項背的能力,不,對于人類來說簡直就是超能力,那就是這個榆木疙瘩算數非常快,對于簡單的加法我們人類可能一般一秒能算不超過10個,但是計算機一秒可以完成數十億次的計算,簡直是天才!雖然計算機能認識的數就只有0和1這么簡單,但是其計算速度體現出了簡單的威力。

從文本字符串到機器指令

至此,我們知道程序員(人類)和計算機是兩個完全不同的物種,不同的物種能理解的語言是完全不同的,就好比普通的人不會明白一群鳥語在說什么一樣,我們人類也不能打開vim或者宇宙無敵IDE——Visual Studio直接寫0和1吧(雖然這是可以的,早期的程序員確實就是這么干的,牛不牛)。

因此,我們需要某種魔法把人類認識的C/C++、Java、Python之類的翻譯出計算機可以認識二進制01指令。這樣的魔法就來自兩個東西,編譯器和解釋器。

翻譯官編譯器和解釋器

編譯器大家應該都比較熟悉,我們寫好C/C++程序后第一步就是編譯,這里編譯工作就是編譯器來完成的。你可以簡單的理解為編譯器把C/C++程序直接翻譯成計算機可以認識的01二進制機器指令。

對于解釋器有的同學可能就不是那么熟悉了,寫Java、Python、C#程序的時候你從沒有聽說過要“編譯一下Java,編譯一下Python,編譯一下C#”吧。你可能會說C/C++程序我能理解了,編譯器把C/C++程序直接翻譯成了01二進制機器指令,那Java、Python一類的程序是怎么運行的呢?

大家可以想一想,你在寫Python、Java、C#程序之前是不是要安裝一堆東西,稱之為“運行時環境”?

如果你想不起來,趕緊重新搭一套環境試試是不是這么回事。

這里的運行時環境其實就是解釋器。你可以把這個解釋器簡單的理解為就是一個程序,只不過。。。注意注意!!!前方高能?。?!,只不過是解釋器這個程序可以運行你寫的Java、Python、C#的程序, 解釋器是一個可以運行程序的程序?。?! 那解釋器這個程序又是怎么來的呢?一般情況下這些解釋器其實是用C/C++寫出來的。只不過用C/C++寫的這個程序專門用來執行你寫的Java、Python之類的程序,高能完畢。

偉大的C語言

希望到目前為止你還沒有暈,到這里我們知道了,不管我們用的是Java、Python、JavaScript什么的也好最終都逃不出C/C++(Go等語言除外),CPU不直接執行Java、Python、JavaScript之類的解釋型語言程序,CPU可以直接執行的是解釋器代碼,解釋器最終來執行Java等程序,這就是解釋型語言效率不如編譯型語言效率高的原因。因為C/C++程序最終被編譯器翻譯成了01機器指令,CPU可以直接運行運行機器指令,而對于解釋型語言來說CPU首先執行的是解釋器的程序,然后解釋器再執行你寫的程序,性能上當然不及編譯型語言。

而C++程序其實在編譯過程中也會轉化為C程序然后再轉為01二進制機器指令,并且們使用的Windows、Linux、MacOS等操作系統同樣是用C語言來編寫的,從最底層的操作系統到上層的應用程序實際上都逃脫不了C語言。

從這個角度看,C語言真是一門偉大的語言。

回到操作系統

饒了一大圈我們回到操作系統,接下來關于操作系統的講解中涉及到示例程序沒有明確說明的話指的是C語言程序。請注意,如果你對C語言不熟悉也沒有關系,我們示例都非常簡單不會涉及到復雜的C語言相關概念與用法,有任何語言的使用經驗都可輕松應對。

C語言程序編譯好后生成的可執行程序在Windows中就是我們熟悉的exe程序,在Linux下是elf程序,這些可執行程序編譯好后和普通文件一樣存放在磁盤當中。

在接下來關于操作系統的討論當中,沒有明確說明的話,以下幾個詞匯,"程序","用戶程序","應用程序"指的都是編譯好后放在磁盤上的可執行程序。

操作系統也是程序

一定要認識到,操作系統也是程序,只不過這個程序不是簡單的往屏幕上打印helloworld,不能用來文字語音視頻聊天,不能用來上網,不能用來看電影,不能用來玩游戲。那么這個貌似什么娛樂設施都提供不了的程序有什么用呢?這個程序的作用無比重要,該程序的作用是為以上用戶程序提供一個良好的運行環境,管理計算機硬件資源包括:CPU、內存、磁盤、網卡、外設等等等等,這個程序就是該教程重點關注的操作系統。

總結

這是該教程的第一節,在這一節中我們從各個方面講解了程序這一話題。

程序分為編譯型程序,比如C/C++,以及解釋型程序比如Java、Python、JavaScript等。編譯型程序被編譯器直接翻譯成CPU可以直接運行的機器指令,而解釋型程序無需編譯,其運行依靠的是解釋器,解釋器是一個可以執行程序的程序,解釋器這個程序一般是由C/C++程序編寫的。

需要我們注意的是操作系統也是一個程序,只不過這個程序的作用比較特殊,這個程序是用來管理計算機系統中各種軟硬件資源的,比如提供進程、線程機制,管理CPU等等,這個程序也是接下來該教程的主角。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 二進制
    +關注

    關注

    2

    文章

    795

    瀏覽量

    41679
  • C語言
    +關注

    關注

    180

    文章

    7606

    瀏覽量

    137065
  • 程序
    +關注

    關注

    117

    文章

    3789

    瀏覽量

    81140
  • C++
    C++
    +關注

    關注

    22

    文章

    2110

    瀏覽量

    73695
收藏 人收藏

    評論

    相關推薦

    有關宏的概念不是很清楚

    在用verilog HDL設計FPGA程序時,涉及到“宏”的概念,對此我不是很清楚,有哪位高手幫忙解釋一下?謝謝了
    發表于 03-15 15:36

    程序,求大俠給解釋一

    ; WriteCommandLCM(X,0);WriteDataLCM(DData); }這是個1602的子程序,求大俠給解釋一下,小弟不勝感激!
    發表于 08-29 11:24

    求各位大神幫我解釋解釋個示波器個濾波器的程序

    快答辯了,求大神們幫忙學渣看不懂這個兩個程序圖,幫忙解釋一下這兩個儀器作用,都能測什么希望能細點,救人命勝造七級浮屠?。?/div>
    發表于 06-04 23:18

    AROS程序清楚運行順序

    在學習基于ZigBee的個ATOS系統,但是不清楚這個程序的執行順序,望大神指點,可私聊。文件類型是.nc,可用notepad++打開。
    發表于 04-29 15:51

    請問下在開關電源中為什么:uo=Dui。如果哪位清楚的朋友,請幫忙解釋下咯

    請問下在開關電源中為什么:uo=Dui。如果哪位清楚的朋友,請幫忙解釋下咯,
    發表于 06-20 17:02

    能幫我解釋一下這個程序嗎?

    能幫我解釋一下這個程序嗎?
    發表于 12-19 16:05

    把ARM7、ARM9和ARM11的區別解釋清楚

    個操作系統下,程序開發人員都是在操作系統給定的API和編程模型下開發程序;操作系統通常只開放個確定的存儲器地址空間給用戶。這樣就帶來
    發表于 10-20 17:10

    高級程序設計語言解釋程序和編譯程序編譯器

    if 不匹配,缺分號語義錯誤:死循環,零除數,其他邏輯錯誤解釋程序的基本原理解釋程序是另種語言處理程序,在詞法、語法和語義分析方面與編譯程序
    發表于 12-21 06:08

    iPhone名詞解釋(二)

    iPhone名詞解釋(二) 什么是PwangeTool?什么是QuickPwn?什么是BootNeuter? PwangeTool是款Mac端的用于越獄和破解iPhone的程序。Q
    發表于 01-27 09:34 ?861次閱讀

    計算機程序的構造和解釋中文版

    電子發燒友網站提供《計算機程序的構造和解釋中文版.txt》資料免費下載
    發表于 01-04 17:24 ?0次下載

    命令解釋程序工作流程

    解釋程序種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源
    發表于 03-09 17:18 ?5206次閱讀
    命令<b class='flag-5'>解釋程序</b>工作流程

    程序員到底是做什么的

    很多人問程序員是是做什么的?或者問IT是做什么的?對于非IT行業的人很難有時間慢慢解釋清楚,下面我結合自己的理解談談吧。
    的頭像 發表于 02-12 16:17 ?9357次閱讀

    解釋程序的功能是

    編譯程序的基本功能是把源程序(高級語言)翻譯成目標程序。但是,作為個具有實際應用價值的編譯系統,除了基本功能之外,還應具備語法檢查、調試措施、修改手段、覆蓋處理、目標
    的頭像 發表于 02-22 15:31 ?9186次閱讀

    了解通信技術的常用名詞解釋

    了解通信技術的常用名詞解釋
    的頭像 發表于 06-19 17:55 ?6035次閱讀

    設計模式:解釋器設計模式

    Java解釋器是種將Java程序翻譯成機器可執行代碼的工具。
    的頭像 發表于 06-06 11:22 ?872次閱讀
    主站蜘蛛池模板: 午夜免费理论片在线看| 欧美性极品高清| 亚洲一在线| 欧美国产黄色| 一区二区福利| a黄网站| 亚洲人在线| 五月天丁香花婷婷| 奇米色影院| 黄色大片视频| 成人拍拍视频| 五月天婷婷社区| 黑色丝袜美美女被躁视频| 日韩亚洲人成在线综合日本| 日本美女黄色一级片| 久久国产免费观看| 欧美zo| 在线天堂视频| 如果我们是季节韩剧在线观看| 毛片网页| 在线观看视频高清视频| 奇米4色| 黄色国产在线视频| 综合色视频| 日本黄色短视频| 岛国一级毛片| 美女bbbb视频| 亚州一级毛片| 天堂网2018| 久久青草18免费观看网站| 69一级毛片| 国产美女视频黄a视频免费全过程 国产美女视频黄a视频全免费网站 | 日本污全彩肉肉无遮挡彩色| 色网站在线播放| 永久精品免费影院在线观看网站| 色福利视频| 国产毛片农村妇女aa板| 人人插人人草| 日本免费不卡视频一区二区三区| 四虎网址在线观看| 国产成人高清|