天天看點

世界上第一個編譯器是怎麼來的?開發編譯器的最初衷原始目的是,想用機器自動把非機器碼轉化為機器碼,代替人工查表機器碼的手動彙編,可以設想編譯軟體由最原始的機器碼逐代更新積累機器碼彙編C及更進階語言編寫

世界上第一個編譯器是怎麼來的?開發編譯器的最初衷原始目的是,想用機器自動把非機器碼轉化為機器碼,代替人工查表機器碼的人工彙編,可以設想編譯軟體由最原始的機器碼逐代更新積累機器碼彙編C及更進階語言編寫

告訴你一個秘密吧,有一種編譯方法叫跌代法,我們将c語言切分為100份,然後讓第一份寫出的編譯器編譯第二份,依次類推,得到c100,也就是最後的c,而編譯c1的編譯器是由彙編寫的,這樣就大大降低了彙編編譯器的工作量。開始簡單的C1編譯器重複性的進行編譯工作,代替人工手動編譯

世界上第一個有「編譯器」作用的東西是 Zuse 給 Z4 制造的外設 Planfertigungsgerät,它可以把「易讀的」輸入轉換成 Z4 使用的穿孔膠片帶。此裝置 1945 年便安裝到了 Z4 上。

世界上第一個進階語言編譯器是 1957 年的 Fortran,是直接用機器碼敲進穿孔紙片裡的。

作者:Belleve

連結:https://www.zhihu.com/question/30023409/answer/46671692

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

作者:知乎使用者

連結:https://www.zhihu.com/question/30023409/answer/109419429

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

在計算機科學中,的确遇到很多這樣的案例。比如我們現在使用的gcc和c語言程式的關系,記得大一那會兒一直搞不明白,感覺很奇怪。既然c語言程式要用gcc編譯才能運作,而gcc本身又是c語言程式,那gcc是怎麼被編譯出來的,gcc嗎?解答一是gcc由其他語言編譯器編譯出來。那其他語言的編譯器又是什麼編譯器編譯出來的呢?也就是說,總得有一個上帝一樣的編譯器,它一開始就不用編譯。這個上帝一樣的編譯器到底是什麼啊。學過彙編的人應該知道,彙編語言是最接近硬體的語言,如果你的程式是彙編語言寫的,那麼需要一個彙編器,但是最開始哪兒有彙編器。其實,彙編語言又叫助記符,每一個指令都對應着一個二進制編碼。二進制碼對應的機器碼是機器可以識别的。然後有人查表機器碼手動彙編呵呵,上帝編譯器其實就是人啊……計算機早期,其實都是自己在紙條上寫完程式後,然後對照編碼表,一步一步翻譯成機器語言的。人腦是計算速度最慢的編譯器,但卻是計算機的上帝編譯器。另一個案例是機器學習,有很多這樣的問題,輸入一批資料,訓練,再用輸出結果,調整參數再将輸出作為輸入。這樣一來,就是先有輸出還是輸入的問題,但是問題是一開始輸入和輸出都沒有。此時的辦法就是人為設定一個輸入,比如一批随機輸入資料。最後,還有一個比較常見的就是對資料的描述資訊,我們稱之為中繼資料meta data。中繼資料就是一個鍊,一直指向目标資料,而同時目标資料中也可以含有發現中繼資料的能力,這樣一個雙向鍊中,也需要一個最初的中繼資料,而這個中繼資料可能就是人為設定死的。

這個問題其實不複雜。

早期的程式員是要靠手寫機器碼來程式設計的,手動跳轉,控制記憶體等等。

比如這張表:

http://www.jegerlehner.ch/intel/IntelCodeTable.pdf

這個表其實是彙編語言的對應機器碼

查表按照指令寫代碼。

第一個編譯器就是這種機器碼寫出來的,然後再在這個編譯器的基礎上構造更加複雜的工具,一代代的疊代,最終就構成了你所使用的各類compilers。

作者:知乎使用者

連結:https://www.zhihu.com/question/30023409/answer/46486137

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

世界第一台編譯器是用紙片打孔機打進去的,但是,我覺得這不重要,重要的是這個紙片的二進制形式你是怎麼知道的。這要對硬體非常非常的熟悉,我們可以認為這個時候就是人在編譯,世界第一台編譯器就是人,真的就是人。後來通過人這個編譯器就做了很多事情。就可以造出一個語言了,但是這種語言和二進制的形式非常緊密,幾乎看的懂這種語言,就可直接翻譯成作用于硬體的二進制了,這就是彙編。至少沒以前那麼麻煩了吧。在彙編基礎上面就可以編一個c語言的編譯器,那c語言又容易多了。但是這些語言翻譯成的二進制都是可以直接作用于硬體的,不像java,python等等,java等等這些語言編譯器編譯成的二進制不能夠直接作用于硬體的。是以,作業系統是不可以用java,python等等這些語言編寫的。

作者:啥都想知道

連結:https://www.zhihu.com/question/30023409/answer/141984913

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

一開始隻有機器碼,後來覺得太難記了,是以說在有了鍵盤和顯示器後發明了彙編,然後發現彙編不夠,開始在彙編的基礎上添加公式和變量功能,然後就慢慢發展成了結構化語言.......于是C就被發明出來了,至于是怎麼演化的可以自行百度

https://www.zhihu.com/question/30023409

繼續閱讀