李冠岑
(湖北省宜昌市第一中學(xué),湖北宜昌,443000)
1936年,圖靈提出了一種抽象的模型--圖靈機(jī),肯定了計算機(jī)實現(xiàn)的可能性,同時給出了計算機(jī)應(yīng)有的架構(gòu),不久之后,世界上第一臺計算機(jī)誕生了。但令人們困擾的是,計算機(jī)無法直接理解人類的語言,怎么樣才能讓計算機(jī)“乖乖服從”人類下達(dá)的指令呢?在這種情況下,計算機(jī)語言應(yīng)運而生,人們就一直沿用并對計算機(jī)語言進(jìn)行不斷改進(jìn)。為了探尋計算機(jī)語言的未來,本文將概括計算機(jī)語言從機(jī)器碼、匯編語言到高級語言的歷史發(fā)展過程,并將其發(fā)展歷程與自然語言相比較,以此體現(xiàn)它的優(yōu)勢與弊端。
近年來,計算機(jī)語言在不斷地更新進(jìn)化,從人們難以理解的機(jī)器碼,逐漸演化成匯編語言與高級語言[1]。相比于機(jī)器碼,匯編語言與高級語言更容易讓人們理解,這也表明,計算機(jī)語言與人們的自然語言是在不斷地相互促進(jìn)并融合的。本文將對兩種語言的相同處與不同之處展開討論。
(1)計算機(jī)語言與自然語言都是“語言”。何為語言?“語言”就是將自己想要表達(dá)的信息傳遞出去的一種途徑。既然都是語言,它們的職責(zé)自然也都是將信息概括為一句或幾句甚至幾段話傳遞出去,這是它們都具有的一種性質(zhì),我們可以把它概括為“傳達(dá)性”。
(2)不是所有的語言傳達(dá)出去都能被正確地理解并接收。舉個例子,一個中國人試圖使用中文與一個不懂中文的美國人交談,顯而易見,美國人是無法理解中文的,也就是說,中國人雖然將自己的信息概括為了“中文”這種語言,但卻無法讓傾聽者明白理解。我們把這種雙方都要理解這種語言的性質(zhì)概括為“雙向性”。
此外,要讓對方理解我們的表述,必不可少的另外一個條件是:語言必須有層次性與邏輯性。還是上文的例子,現(xiàn)在我們讓那個外國人聽得懂中文了,而那個中國人卻開始說一些毫無邏輯的句子,這樣,雖然使用了同一種語言,外國人還是無法理解話語中的含義。由此可知,計算機(jī)語言和自然語言一樣,都必須具有雙向性,邏輯性以及層次性[2]。
(1)自然語言的作用對象是“人”,而計算機(jī)語言的作用對象是“計算機(jī)”,是沒有感情的機(jī)器,這恐怕是兩種語言之間的最大的也是最明顯的不同了。機(jī)器沒有人的情感以及理解能力,無法識別人們的情緒波動以及話語中所夾雜的情緒化表達(dá)。
(2)與計算機(jī)語言不同,自然語言是由人們千年來的經(jīng)驗與成長進(jìn)化中不斷演化的,其中演化出了多種多樣的分支,比如說不同國家的語言都不同,而每種語言又演化出了多種的方言等其他語言表達(dá)與簡化形式。而計算機(jī)語言卻沒有這種特性,一種計算機(jī)語言,是可以在全世界通用的[3]。
機(jī)器碼是一種使用二進(jìn)制來表示的能使計算及識別并執(zhí)行的一種計算機(jī)語言,這種代碼不僅要求操作員要熟記各種各樣的代碼,還必須擁有大量的操作經(jīng)驗以及操作耐心,雖然它現(xiàn)在已經(jīng)被大部分程序員所摒棄,但是沒有了它,計算機(jī)語言也無法發(fā)展到現(xiàn)在的狀況。
總的說來,機(jī)器碼的缺點有三:
(1)不直觀。機(jī)器碼是一串繁瑣的數(shù)字,再優(yōu)秀的程序員也不可能在看到它的第一眼時就知道它的意思。
(2)機(jī)器碼與自然語言的表述形式完全不同,人們無法迅速將自然語言轉(zhuǎn)換為機(jī)器碼的表述形式。
(3)機(jī)器碼嚴(yán)重地依賴于計算機(jī)的計算,脫離了計算機(jī)的機(jī)器碼是沒有生命的。
由于以上三種原因,雖然機(jī)器碼能夠直觀表示計算機(jī)處理器的工作流程,但其復(fù)雜度致使計算機(jī)應(yīng)用沒能在那個時代掀起巨大的波瀾。
隨著技術(shù)的進(jìn)步,匯編語言應(yīng)運而生。匯編語言是一種對應(yīng)機(jī)器語言的指令集,借助匯編程序,可以將簡化過的匯編語言翻譯成二進(jìn)制代碼(也就是我們口中的機(jī)器碼)。所以本質(zhì)而言,匯編語言仍然是一種低級語言,但是相對于機(jī)器碼而言,它對于計算機(jī)用戶更加友好,因為匯編語言加入了一些簡單易懂的符號語言,并且擁有著低級語言所共有的優(yōu)勢。因此相對于高級語言,匯編語言和機(jī)器碼都可以保證計算機(jī)的運行效率。
但是,匯編語言依然不能夠滿足大部分用戶的理解需求,無法在推廣計算機(jī)應(yīng)用方面有所作為。因此現(xiàn)在匯編語言的運用相對較少,一般只用于系統(tǒng)編程的應(yīng)用以及簡單應(yīng)用的編碼。
時代的步伐永不停息,繼匯編語言之后,高級編程隨著計算機(jī)技術(shù)的進(jìn)步出現(xiàn)了。高級語言是將一部分的指令匯編于一體的一類語言,與低級語言的最大不同是,它使用了人們能夠理解的自然語言,進(jìn)而大大提高了對于計算機(jī)用戶的友好程度。但與此同時,高級語言脫離了對計算機(jī)硬件的操作,進(jìn)而對于硬件的控制力下降,這也就意味著計算機(jī)在解析高級語言時需要經(jīng)過繁瑣的翻譯工序,這也就在一定程度上降低了計算機(jī)的運行效率[4]。
Python是一種適合初學(xué)者使用的非編譯語言,它簡單易懂,易于上手。在編程游戲,開發(fā)網(wǎng)頁,制作桌面GUI,開發(fā)軟件等領(lǐng)域都有著廣泛的應(yīng)用。
Python的特點是易于編寫,對于初學(xué)者非常友好,它也是廣泛認(rèn)同的最容易學(xué)習(xí)的編程語言之一。因此Python將有望成為物聯(lián)網(wǎng)中的一顆新星,許多的新平臺都已使用Python作為主要編程語言;與此同時,Python也具有令人詫異的庫存函數(shù),使得它能夠被用來輕易地編寫程序。然而,Python作為一種非編譯型語言,其執(zhí)行速度是肯定要慢于其他語言的,其次,它是一種動態(tài)型語言,出現(xiàn)錯誤時需要反復(fù)多次檢查,才能找到錯誤所在。
C語言作為一種進(jìn)階編程語言,是開發(fā)系統(tǒng)固件的重要語言。C語言被用來開發(fā)操作系統(tǒng)、硬件程序及常用軟件,是一種多用途的計算機(jī)語言。
C語言作為一種多用途的計算機(jī)語言,具有Python所不具備的移動性,不對其語言做大幅度改動便可以很容易地在多種平臺上運行。除此之外,C語言“很小”,這里的“很小”指的是C語言完全基于變量以及宏命令,因此可以被嵌入到很多微型處理器之中。但是C語言沒有運行檢查機(jī)制,而且相比對新人比較友好的Python語言來說,C語言的難度比較大,要學(xué)會C語言需要具有一定的編程基礎(chǔ)。
JavaScript(JS)是一種通用的客戶腳本語言,有著很好的兼容性以及不容小覷的運行速度。JS一般被用來制作網(wǎng)頁前端,以及制作分析,包括制作簡單的小工具,以及WEB交互制作等。
JS的顯著特點是很“樸素”,也就是面向大眾,是一種大眾化語言。JS的學(xué)習(xí)不需要多深的編程功底,幾乎所有人都可以輕松地掌握它。不過在JS具有多功能性的同時,也具有了一定的不安全性,所以一部分人選擇了禁用JS。此外,由于JS的簡易性,在相同的腳本下有可能出現(xiàn)不同的執(zhí)行結(jié)果。
Java與JavaScript語法相似,但有著一定的不同。Java是程序開發(fā)者最常用的一種高級語言,在編程語言排行榜上常年占據(jù)榜首的位置。Java語言常被用于進(jìn)行安卓應(yīng)用的編程與開發(fā),也被用來進(jìn)行視頻游戲應(yīng)用的開發(fā),桌面GUI的編程也可以依靠它進(jìn)行。
Java擁有很光明的應(yīng)用前景,其市場需求和就業(yè)需求也與日俱增。此外,Java語言也并非一成不變,它在不停的進(jìn)化,因此要熟練地使用java語言具有一定的難度。另外,Java編譯器的運行會占用很大的內(nèi)存空間,對于電腦的硬件有一定的要求。
計算機(jī)語言已經(jīng)從早期的機(jī)器碼逐漸發(fā)展成匯編語言及高級語言,例如Java、JS、Python,C,C+,C++等,它們使計算機(jī)語言與自然語言的關(guān)系更拉近了一步。隨著信息技術(shù)的不斷進(jìn)步,計算機(jī)編程語言也在不斷進(jìn)行創(chuàng)新和優(yōu)化,旨在實現(xiàn)更強(qiáng)大的功能,也為編程人員提供更便捷的方式。在未來,計算機(jī)語言將朝著以下幾個方向發(fā)展:
(1)未來計算機(jī)語言也會朝著“自機(jī)合一”,也就是朝著自然語言與計算機(jī)結(jié)合的方向發(fā)展。在未來,人們可以通過語音輸入及直接對話的方式將自己想要表達(dá)的意思直接轉(zhuǎn)變?yōu)橐淮a,而這一段代碼可以直接被計算機(jī)翻譯為機(jī)器碼,這樣便可以使計算機(jī)的運行速度更快的同時使得計算機(jī)直接執(zhí)行人的語音指令;
(2)計算機(jī)語言將逐漸朝著面向?qū)ο缶幊碳昂瘮?shù)式編程的方向發(fā)展。在未來,計算機(jī)編程語言會向用戶提供清晰易用的類編程模式與簡單執(zhí)行復(fù)用的函數(shù)模式,進(jìn)而豐富程序的功能與擴(kuò)展性,促進(jìn)計算機(jī)程序的發(fā)展;
(3)計算機(jī)語言應(yīng)更加注重程序的安全性。未來的計算機(jī)語言應(yīng)在保證實現(xiàn)程序功能的基礎(chǔ)上制定相應(yīng)的安全體系和措施,進(jìn)而營造安全的程序編寫環(huán)境[5]。
本文對計算機(jī)語言的發(fā)展做了一個簡單的概述,比較了自然語言與編程語言的不同,同時介紹了幾種常見的計算機(jī)語言,并在最后對于計算機(jī)未來的發(fā)展趨勢以及方向做了一個簡單的預(yù)測。我們可以相信,計算機(jī)語言將會不斷完善發(fā)展,使得計算機(jī)程序編寫的門檻越來越低,能夠讓更多的人參與到程序設(shè)計之中。在未來,計算機(jī)程序的功能將更為豐富,為我們的生活帶來更多的便利。