您好,登錄后才能下訂單哦!
今天小編給大家分享一下web編程語言的進化史是什么的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
機器語言是面向機器的語言,每一個由機器語言所編寫的程序只適用于某種特定類型的計算機,即指令代碼通常隨CPU型號的不同而不同。它可以被計算機硬件直接識別,不需要翻譯。一句機器語言實際上就是一條機器指令,它由操作碼和地址碼組成。機器指令的形式是用0、1組成的二進制代碼串。
匯編語言是一種面向機器的程序設計語言,它是為特定的計算機或計算機系列設計的。匯編語言采用一定的助記符號表示機器語言中指令和數據,即用助記符號代替了二進制形式的機器指令。這種替代使得機器語言“符號化”,所以匯編語言也是符號語言。每條匯編語言的指令就對應了一條機器語言的代碼,不同型號的計算機系統一般有不同的匯編語言。
計算機硬件只能識別機器指令,執行機器指令,對于用助記符表示的匯編指令是不能執行的。匯編語言編寫的程序要執行的話,必須用一個程序將匯編語言翻譯成機器語言程序,用于翻譯的程序稱為匯編程序(匯編系統)。
匯編程序是將用符號表示的匯編指令碼翻譯成為與之對應的機器語言指令碼。用匯編語言編寫的程序稱為源程序,變換后得到的機器語言程序稱為目標程序。
機器語言與匯編語言受機器限制費工費時,并且缺乏通用性,為解決此問題,人們努力創造一種獨立于計算機的語言。從20世紀50年代中期開始到20世紀70年代陸續產生了許多高級算法語言。這些算法語言中的數據用十進制來表示,語句用較為接近自然語言的英文字來表示。它們比較接近于人們習慣用的自然語言和數學表達式,因此稱為高級語言。高級語言具有較大的通用性,尤其是有些標準版本的高級算法語言,在國際上都是通用的。用高級語言編寫的程序能使用在不同的計算機系統上。 但是,對于高級語言編寫的程序計算機是不能識別和執行的。要執行高級語言編寫的程序,首先要將高級語言編寫的程序翻譯成計算機能識別和執行的二進制機器指令,然后供計算機執行。
一般將用高級語言編寫的程序稱為“源程序”,而把由源程序翻譯成的機器語言程序或匯編語言程序稱為“目標程序”。把用來編寫源程序的高級語言或匯編語言稱為源語言,而把和目標程序相對應的語言(匯編語言或機器語言)稱為目標語言。
計算機將源程序翻譯成機器指令時,通常分兩種翻譯方式:一種為“編譯”方式,另一種為“解釋”方式。所謂編譯方式是把源程序翻譯成等價的目標程序,然后再執行此目標程序。而解釋方式是把源程序逐句翻譯,翻譯一句執行一句,邊翻譯邊執行。解釋程序不產生將被執行的目標程序,而是借助于解釋程序直接執行源程序本身。一般將高級語言程序翻譯成匯編語言或機器語言的程序稱為編譯程序。
高級語言:實現效率高,執行效率低,對硬件的可控性弱,目標代碼大,可維護性好,可移植性好 低級語言:實現效率低,執行效率高,對硬件的可控性強,目標代碼小,可維護性差,可移植性差
我們都知道CPU運行的是二進制指令,所有的語言編寫的程序最終都要翻譯成二進制代碼,但是為什么實現會有以上眾多差異呢?下面以C語言為高級語言代表,匯編語言為低級語言代表來解釋一下。越低級的語言,形式上越接近機器指令,匯編語言就是與機器指令一一對應的。而越高級的語言,一條語句對應的指令數越多,其中原因就是高級語言對底層操作進行了抽象和封裝,使編寫程序的過程更符合人類的思維習慣,并且極大了簡化了人力勞動。也就是說你用高級語言寫一句,會被轉換成許多底層操作,大部分的工作交給了負責轉換的機器(即編譯器),從而人力得到了解放。因為機器就是用來為人類提供便利的,所以說高級語言的出現是計算機發展的必然結果。下面重點解釋為何低級語言的執行效率更高:
越低級的語言月接近底層,即控制硬件訪問的能力越強,對硬件資源的利用效率越高。比如說匯編語言能夠訪問寄存器,而C語言就做不到。通過對寄存器等硬件的訪問,我們可以將程序的運行效率優化到最大,而像C這樣的高級語言用的最多的是堆棧這樣的內存結構,訪問速度自然不如寄存器了。
各種語言需要通過編譯器翻譯成機器碼,不管編譯多么智能和強大,都是會產生冗余。這里的冗余不是指指令的多少,而是有沒有做沒有必要的事情。 產生冗余的多少關鍵要看語言跟機器指令之間的耦合度。耦合度越大,編譯器翻譯過程越簡單,產生的冗余越少。對應匯編來書,由于與機器碼一一對應,所以翻譯后基本沒有冗余。而高級語言由于進行了抽象和封裝,所以與機器指令間的耦合度較低,因此整個翻譯過程較復雜,因此在高級語言在具體化的過程中不可避免會產生較多的冗余。據說C語言有10%的效率損失。
一個差的程序員用匯編寫程序,可能存在很多沒有用的操作,而程序高手用c語言寫,可以將程序優化到最大。最終的結果可能是匯編的程序跑不過C語言程序。
總之,完成一項工作的工作量是不變的,機器做的 多了,人就做的就少了,同時人對程序的很多細節的控制性也減弱了。各種語言都是在這個平衡點附近糾結。從C/C++的注重機器運算效率的優化,到C#/JAVA注重開發效率的優化。人操作起來更加方便了,更高效了,代價就是,機器要處理的東西更多,運算效率被進一步壓縮。但是這個壓縮在許可范圍內,那么這也是一種進步。
以上就是“web編程語言的進化史是什么”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。