軟件是用編程軟件編寫的,那麼編程軟件又怎麼來的?

2020年11月16日22:56:04 科技 1710

軟件是用編程軟件寫成的,那麼編程軟件是怎麼來的呢?

這個吧,我真的沒辦法一個個給你解釋到底,不然你要是打破砂鍋問到底,可能一頓火鍋的功夫我也沒辦法給你說完。舉個例子哈,IntelliJ IDEA和Eclipse都是Java的IDE,用這兩個IDE可以寫非常多的軟件,比如Android Studio先後分別基於這兩個軟件,Android上所有的軟件都是用這玩意兒開發的,但是這兩個IDE本身也都是Java語言開發的,這兩個IDE呢最初肯定是在Vim/Emacs+Java開發的,咱就先說到這裡,不然要喋喋不休了。

我給大家提一個思路,大家按照這個思路可以自己去找自己感興趣的問題。我給大家說一說Google實現Go 1.5自舉、去除所有的C語言程序的過程,大家慢慢就明白了,基本上計算機技術都是這樣迭代出來的,比如怎麼先有了C語言、現有了Unix,又如何在這些基礎上,誕生了Emacs、C++等眾多新的軟件和技術。

軟件是用編程軟件編寫的,那麼編程軟件又怎麼來的? - 天天要聞

事實上現在所有新的編程語言,基本上都會考慮在C語言的基礎之上構建,Go語言也不例外,何況Go語言的重要設計者之一肯湯普森老爺子,還是C語言、Unix之父。Go語言發展的第一階段,就是開發一個從C語言到Go語言的翻譯器,將C語言編譯器翻譯成Go語言的,不過了Go語言核心設計團隊的三位大神非常機智,他們最大程度避免了在Go語言編譯器設計中,大量使用未來很難移植到Go語言的一些特性,比如宏、比如指針,這些都是C、C++留下的一些糟糕的設計,不符合現在的編程語言設計潮流。轉換編譯器源碼樹產生一個Go語言編譯器,不過這時候還是典型C語言風格。

接下來,Google對編譯器進行了優化,將編譯器CPU、內存等硬件資源佔用的問題解決了,並且引入了並行概念。為了改進編譯器在消除邊界檢查等問題下的能力,同時在不依賴架構的node*s、prog*s之間引入一個中間表示。這些事情完成之後,Google就做了最後一步,用Go 1.5、也就是當時Go語言最新版本,用go/parser和go/types替換了編譯器前端,至此Go語言實現了自舉,並且獲得了一個穩定高效的編譯器實現。

軟件是用編程軟件編寫的,那麼編程軟件又怎麼來的? - 天天要聞

Go語言本身編程難度要比C更簡單,這是因為Go語言跟很多高級語言一樣,摒棄了指針、規避了內存泄漏、解決了緩衝區溢出,深度遞歸時棧的溢出,摒棄了宏這些定義。Go語言工具鏈對模塊化、單元測試、以及性能分析支持更好,在修改內部API或重構時,應用自動化程序重構前景更加值得期待。

你看這就是Go語言從C語言寫編譯器 ,到最終實現Go語言完全自舉的過程,當然大家都知道圖靈完備的編程語言都可以實現自舉,理論上符合圖靈完備的編程語言都是這麼發展的,C++就是這麼發展的,滿足這個條件的編程語言,你才能作為其他編程語言的基礎。

軟件是用編程軟件編寫的,那麼編程軟件又怎麼來的? - 天天要聞

那麼我們回到最初的問題上,編寫軟件的編程軟件又是在什麼環境下開發的呢?計算機技術發展至今,在機器語言的基礎上,弄出了彙編語言,接着兩位祖師爺弄了C語言和Unix系統,接着在這個基礎上,又有人弄了Emacs、Vim、GCC,你看基本上現代計算機技術的所有根基技術就有了。

接着就是用C語言寫各種操作系統,為了各種需求寫各種編程語言,又根據各種需求開發各種集成開發環境,然後又根據各種應用需求用集成開發環境寫其他應用軟件,這就是一個完整的計算機技術發展進化流程。

編程軟件也是,先有了機器語言,打孔時代創造和發明了彙編語言,彙編語言的基礎上又有了B語言,然後B語言的基礎上發明了C語言,C語言重寫Unix,於是現代計算機的雛形也就有了。早期是一生一、機器語言生彙編,然後機器和彙編語言生C語言,到C語言時代就是一生萬物、C語言生萬物,現在就是多生萬物。這就是計算機技術發展的過程。

軟件是用編程軟件編寫的,那麼編程軟件又怎麼來的? - 天天要聞

科技分類資訊推薦

早期Prime Day蘋果熱銷好物 - 天天要聞

早期Prime Day蘋果熱銷好物

#夏日生活打開季#快速導讀Engadget 自 2004 年以來一直在消費科技評測領域處於領先地位,評測涵蓋了蘋果的筆記本電腦、智能手錶、平板電腦和智能手機。雖然蘋果產品性能卓越,但價格較高。
雷軍:沒有出紅米汽車的打算 小米汽車計劃2027年出海 - 天天要聞

雷軍:沒有出紅米汽車的打算 小米汽車計劃2027年出海

站長之家(ChinaZ.com)7月3日 消息:昨日晚間,小米董事長雷軍開啟返場直播活動,在直播過程中,雷軍不僅詳細介紹了小米YU7的訂單及交付情況,還積極回應了網友們的諸多提問。其中,網友們頗為關注的小米是否會推出紅米汽車這一問題,雷軍明確表示:「我們確實是沒有這樣的打算。」值得一提的是,此前Redmi品牌總經理王騰也...
雷軍自曝買Model Y:進行對標學習 希望小米汽車超越特斯拉 - 天天要聞

雷軍自曝買Model Y:進行對標學習 希望小米汽車超越特斯拉

站長之家(ChinaZ.com)7月3日 消息:昨晚的直播中,雷軍再次深情回顧了小米YU7開啟大訂後自己的內心感受,直言「我其實是愣住了」。當「3分鐘20萬訂單」這一驚人數據擺在眼前,不僅讓雷軍本人感到意外,更足以震撼全球汽車產業。要知道,創造這一輝煌成績的小米,進入汽車行業僅僅一年零三個月,這無疑創造了中國汽車工業的...
蘋果iOS26 FaceTime可檢測裸露行為 違規將緊急暫停通話 - 天天要聞

蘋果iOS26 FaceTime可檢測裸露行為 違規將緊急暫停通話

站長之家(ChinaZ.com)7月3日 消息:近日,蘋果在最新推送的iOS26測試版系統中,對FaceTime功能進行了重要安全升級,新增實時內容檢測機制以保障視頻通話安全。據測試用戶反饋,當系統通過AI算法識別到通話畫面中出現裸露行為時,將立即暫停音視頻傳輸,同時凍結通話畫面並彈出警告窗口,要求用戶終止不當行為。該技術源於...
雷軍回應大定被質疑有水分:轉單率不足YU7訂單的15% - 天天要聞

雷軍回應大定被質疑有水分:轉單率不足YU7訂單的15%

站長之家(ChinaZ.com)7月3日 消息:昨晚,雷軍開啟直播,圍繞YU7和SU7的最新動態展開分享,並針對近期市場上的諸多爭議話題作出回應。直播中,對於小米YU7「7天可退」原則引發的質疑,雷軍解釋稱,這其實是行業內的普遍做法,車企通常會給予消費者3天的猶豫期。小米YU7在首銷期將猶豫期設定為7天,是考慮到門店試駕安排可...
雙卡有一個卡無服務是什麼原因?教你一步一步找到問題 - 天天要聞

雙卡有一個卡無服務是什麼原因?教你一步一步找到問題

雙卡有一個卡無服務是什麼原因先判斷:要麼是手機卡的問題,要麼是手機的問題!手機卡可能會失效,也可能是欠費太久被註銷!而手機可能是sim卡槽問題,也可能是通信模塊的問題!面對這樣的問題先別慌,建議可以開啟飛行模式,再次開啟下,看看能否解決問題