-
1 # 小西已不在
-
2 # 貝魚
程式語言的演變
硬體是由電路組成的,我們不妨稱之為機器。人類是透過語言溝通的,硬體電路之間的溝通呢我們就可以稱之為機器語言。
機器語言是由0-1組成的二進位制程式碼,是硬體電路所能識別的。但不方便人類程式設計和助記,便出現了組合語言。隨著程式語言的發展,為了更方便人類程式設計和應用的需要就出現了類似c/c++這樣的高階語言。
但萬變不離其宗,硬體電路只能識別機器語言,即使是彙編和高階語言也需要編譯成機器語言才能被硬體電路所使用。
針對題主的問題最好的一個例子是計算機,我們習慣把它稱為上位機(在下一節與下位機對比)。我們知道在計算機上可以用c/c++/python等語言來編寫,但是它們的編譯環境是不同的(需要用到不同的開發工具)。
這裡的開發工具就是一個重點了,開發工具裡面包括了咱們所使用語言的語法結構和庫等內容,這也就區分了不同的語言。這些開發工具透過各自的開發環境把咱們編寫的語言編譯成機器語言,這樣計算機的硬體電路就可以使用了。這樣來看:硬體電路只能識別機器語言,至於我們所使用的不同的語言,只不過穿著不同的外衣,開發工具最終會把它們編譯成機器所能識別的機器語言。
一點延伸說了計算機作為上位機,咱們不妨在談一下下位機,事實也是由一些硬體積體電路組成的,在這些硬體電路中又有了新的語言。根據燒寫核心電路晶片的工作原理不同,出現了微控制器——c/c++;FPGA——verilog/vhdl/c/c++等語言,但它們透過各自的開發環境,最終都編譯成了機器語言來供硬體電路識別。
未來隨著時代的發展,還會出現不同工作原理的積體電路,因此還會出現新的程式語言。但核心的東西——硬體電路最終識別機器語言這一點到現在為止還是遵循的。
-
3 # 我是玉祥
(1)程式設計意味著打程式碼,程式碼最終轉化為2進位制(01001010)作為資料資訊執行相應的功能操作。
(2)硬體是具體的實物,用於承載軟體(程式)的執行。
回覆列表
程式設計是幹嘛的?
首先程式設計是一個統稱,程式設計的定義就是透過專門的語法結構組成指令去完成一個目標。
跟硬體的關係是什麼?機器的最底層程式碼是0和1,也就是二進位制。
這種二進位制方式的實現其實是利用了矽的半導體特性,使得一個半導體電晶體能輸出代表0的電壓和代表1的電壓,就是程式設計裡的假或真。
打個比方說,一個二極體,我們給它加正向電壓,二極體導通,這時用二進位制表達就是“1”,給二極體加反向電壓,此次二極體截止,二進位制表達就是“0”。
無數個電晶體按照規劃好的電路相連線,就能成為各種晶片或整合小電路。目前,現在的CPU晶片都是矽晶片。
0和1構成的二進位制程式碼沒有什麼可讀性,所以在硬體介面之上,又架構了一層編譯機制,就是組合語言,其中規定了基本語法格式,讓程式設計人員可以透過指令訪問晶片電路中各種運算功能。組合語言就是直接對晶片進行程式設計,比如機器人工程就屬於這類。 但是組合語言也比較生澀,都是基於硬體的基本操作,想做一個大一點的專案非常困難,程式設計量巨大。
下圖為彙編程式碼。
於是人們又開發出再高一級別的C語言,從C語言開始程式設計就很簡單了,至少要比彙編簡單好多倍,再說,也不用長時間再糾結硬體方面的問題了。
下圖為C語言程式碼。
隨著時間的推移,C++, C#,JAVA 等都已經廣泛應用。可以說現在的軟體程式設計跟硬體的關聯已經越來越遠,但本質上又是密不可分的。
就像使用手機,只管玩遊戲、打電話,很少有人去關心手機內部的結構,也沒必要去了解。
下圖為微控制器實驗板。
當然了,如果你對硬體感興趣,推薦你學習一下微控制器,c語言程式設計,控制硬體做任何事情,也是理解程式設計和硬體之間關係的最好辦法。