『壹』 很多程序都是用計算機語言,那麼這些計算機語言是如何發明出來的
我是學電子工程與計算機科技的,也自己設計編寫過編程語言
計算機的處理器只懂得兩個數字,0和1,有些32位有些64位
但是讓人去寫01010101這樣的太不合理,於是有了匯編語言
計算機會把匯編語言翻譯成01010101,再運行
匯編語言非常原始,於是基於匯編語言有了更高一等的語言,比如 fortran 和 c
走到現在,有了 java haskell ruby lisp 等等等等等等等等
反正最後都要翻譯成0101010101才能運行
基本上語言都是一層一層搭出來的
電路知識不需要,除非你設計 CPU 或者為 CPU 設置匯編語言之類
『貳』 程序是如何編寫的
設計環境 程序也就是指令的集合,它告訴計算機如何執行特殊的任務。
『叄』 編程語言本身是怎麼開發出來的
編程語言是從低級語言向上發展成高級語言的,現在的編程語言大部分都是高級語言,最開始的編程語言是機器語言,它是由0 1代碼組成的,編寫代碼非常困難,極易出錯,所以人們開始用助記符來代替0 1代碼組合,形成了匯編語言,它只是簡單的替代,並沒有很高級的技術,以後的語言、系統便是由匯編語言開發出來的,要詳細了解,可以學一下匯編語言。
二進制——匯編——C——更高級語言
『肆』 像c++這樣的編程語言是怎麼創造出來的
編程語言的發展是隨著硬體一起發展的,最初沒有當前成熟的101鍵盤前,技術人員是無法用字母輸入命令和語句的,顯然也不存在任何高級語言的。
機械計算機我就不談了,太遙遠,第一台電子計算機是ENIAC是1946年製造的,開始用的是連接線,後來用的是打孔機,以紙帶作為輸入,一根紙帶邊上是齒孔用於步進電機帶動紙帶,類似現在的針式列印機的紙張,當然紙帶比針式列印機紙張窄,編程人員事先寫好二進制指令的編碼和數據,逐一在紙帶上打孔,比如一個指令和數據是8位,如果是1,則打一個孔,如果是0則不打孔,打完一個位元組讓步進電機進一格,打後面一個數據。所有程序代碼和數據打完,將紙帶裝到計算機的讀入設備中並逐一讀入並運行,當時還沒有存儲器,所以執行完如果需要再運算一遍,要復位重新裝紙帶。當然如果程序要改寫就得重新打一卷紙帶。
這就是電子計算機最原始的編程(機械計算機則還要麻煩),後來有了存儲器,還是用紙帶輸入程序,然後可以重復運算,因為輸入的指令和數據都存入存儲器了,不需要再跑一遍(真正意義的跑)。此時程序員編寫的程序都是機器語言,形式就是二進制碼
類似這樣
01010100
11001101
01101010
...
後來人們覺得這樣很麻煩,考慮到一種CPU的指令都是固定,如果有一種簡單容易能幫助記憶符號來代替一串二進制就方便多了,因此設計出了匯編語言,因此匯編指令稱為助記符,比如MOV,ADD,JMP等等。這時候就需要一種新的輸入設備代替打孔機,而且能直接連接在計算機上,之後隨著晶體管的發展,單片機出現,一個按鈕代表一個指令,同時結合數碼鍵(0-9,A-F)輸入16進制數據,讓設備轉成二進制數據,這應該算最早的編譯器了,屬於硬體編譯器。
再之後,人們發現計算機不僅可以處理數據,還可以處理文本,因此有了ASC碼,ASC碼也發展了好幾代,既然可以處理文本,隨著計算機設備的發展,把打字機鍵盤復制過來,擴展單片機的按鈕,這樣計算機鍵盤的雛形出現了,取消了專用匯編指令鍵,而改用程序來翻譯輸入的文本,比如單個匯編指令MOV改用鍵盤輸入這三個字母的文本,由翻譯程序翻譯成二級制碼,這應該是最早的源代碼了,而這個翻譯程序最先當然還是用單片機開發的,而這個翻譯程序就是最早的匯編指令編譯器了。
有了匯編指令編譯器,人們可以直接通過鍵盤輸入匯編指令,由編譯器編譯成二級制碼執行程序,有了匯編編譯器,人們不僅直接用於各種科研運算,而且開發了更高級的語言了,那麼後來各種語言蓬勃發展起來了,在C語言前還有A,B,以及其他高級語言陸續出現,比如1954年的Fortran。
所以你可以看到,技術都是迭代發展的,你只要學習到足夠的知識,可以用任何語言開發你的編譯器,當然這可是件不簡單的任務,同時,所開發的編譯器受你所用的語言限制。