編程的本質是什麼?程序是什麼?

程序是什麼?在編程的世界,我們平時所見到的程序,是指以某種邏輯組織起來的指令序列,通過這些指令序列達到一些特定的效果,一個可執行程序呢,它的內部是一系列計算機指令和數據的集合,它們都是二進制形式的,通常的格式是ELF段的二進制文件,CPU 可以直接看到,識別,但是,若是對於程序員來說呢,這些二進制文件就顯得晦澀難懂,看得人頭皮發麻。

而在windons中呢,我們所說的程序,就是那些平時雙擊就可以直接運行的程序了,他們不需要安裝,而是可以直接執行,這樣的程序呢被稱為可執行程序,英文名字是Executable Program,所以我們一般平時看到的exe文件呢就是可執行程序名字的一個縮寫。在 Windows 下,可執行程序的後綴一般有 .exe 和 .com(其中 .exe 比較常見);而在類 UNIX 系統(Linux、Mac OS 等操作系統)下,可執行程序並沒有特定的後綴,系統根據文件的頭部信息來判斷是否是可執行程序,一般格式為ELF文件。

例如,在我們的電腦屏幕上輸出“hello world”,C語言的寫法為:

puts("hello world");或者printf("hello world");

二進制的寫法為:


編程的本質是什麼?程序是什麼?


如果你是程序員,你可以感受一下,直接使用二進制寫程序感覺是不是想撞牆?而在計算發展的初期,程序員就是使用這樣的二進制指令來編寫程序的,因為在那個年代還沒有編程語言。

直接使用二進制指令編程對程序員來說簡直是噩夢,尤其是當程序比較大的時候,不但編寫麻煩,需要頻繁查詢指令手冊,而且除錯會異常苦惱,要直接面對一堆二進制數據,讓人眼花繚亂。另外,用二進制指令編程步驟繁瑣,要考慮各種邊界情況和底層問題,開發效率十分低下。

這種情況下,這就逼得程序員開發出了編程語言,提高自己的生產力,例如彙編語言、C語言、C++、Java、Python、Go語言等,逐步提高開發效率。從此,C語言代碼由固定的詞彙按照固定的格式組織起來,簡單直觀,便於程序員識別和理解,但是對於CPU,C語言代碼是什麼東西?根本不認識好吧!CPU只認識一些二進制形式的指令。所以呢!這個時候就需要這麼一個工具,將C語言代碼轉換成CPU能夠識別的二進制文件,也就是將代碼加工成 .exe 程序;這個工具是一個特殊的軟件,叫做編譯器(Compiler)。編譯器能夠識別代碼中的詞彙、句子以及各種特定的格式,並將他們轉換成計算機能夠識別的二進制形式,這個過程稱為編譯英文是Compile。

編譯也可以理解為“翻譯”,它是一個複雜的過程,大致包括詞法分析、語法分析、語義分析、性能優化、生成可執行文件五個步驟,期間涉及到複雜的算法和硬件架構。然後將人們寫的各種c語言或其他語言的語句,翻譯成系統才能夠理解的語句,進一步進行運算。Windows 下常用的是微軟編譯器(cl.exr),它被集成在 Visual Studio 或 Visual C++ 中,一般不單獨使用;Linux 下常用的是 GUN 組織開發的 GCC,也叫GNU C Compile,很多 Linux 發行版都自帶 GCC編譯軟件。

你的代碼語法正確與否,編譯器說了才算,編譯器可以 100% 保證你的代碼從語法上講是正確的,因為哪怕有一點小小的錯誤,編譯也不能通過,編譯器會告訴你哪裡錯了,那你就是錯了,這樣以便於你對自己代碼的更改。


分享到:


相關文章: