Hello,world 是每個程序員的第一個程序,可以說是程序員們夢開始的地方#程序#
今天以Hello, world 為題,這是我來記錄計算機科學學習的第一步。
為什麼要以Hello, world 為題相信大家都了解,這是程序員開始幹事情的第一步,有個笑話是這樣說的”一程序員退休了,想給自己找點興趣愛好,想來想去決定練字,說幹就幹,把宣紙鋪好,鎮紙擺好,拿起毛筆想了半天,憋出來兩個字——Hello, world。
這仿佛就是一個職業病似的。
#include <stdio.h>
int main()
{
printf("hello, world");
return 0;
}
在我的頹廢學習生涯中,又是常常困惑于程序到底是怎麼做事情的?
難道就僅僅是一個blackbox嗎?我給他輸入,他自己神奇的就把結果給我輸出了(不管結果是不是我想要的)hhh
當然這也是程序設計引人入勝之處,這樣的特性也迷倒了一批又一批的有志青年, 引無數英雄盡折腰
但其實知道太多的内部細節也是很困難的, 不知道你讀到這裡是否有興趣和我在之後的一段時間裡共同探尋,計算機科學的奧秘,複習一下計算機體系結構
說道計算機體系結構,就不得不提起一本經典名著——CSAPP 《computer system a programmer's perspective》 深入理解計算機系統
用我剛開始網上沖浪的學到話說就是“沒聽過這本書,你就out啦!!”(互聯網考古)??狗頭保命
這一系列文章就算是對CSAPP 的學習筆記,以及計算機體系結構的複習,和大家一來分享我的學習過程,如果對一些同學起到微小的幫助那我就非常高興了!
好的讓我們開始這個刺激的旅行吧
Hello,world 到底是怎麼在計算機中運行的
為啥你一點編譯,一點運行,程序就可以按照你的指令來做事情呢?
哈哈! 其實這個過程很複雜。但是不要擔心,我會用平實的語言來為你娓娓道來
我們都知道(hhh的都知道)有沒有想數學題的答案 :易知什麼什麼,不難看出)到底是什麼鬼?我咋沒看出呢?
但是确實是這樣的不難看出的看不出就說明基礎不牢呀!
執行一個寫好的代碼需要保存,編譯,運行
在hello,world 中我們将文件保存為 hello.c, 用gcc編譯 ,用終端執行。
vim編輯代碼和保存
終端編譯和執行
這好神奇,電腦居然可以按照我的指令辦事!!!
可是為什麼呢?
因為你長得帥?當然不是了hhh
其實這就涉及到我們今天講的核心了,程序的編譯和執行
語言分為兩種一種是解釋型的語言,一種是編譯型的語言,雖然他們都能寫程序,但是其作用機制完全不同,
比如python就是解釋型的語言通過python解釋器來一邊解釋一邊執行程序。
而c語言就是編譯類型的語言,需要一次性将代碼都編譯為機器語言,變成機器語言後就是一個可執行文件,比如hello.exe
當然文件的後綴名并不是所有情況下都有的,若是在linux系統中可執行文件沒有後綴名
總的來說:由于是一邊解釋一邊執行,所以每次python 這種解釋型語言是會稍微慢一些的,而編譯類型的語言是将代碼變成了二進制的可執行文件,我們今天主要介紹c語言這種編譯類型的語言的前身後世。
其實就是第一章的總覽:1.1 - 1.4 的内容
我們來一步一步思考, 編譯器在編譯時在做什麼,我們都知道計算機隻能識别二進制的01串,為什麼可以處理人類可以閱讀的有一定意義的代碼呢?
為了解決機器可以閱讀并出路人類的文字,我們計算機的前輩們 創造出了ascii碼雖然他隻能表示成256個字符但在早期的計算機發展過程中肯定是足夠用的,畢竟鍵盤上的字符也沒有200個。我們終究還是要在鍵盤上做事情的!!!!
未完待續。。。。。。。。
舉報/反饋
,