亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

機器語言

這個問題應(yīng)該從機器語言是怎么工作說起的。

在計算機的太古宙時代,在制造一臺計算機之前,首先要做的是為它建造一座能夠容納它的大房子。然后還要配接上水電資源,因為它運行起來就要耗費半座城市的電能,散熱也得跟上。

而能夠操縱這樣的由電子管組成的怪獸的人,則是看起來低調(diào)神秘的科學怪人,他們在一卷紙帶上打上不規(guī)則的孔,送入機器,然后等著這臺怪獸一陣轟鳴之后在紙帶上輸出結(jié)果。

而這樣的機器也僅能進行算術(shù)運算,那些穿孔紙帶組成的神秘符號,就是機器語言。

下面看一段機器語言的代碼吧:

 A10010
 8B160210 01D0 A10410

要是有誰一眼就能說出它的功能,那么請接受我雙膝跪地頂禮膜拜。如果看不明白,也沒關(guān)系,后面語言越高級越容易看明白。

上面的每一條語句就是CPU可執(zhí)行的一條指令。CPU常被比喻成計算機的大腦,因為指令的計算最終是由它來完成的。

而指令通常包括運算和賦值,往往單條指令的動作都是簡單的,只做一件事情。我們通過把多條指令按順序排列讓CPU執(zhí)行,以此來實現(xiàn)復雜的邏輯。

編程語言是怎樣從機器語言進化到面向?qū)ο蟮模? img_height=

 

匯編語言

可想而知,如果要這樣寫代碼,人類還怎么進步?于是科學家們就做了一下改進,讓代碼好懂了些,這就有了匯編語言。

將上面機器的代碼翻譯成匯編語言:

 mov AX, X
 mov DX, Y add AX, DX
 mov Z, AX 

在這里我們可以看到,神秘的字母和數(shù)字組合轉(zhuǎn)化成了有意義的單詞和字母了。學過匯編語言的同學們自不必說,沒學過的也可以大略猜測到,mov應(yīng)該就是move的縮寫,是搬運、賦值;add就更好理解,加法。

而匯編的特點是它雖然比機器語言更好理解了些,但它和機器語言也是逐條對應(yīng)的。要想實現(xiàn)復雜的邏輯控制,寫出來的代碼仍然很不好理解。

科學家們再一次對編程語言進行了改進,而這一次則是飛躍。

 

高級語言

誕生于1957年的Fortran,以及1960年左右發(fā)布的COBOL,被認為是最早的計算機實用編程高級語言。它們相對于匯編語言的改進在于,語句不再和機器指令對應(yīng),而是更接近自然語言。

所以高級語言中的“高級”二字,并不是說新的編程語言有多么先進,而是說它們在系統(tǒng)中處于更高一級的抽象。高級語言的代碼更適合于人類編寫與閱讀了。

例如前述的機器語言和匯編語言代碼,如果用Fortran語言寫出來,就是這樣:

 Z = X + Y

怎么樣?即使不懂編程,也能看出來是什么意思吧,這類似一個數(shù)學算式了。當然,在計算機語句里,這是一條賦值語句,和數(shù)學語境中的等式還是有所不同的。

而高級語言需要通過編譯器,將文本符號翻譯成機器可以執(zhí)行的指令集。編譯的過程一般分為四個過程,分別是預處理、編譯、匯編、鏈接,最后得到可執(zhí)行文件。

可以使用近似于自然語言的方式寫程序,這顯然有助于編程技術(shù)的推廣,也推動了計算機的普及和軟件的快速發(fā)展。

可是編程的效率提高之后,另一個問題也隨之而來。那就是代碼缺少規(guī)范,只要能實現(xiàn)功能,大家可以隨心所欲地寫代碼。尤其是對goto語句的濫用,導致代碼混雜扭曲,因此這樣的代碼也被稱為“面條式代碼”。

當軟件需求進一步膨脹時,這樣的編程效率又跟不上發(fā)展了。由此在20世60年代爆發(fā)了軟件危機。1968年北約在聯(lián)邦德國的國際學術(shù)會議上正式提出了這個名詞。

軟件危機的意思就是說,大家照這樣去寫代碼,那么再過幾十年,全人類都去當程序員也生產(chǎn)不出實際需要的軟件來。確實有點危言聳聽,但我們知道現(xiàn)在并沒有出現(xiàn)那么駭人的景象,這都要感謝科學家們在編程思想上的進步。

 

結(jié)構(gòu)化編程

同樣是在1968年,荷蘭計算機科學家Dijkstra在寫給ACM通訊的一封信中,聲明應(yīng)該在程序中廢除goto語句,只需要使用三種基本結(jié)構(gòu)就可以完成所有的程序功能。

這封信就是著名的“GoTo letter”,由這封信開始掀起了結(jié)構(gòu)化編程的浪潮,Dijkstra也因為他在計算機技術(shù)上的卓越貢獻,在1972年獲得了圖靈獎。

編程語言是怎樣從機器語言進化到面向?qū)ο蟮模? img_height=

Dijkstra老爺子

Dijkstra提出的三種基本程序結(jié)構(gòu),分別是順序、選擇、循環(huán)。

順序 就是從第一條語句開始,直到執(zhí)行至最后一條語句結(jié)束,中間每一條語句都要被執(zhí)行到。

選擇 則是根據(jù)條件判斷,程序決定執(zhí)行相應(yīng)的語句。

循環(huán) 則是判斷條件,重復執(zhí)行語句。

上世紀七十年代,誕生于貝爾實驗室的C語言是最知名的結(jié)構(gòu)化編程語言。同時C語言也是使用最廣泛的編程語言。

時至今日,得益于物聯(lián)網(wǎng)的快速發(fā)展,在IOT技術(shù)棧中占有重要地位的C語言,又在TIOBE編程語言排行榜上大放異彩。對于一門存在了四十多年的編程語言來說,這不能不說是一個奇跡。

C語言因其簡潔的語法,同時具備對系統(tǒng)底層的操作能力,成為編寫操作系統(tǒng)及底層服務(wù)的最佳選擇。

軟件危機終究還是沒有爆發(fā),人類也從單機時代進入了互聯(lián)網(wǎng)時代。人們又需要開發(fā)起來更快、還要更好用的編程語言了。

面向?qū)ο缶幊?/strong>

面向?qū)ο缶幊痰挠⑽氖荗bject Oriented Programming,下文中簡稱其為OOP。一般來說,支持OOP的語言都包含三個特性,即封裝、繼承和多態(tài)。

其實最早的面向?qū)ο缶幊陶Z言是Simula 67,它誕生于1967年。在當時,OOP所要求的三個特性,Simula 67就都具備了。

所以面向?qū)ο蠹夹g(shù)還真不是我們遇到危機時才發(fā)明出來的,而是早已存在,但在60年代時太過超前而并沒有被普及開來。

直到互聯(lián)網(wǎng)和PC興起,快速產(chǎn)品化的要求催使人們?nèi)ふ腋m合的方法。語法像自然語言已經(jīng)遠遠不夠了,編程語言最好還能符合人類的自然思維過程,而OOP包含的三個基本特性,正好滿足了這個要求。

如今我們在學習面向?qū)ο缶幊陶Z言時,老師都會通過現(xiàn)實世界打比方。例如定義一個類就相當于畫好了一張汽車的設(shè)計圖,所有的細節(jié)都隱藏在私有方法中,對外只公開操作方法,包括啟動和停止等。

通過類,就能派生出一個實例,也就是一輛實際可以開的車。你調(diào)用公開的方法就能開車上路了,而且不用關(guān)心它內(nèi)部是如何運作的。你只要能把奧迪開起來,那么寶馬你也能開。

JAVA、C#、php等語言正是在這樣的背景下興起,它們上手簡單,一名新人經(jīng)過短期培訓就能上崗工作。這降低了軟件開發(fā)的門檻,也讓互聯(lián)網(wǎng)企業(yè)具備了快速拓展業(yè)務(wù)的能力。

C++語言在早期因其包羅萬象的特點,曾被大神Linus痛批。但在C++ 11發(fā)布之后,C++被注入了許多現(xiàn)代編程語言的元素,也被稱為Morden C++。如今C++已經(jīng)大量應(yīng)用在游戲引擎、人工智能、大數(shù)據(jù)等領(lǐng)域的基礎(chǔ)組件構(gòu)建中。

當進入移動互聯(lián)網(wǎng)時代之后,編程語言發(fā)展更加快速,但都會具備面向?qū)ο蟮娜齻€基本特性。

在終端,蘋果公司推出的編程語言就有Objective C、Swift。以谷歌為主導的Android平臺則使用java、C/C++、Kotlin。

編程語言不斷推陳出新,但只要是支持OOP特性的,對程序員來說就可以快速上手工作。這可能也是中國在移動互聯(lián)網(wǎng)時代擁有諸多優(yōu)秀企業(yè)和應(yīng)用的原因吧。

 

結(jié)語

縱觀編程語言的發(fā)展,可以清晰地觀察到,它是朝著對人越來越友好的方向的。從便于識別,到易于閱讀,再到符合自然思維習慣。

編程語言前進的每一步,都是為了讓人在使用這種工具時,能夠更有效率地實現(xiàn)功能,達成目標。在一個階段被滿足之后,快速興起的需求又會推動編程語言走向下一個時代。

可以推測,基于人工智能技術(shù)的輔助,編程技術(shù)將不再需要經(jīng)過大量專業(yè)學習才能掌握。任何人只要具備邏輯表達的能力,就能生產(chǎn)出符合自己需要的軟件產(chǎn)品。

這樣的設(shè)想在現(xiàn)在看來可能是太美好了一些,因為有科學家認為完全不需要人工干預就不太可能,因為機器無法處理所有的細節(jié)。

我也很好奇,在未來編程語言會是什么樣呢?

分享到:
標簽:編程語言
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定