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

2020-12-06 EmacserVimer

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

這個吧,我真的沒辦法一個個給你解釋到底,不然你要是打破砂鍋問到底,可能一頓火鍋的功夫我也沒辦法給你說完。舉個例子哈,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語言風格。

Go語言

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

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

eclipse

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

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

Emacs

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

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

相關焦點

  • 西門子PLC編程軟體
    西門子plc編程軟體是一款專為西門子設備而專門開發的plc編程軟體。西門子編程軟體中文版的主要為了幫助用戶使用西門子的設備,機械設備需要進行特定的程序才能夠進行工作,這款軟體就是讓你的設備按你的想法去工作。太平洋下載中心為您提供西門子plc編程軟體官方下載。
  • 怎麼用條碼軟體的腳本編程列印含特殊校驗位流水號
    不知道大家還記得不記得很早之前介紹的用軟體列印含特殊校驗位的流水號,流水號組成部分就是:流水號+校驗位(如下圖5位長度流水號+校驗位),其中校驗位就是由前面的流水號各項數字求和取個位數得出,之前介紹的是利用Excel對原數據進行處理再導入條碼軟體列印,那麼利用剛剛給大家介紹的中琅條碼軟體腳本編程求固定數據之和的方法也可以實現這個功能
  • 怎麼用條碼軟體的腳本編程求固定長度數據和
    不知道大家有沒有遇到過求一串數據各數字和的情況,這兩天就有遇到小夥伴來諮詢這個問題,資料庫導入的固定長度數據,需要把數據中的各個數字相加之和列印出來,要實現求數據各數據的總合,用中琅條碼軟體中的腳本編程就可以實現(其實這個功能在Excel也能實現),不過今天我們就主要聊一下中琅條碼軟體是如何利用腳本編程求固定長度數據和
  • 更直觀地編程!ABB 機器人推出Wizard 簡易編程軟體
    abb最新推出的Wizard簡易編程軟體使機器人更易安裝、編程和操作,無需專門培訓,減少了首次使用機器人的用戶實現自動化的障礙!   Wizard簡易編程是一種圖形化編程方法,旨在使用戶能夠為ABB單臂YuMi協作機器人快速創建應用程式,而不需要專門的培訓。先來看視頻!  該簡易編程軟體基於Blockly概念建立。
  • 谷歌空間推薦:如何自學編程,有哪些實用輔助學習軟體?
    然後,要怎麼自學編程,又有哪些好用的輔助工具?接下來就和谷歌空間一起,看看那些自學的基本策略,與優秀的服務與應用吧。想好做什麼,做學習規劃一般說,編程就是人類用特定語言寫東西,讓軟體翻譯成機器指令、去做特定事情。
  • 歐姆龍推薦CX-Programmer 6.0視窗編程軟體
    近日,歐姆龍推薦CX-Programmer 6.0視窗編程軟體 ·支持FB的嵌套調用,最多8層調用 ·支持FB內部程序的監視功能。
  • 少兒編程軟體哪個好?國產最強大少兒編程工具推薦
    3D電影動畫創作3D電影動畫製作是帕拉卡(Paracraft)3D動畫編程的核心功能之一,學生可以用Paracraft裡面的電影方塊方便快捷的製作從簡單到複雜的3D角色動畫。在電影方塊中,學生通過先後扮演導演,攝影師,演員來製作一個3D電影片段,通過創作3D動畫電影來表達自己的想法。學生在動畫電影的製作中,需要的故事的設計能力,劇本的寫作表達,角色設計,互動設計等等,為後期編程學習做了空間思維上的訓練。
  • 三維CAD/CAM 軟體SINOVATION玩轉多軸編程,讓數控加工事半功倍
    要滿足這類零件特徵的數控編程,選擇一款好的CAM軟體,會讓數控加工產生事半功倍的效果。華天軟體自主版權的三維CAD/CAM 軟體SINOVATION提供了易於學習和掌握的3+2數控工具機的CAM編程技術 。加工上述零件斜面上的面、孔、槽或者凸臺輪廓時,只要注意以下細節的設置,就能很順利的完成編程工作。
  • 作為軟體開發人員需要具備的技術技能
    我是幫助軟體開發人員開發除技術技能之外的「軟技能」的堅定支持者。但是不可否認:技術技能很重要。我的意思是,如果您實際上不能編寫代碼和開發軟體,那麼您學到的所有軟技能都不會真正幫到您。也許您會成為一名優秀的項目經理,而不是一名優秀的軟體開發人員。
  • C/C++的起源與發展故事,我是最牛的軟體程式語言,不接受反駁
    C語言和C++語言之所以被稱為經典,是因為Windows、Linux、UNIX、DOS四大作業系統的核心代碼大部分是使用C和C++編寫;之所以說堅挺,是因為當前軟體領域採用的程式語言中,這兩種語言基本上長期處於TOP 10的序列。所以可以說這兩種語言是最牛的程式語言。對於C語言的誕生和起源,可以說是偶然中的必然。
  • 2020首期青少年軟體編程等級考試開啟,超2萬考生赴考
    5月31日,青少年軟體編程等級考試2020年首場考試正式於線上開考,共計超過2萬人報名參加考試。作為首個全國級面向青少年軟體編程能力水平的社會化評價項目,中國電子學會青少年軟體編程等級考試自啟動以來一年舉辦四次,截至目前已超過6萬名青少年參加全國青少年軟體編程等級考試,成為迄今為止具有大量實踐積累並且規模最大的編程等級考試。因受疫情影響,2020年青少年軟體編程等級考試將3月與5月的考試合併進行,另外兩場考試將分別於9月和12月舉行。
  • Java與Cobol對決:Cobol軟體質量最過硬
    對於70年代的電腦程式的開發專家來講,他們是怎麼也沒有想到這些電腦程式那麼有生命力,居然能活到21世紀。而由此帶來的是叱吒風雲的「千年蟲問題」。  因此,說起「技術債」(Technical Debt),就不得不談到一個石破驚天的血案「千年蟲」。
  • 效率提升30倍 無代碼開發讓「小白」也能編程
    效率提升30倍 無代碼開發讓「小白」也能編程記者 唐 婷近日,有外媒指出,在過去35年,軟體行業發生了一些重大轉變。其中之一便是,越來越多的軟體應用程式,已構建了基於無代碼原則的平臺,軟體業的未來將是屬於無代碼平臺的。那麼,代碼在軟體編寫中扮演著怎樣的角色?什麼是無代碼平臺?軟體編寫是否真的可以做到無代碼?無代碼軟體的優勢有哪些?
  • 什麼是編程?
    主要從以下四個方面來講:什麼是編程?編寫程序的語言有哪些?學習編程有什麼好處?我們可以怎麼樣學習到編程?01什麼是編程?我的理解是:程序一詞來自生活,通常指完成某些事情的一種既定方式和過程,可以將程序看成對一系列動作的執行過程的描述。
  • 自動編程還能自主檢測Bug,有了機器編程人類可更專注於創造
    開發人員要花費越來越多的時間來修復bug,而不是編寫代碼。 寫代碼、改bug成了程式設計師996的工作核心;而軟體開發周期未知而漫長,怕是996都無法解決。一覺睡起來,原本1%的代碼就自動寫到了99%,bug自動修復,你敢想嗎?——Hi,這不再是夢了。
  • 計算機軟體是什麼?怎麼分類?
    大家好,我是阿戴,歡迎到編程之家,作為一名計算機愛好者,期待更多人了解編程,期待每一篇文章都能夠讓你增加知識,如果喜歡,請點右上角的關注,謝謝。為了大家能更好的學習計算機編程知識,最近集中普及一下計算機的基礎知識。計算機軟體是相對於計算機硬體而言的,是各種程序的總稱,也稱為程序系統。軟體是指某一程序系統連同其相應的全部文檔。
  • 軟體工程師必讀的10本書,你讀了嗎?
    此書對軟體構建進行了全面分析,邏輯嚴密,因此在業界頗受好評。在本書中,涉及的話題主要涵蓋軟體設計、編碼、調試以及測試等。因此,對於有著一至三年專業編程經驗的工程師而言,這本書尤其值得閱讀,因為他們會受益良多。但是筆者認為,即使是軟體編程的初學者也不妨試讀一下,因為他們可以從這本書中獲得更多的自信,以面對未來的軟體編程工作。
  • 電腦編程,太痛苦了!為什麼不能用中文來編寫?
    電腦編程太痛苦了!為什麼不能用用中文來編寫?電腦編程對大家來說應該不陌生吧,編輯程序讓電腦執行的過程就叫編程。我們現在使用的各種各樣的應用程式都是那些計算機大佬們用一個個代碼編寫出來的,這一點那些從事程序編寫工作的朋友應該很清楚。
  • 電子工程師:做硬體、軟體哪個好?
    本人從事電子工程師工作已有七八年,設計硬體也編寫過軟體,包括單片機、DSP、ARM等系統軟體編寫,以及HIM人機互動軟體。本人嘗試分析一下這個問題吧。軟體相對來說,入門容易一些,當然,想要做精做強也要靠後期工作經驗的積累,一個經驗豐富的軟體工程師也是企業競爭的對象。相對來說,軟體出錯付出的代價要小一些,在原來基礎上更高即可,而硬體出錯,也許得全部設計重做,從設計、制板、元器件、實驗等全部重來,需要付出昂貴的成本代價。
  • Xilinx收購峰科計算,為增強軟體可編程性並擴大開發者社區
    12 月 2日消息,賽靈思今天宣布已收購峰科計算解決方案公司( Falcon Computing Solutions ),峰科計算是一家為軟體應用的硬體加速提供高層次綜合( HLS )編譯器優化技術的領先私人控股公司。