從本質(zhì)上看,編程語(yǔ)言是什么?

?"語(yǔ)言并非僅僅是一種用以交流思想的工具,而且是存在的住所。"

編程思維與編程語(yǔ)言是編程中兩大重要板塊。輕松搭建編程邏輯的關(guān)鍵,在于準(zhǔn)確把握它們本質(zhì)。

編程語(yǔ)言種類有很多,Python、C語(yǔ)言、C++,Java.....當(dāng)然還有孩子喜歡的Scratch圖形化編程語(yǔ)言。這么多編程語(yǔ)言,共通之處在哪里?新手老師,如何快速掌握一門編程語(yǔ)言?孩子學(xué)編程語(yǔ)言,關(guān)鍵在于學(xué)什么?

一、萬變不離其宗,編程語(yǔ)言的實(shí)質(zhì)是什么?

語(yǔ)言是人類最重要的交際工具,是人們溝通的主要表達(dá)方式。

人類迄今為止發(fā)明了三種標(biāo)志性的語(yǔ)言,分別是自然語(yǔ)言、數(shù)學(xué)語(yǔ)言、程序語(yǔ)言,分別對(duì)應(yīng)了人類的三個(gè)文明時(shí)代:農(nóng)業(yè)與手工業(yè)時(shí)代、工業(yè)時(shí)代、信息時(shí)代。

每一種符號(hào)體系的建立都是人類智慧跨越式的發(fā)展,是上了一個(gè)大臺(tái)階。

相比于人類語(yǔ)言,琳瑯滿目的編程語(yǔ)言,它們的實(shí)質(zhì)是什么?

實(shí)際上,任何一門編程語(yǔ)言至少包含兩類內(nèi)容:? ? ?

知識(shí)(編程語(yǔ)言的共性,可遷移)

規(guī)則(編程語(yǔ)言的特性,不可遷移)

知識(shí)是共性,面向所有編程語(yǔ)言通用。

規(guī)則是特性,一門編程語(yǔ)言特有的規(guī)則。

就像人類語(yǔ)言用于人與人的交流,編程語(yǔ)言能實(shí)現(xiàn)人與機(jī)器之間的交流溝通,讓人類可以享受智能服務(wù)的便利與好處。編程語(yǔ)言的實(shí)質(zhì),在于人機(jī)高效溝通的規(guī)則。

1)首先,編程是一門語(yǔ)言類技能

通俗的說,語(yǔ)言基本被定義成一種人際溝通的工具,或用于人際溝通的一組符號(hào)。而編程語(yǔ)言(Programming Language)可以簡(jiǎn)單理解為一種計(jì)算機(jī)和人都能識(shí)別的語(yǔ)言。既然能稱作做語(yǔ)言,同樣也遵循著語(yǔ)言的規(guī)律。

我們學(xué)習(xí)一門語(yǔ)言,最接近本質(zhì)地學(xué)習(xí)一門語(yǔ)言時(shí),我們最關(guān)心什么?

答案就是這個(gè)語(yǔ)言的規(guī)范/語(yǔ)言標(biāo)準(zhǔn)。正是這份規(guī)范/標(biāo)準(zhǔn)里的內(nèi)容,讓一門語(yǔ)言真正成了一門語(yǔ)言。

人類語(yǔ)言的規(guī)則,并沒有一開始就被固化在某處,而是會(huì)經(jīng)過一個(gè)動(dòng)態(tài)學(xué)習(xí)的過程,然后最終被固化在人類大腦中。

人類的語(yǔ)言是人與人直接交流用的,經(jīng)過了幾十萬年的打磨,可以比較隨意地表達(dá),文字順序亂了我們也能看得懂,因?yàn)橛形幕驼Z(yǔ)境的幫助。然而,機(jī)器為了準(zhǔn)確,不能有這樣的隨意性,必須得有一定的規(guī)范。

2)其次,編程語(yǔ)言規(guī)范,起源于人機(jī)相互馴化

編程語(yǔ)言和人類語(yǔ)言相似的地方,在于都有一定規(guī)則:

誰是傾聽者、執(zhí)行者,誰就要理解命令者語(yǔ)言背后隱含的意義;同樣的,誰是發(fā)號(hào)施令者,發(fā)起溝通的人,誰就有義務(wù)把話說清楚、說明白、保證對(duì)方基本能聽懂。

橫梗在現(xiàn)實(shí)的問題是:機(jī)器與人類不同。

機(jī)器,是人類發(fā)明出來的傀儡,勝在“嚴(yán)謹(jǐn)刻板”“唯令是從”,也敗在“機(jī)械呆板”“不知變通”。

人類不屑于機(jī)器唯令是從的特性,機(jī)器也沒有快速理解人類意圖的智慧。

人類的語(yǔ)言充滿迂回,不同個(gè)性的人溝通時(shí),過于木訥,缺乏共同的文化背景、經(jīng)歷與共識(shí),不敞開天窗說亮話,就有人根本聽不出話中話、弦外之音,機(jī)器更是如此。

然而,畢竟是我們想讓機(jī)器代勞,我們就得使盡招數(shù)讓機(jī)器力所能及,就是我們?nèi)祟愊热ダ斫鈾C(jī)器的行事風(fēng)格和思維方式,然后再教會(huì)機(jī)器全力理解人類的意圖與規(guī)則。

這就相當(dāng)于我們想讓英國(guó)人替我們完成一個(gè)任務(wù),我們說英語(yǔ)的效率最高;我們想讓計(jì)算機(jī)完成任務(wù),我們就要去理解計(jì)算機(jī)的運(yùn)作方式,然后輸入計(jì)算機(jī)能識(shí)別的語(yǔ)言。

編程語(yǔ)言的誕生與演化,其實(shí)是人類與機(jī)器互相學(xué)習(xí)、雙向馴化的產(chǎn)物,是“讓機(jī)器聽人類”與“還是讓人類懂機(jī)器”雙方博弈的結(jié)果。

二、編程語(yǔ)言的演變:編程語(yǔ)言是如何演化的?

編程語(yǔ)言自誕生起,就是在不斷的進(jìn)化升級(jí),進(jìn)化的方向包括兩種:更像機(jī)器的語(yǔ)言,還是更像人類的語(yǔ)言。

1)第一階段:機(jī)器語(yǔ)言

第一代計(jì)算機(jī)語(yǔ)言,稱為機(jī)器語(yǔ)言。用二進(jìn)制代碼0和1描述的指令稱為機(jī)器指令。全部指令的集合構(gòu)成計(jì)算機(jī)的機(jī)器語(yǔ)言。

機(jī)器的底層世界只是有電和沒電兩種狀態(tài),分別用1和0表示,這就是二進(jìn)制的來源。在計(jì)算機(jī)內(nèi)部,無論是一部電影還是一首歌曲或是一張圖片等等,最終保存的都是0和1組成的代碼。

機(jī)器語(yǔ)言對(duì)于CPU來說十分親切友好,能夠被CPU識(shí)別并執(zhí)行,但是對(duì)于設(shè)計(jì)開發(fā)人員卻完全相反。畢竟機(jī)器語(yǔ)言不是人類擅長(zhǎng)使用的語(yǔ)言,它的可閱讀性很差。

理解機(jī)器語(yǔ)言尚需要時(shí)間,更別提用它編寫程序。人們很快就設(shè)計(jì)出來了各種高級(jí)語(yǔ)言來編程,但是也帶來了新的問題——計(jì)算機(jī)讀不懂我們寫的程序。

2)第二階段:匯編語(yǔ)言

為了辨別和記憶,人類開始使用第二種語(yǔ)言,即將 0/1 代碼翻譯為英文單詞,這些英文單詞直接對(duì)應(yīng)著一串 0/1 指令。這個(gè)就是匯編語(yǔ)言。

通過專門的軟件就可以將這些英文單詞轉(zhuǎn)化成 0/1 代碼并由計(jì)算機(jī)執(zhí)行,這種專門起翻譯的作用的軟件叫作編譯器。

這些英文單詞和與它們對(duì)應(yīng)的 0/1 代碼之間的對(duì)應(yīng)關(guān)系,以及語(yǔ)言的語(yǔ)法,在編寫這個(gè)軟件的時(shí)候就已經(jīng)寫在里面了。只需要通過編譯器就可以將這些都轉(zhuǎn)化成 0/1 代碼,大大方便程序的編寫。

3)第三階段:高級(jí)語(yǔ)言

第三代語(yǔ)言又叫“高級(jí)語(yǔ)言”,就是我們今天不斷進(jìn)階的各類編程語(yǔ)言,可閱讀性更強(qiáng),能夠方便地表達(dá)程序的功能,更好地描述使用的算法,更容易被初學(xué)者所掌握。

編程一般用高級(jí)語(yǔ)言,計(jì)算機(jī)不能直接理解高級(jí)語(yǔ)言,只能理解和運(yùn)行機(jī)器語(yǔ)言,所以必須要把高級(jí)語(yǔ)言翻譯成機(jī)器語(yǔ)言,計(jì)算機(jī)才能運(yùn)行高級(jí)語(yǔ)言所編寫的程序。

三、思維vs語(yǔ)言:為什么學(xué)習(xí)編程能夠訓(xùn)練思維?

在農(nóng)業(yè)與手工業(yè)時(shí)代,人類對(duì)上帝的隱喻就是一個(gè)農(nóng)夫;工業(yè)時(shí)代,上帝被假想為一個(gè)偉大的機(jī)械工程師;而今天,最精妙的隱喻就是——上帝是一個(gè)程序員。當(dāng)你觀察DNA上基因的序列時(shí),你一定覺得那是偉大程序員的作品。

編程語(yǔ)言是一種簡(jiǎn)潔的、高純度的、形式化的知識(shí)系統(tǒng)。它的類比對(duì)象是自然語(yǔ)言、數(shù)學(xué)語(yǔ)言,是一種思維工具。它的關(guān)鍵作用是塑造一種全新的世界觀、思維方式、解決問題的手段,掌握它的人可以發(fā)掘出這個(gè)世界更深、更廣的可能性。

不論是歷史中的可編程發(fā)明,還是近代的計(jì)算機(jī)編程語(yǔ)言發(fā)展,我們都能從中看出,編程技術(shù)的目的是駕馭機(jī)器、駕馭計(jì)算機(jī),讓它們更高效地解決問題。

所以孩子學(xué)編程時(shí),要逐步接觸、理解、體驗(yàn)編程的邏輯操作、算法、數(shù)據(jù)結(jié)構(gòu)、工程設(shè)計(jì)等通用的工程方法與數(shù)學(xué)知識(shí),這樣才符合孩子的學(xué)習(xí)成長(zhǎng)規(guī)律。

學(xué)生在需要使用新的編程語(yǔ)言時(shí),這些核心知識(shí)也能夠幫助他們更快融匯貫通。更重要的是,學(xué)生可以脫離編程語(yǔ)言,更純粹地思考如何讓計(jì)算機(jī)解決問題,具有“編程思維”。

現(xiàn)在為了競(jìng)賽升學(xué),很多家長(zhǎng)送孩子去學(xué) C++ 之類的編程語(yǔ)言。在小學(xué)階段就開始學(xué) Python和C++編程語(yǔ)言意義不大。因?yàn)楹⒆拥某橄笏季S和形式邏輯思維發(fā)展還不完善,對(duì)純代碼難以產(chǎn)生真正的理解,很容易死記硬背。

而語(yǔ)言是死的,而思維是活的。學(xué)編程,重要的是掌握編程語(yǔ)言的語(yǔ)言特性,而不是語(yǔ)言本身。畢竟,大多數(shù)孩子未來不會(huì)靠編程吃飯,學(xué)習(xí)編程的目的,更偏重于培養(yǎng)編程思維,把編程中的概念和解決問題的方法論,盡可能地應(yīng)用到學(xué)習(xí)和生活中去。

寫在最后

對(duì)于兒童而言,編程語(yǔ)言的學(xué)習(xí),可以是無意識(shí)的伴隨狀態(tài),關(guān)鍵在于學(xué)習(xí)編程語(yǔ)言的規(guī)則,也就是規(guī)則背后思維的訓(xùn)練!不管是從語(yǔ)言角度,還是從思維角度出發(fā),學(xué)編程對(duì)孩子最重要的還是掌握編程思維、搭建編程邏輯。打好編程思維基礎(chǔ)后,掌握了用搜索引擎查找資料、閱讀官方文檔、在社區(qū)求助的能力之后,孩子日后完全可以自學(xué)任何一門編程語(yǔ)言,真正受益!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容