自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

編程究竟是數(shù)學還是語言?程序員的大腦又如何處理計算機語言?

開發(fā) 后端
2016 年蓋洛普民意測驗(Gallup poll)調(diào)查發(fā)現(xiàn),在美國,大多數(shù)學校希望開始教授編程,且 66% 的美國基礎(chǔ)教育(簡稱 K-12 教育)學校的校長認為,非計算機專業(yè)的學生也應該考慮學習計算機科學。

 2016 年蓋洛普民意測驗(Gallup poll)調(diào)查發(fā)現(xiàn),在美國,大多數(shù)學校希望開始教授編程,且 66% 的美國基礎(chǔ)教育(簡稱 K-12 教育)學校的校長認為,非計算機專業(yè)的學生也應該考慮學習計算機科學。

大多數(shù)歐洲國家都在學校課程中增設了編程課和計算機科學,其中法國和西班牙早在 2015 年就開設了這些課程。很顯然,在這樣高速增長的勢頭之下,新生代程序員持續(xù)涌現(xiàn),預計會將全球開發(fā)人員的規(guī)模從 2019 年的 2390 萬增加到 2024 年的 2870 萬。

而在中國,編程教育有多火熱就更不用贅述了,“內(nèi)卷” 這個詞便被頻頻用來形容該領(lǐng)域。

盡管各行各業(yè)在編程的教育上做了如此多的努力,但對于如何教授編程仍然存在一些困惑。

比如說,我們至今都沒搞明白,它究竟更像一種語言,還是更像數(shù)學?

尤其從腦科學的角度來看,計算機編程是一種新穎的認知工具,已經(jīng)改變了現(xiàn)代社會。哪些認知和神經(jīng)機制支持這項技能?

這個問題至關(guān)重要,因為它將決定著我們的傳授該領(lǐng)域知識的方式應該遵循怎樣的底層方法。

正如麻省理工學院的神經(jīng)科學家安娜・伊萬諾娃(Anna Ivanova)所說:“我們有興趣探討語言和計算機編程之間的關(guān)系,部分原因在于,計算機編程是一個新的發(fā)明,我們知道不可能有任何結(jié)構(gòu)上的硬件機制(hardwired mechanisms)讓我們成為優(yōu)秀的程序員。”

安娜・伊萬諾娃也和她的同事進行了一項新的研究,嘗試通過觀察受試者在閱讀 Python 代碼時的大腦活動,來回答這個問題。

編程語言本質(zhì)是什么?兩種不同的解答

目前,針對上述疑問,存在兩種思想流派 ——“語言派” 和 “數(shù)學派”。

其中,較為流行的觀點是,編程是一種語言,必須遵循自己的語法規(guī)則和語義規(guī)則。畢竟,它們被稱為編程語言是有原因的。

在某些方面,學習計算機編程也與學習新語言相似。它要求學習新的符號和術(shù)語,必須正確組織這些符號和術(shù)語以指導計算機該怎么做。計算機代碼還必須足夠清晰,以便其他程序員可以閱讀和理解。

因此,依附于該觀點之下,還有一個頗為時髦的縮寫:CAL, Coding as Another Language。

而與之對立的是,有些人認為編程更像是學習數(shù)學中的邏輯,即借助公式和算法來創(chuàng)建輸入和輸出。

究竟哪種方法更貼近真理?自編程進入到教育體系以來,爭論就從未休止,但目前看來,“語言派” 顯然已占據(jù)上風。

比如說,在美國德克薩斯州(Texas)、俄克拉何馬州(Oklahoma)和喬治亞州(Georgia)的法律均允許高中生選修計算機科學課程,以完成他們的外語學分。

但這場辯論對神經(jīng)科學家似乎有著特殊的意義:由于計算機編程才出現(xiàn)了幾十年,大腦還沒有進化出任何特殊的區(qū)域來對其進行處理,所它必須重新利用大腦中通常用來處理其他事情的區(qū)域。

.因此,就在去年年底,麻省理工學院(MIT, Massachusetts Institute of Technology)的神經(jīng)科學家試圖觀察人們在處理計算機編程時會用到大腦的哪些區(qū)域和所對應的功能系統(tǒng)。

他們認為,“解釋計算機代碼的能力是一種非凡的認知技能,與包括一般執(zhí)行功能、數(shù)學、邏輯和語言在內(nèi)的不同認知領(lǐng)域有著相似之處。”

 

考慮到一個人成年后可以學會編程的事實,它一定是依賴于我們大腦中某些預先存在的認知系統(tǒng)。

由此看來,以下兩個大腦系統(tǒng)似乎是可能的 “候選者”:要么是大腦的語言系統(tǒng),要么是處理復雜認知任務的系統(tǒng),如解決數(shù)學問題或填字游戲的 “多需求網(wǎng)絡”(multiple demand network)。

大腦中的編程

在這支 MIT 團隊的實驗中,研究人員要求精通代碼的參與者躺在磁共振功能成像(fMRI, Functional Magnetic Resonance Imaging)機器中,以方便測量他們的大腦活動,規(guī)則是要求被試者閱讀編程問題并預測輸出答案。

在這項研究中使用的兩種編程語言是以 “可讀性”(readability)著稱的 Python 和 ScratchJr。其中,后者是以符號為基礎(chǔ),專門為兒童開發(fā)的語言,以便尚未學會閱讀的兒童也可以使用它。

首先,研究的主要任務包括給定一個人的身高和體重參數(shù),讓參與者計算一個人的身體質(zhì)量指數(shù)(BMI, Body Mass Index)。

 

 

 

 

實驗中的代碼示例和難題

這個問題要么以 Python 風格的代碼的形式呈現(xiàn),要么以普通句子的形式呈現(xiàn)。類似地,ScratchJr 也采用了同樣的方法,只是參與者被要求去追蹤小貓走路和跳躍時的位置。

其次,研究的控制任務包括兩項:其一記住網(wǎng)格上的一系列方塊,以激活參與者的多重需求系統(tǒng);其二閱讀一個正常和一個無意義的句子,以激活他們的語言系統(tǒng)。

最后,研究結(jié)果表明,當參與者在閱讀代碼時,大腦的語言部分反應微弱,論文作者認為,這很可能是在整個過程中未涉及口語和聽力的原因。相反地,這些任務主要由多需求網(wǎng)絡處理。

具體來說,多需求網(wǎng)絡分布在我們大腦的額葉(frontal lobes)和頂葉(parietal lobes),它主要負責處理復雜繁重的心理任務,即日常生活中我們需要努力思考的部分。

該網(wǎng)絡大致可以分為負責邏輯的左側(cè)部分和主管抽象思維的右側(cè)部分。此外,MIT 的研究人員發(fā)現(xiàn),閱讀 Python 代碼似乎可以同時激活多需求網(wǎng)絡的左、右兩側(cè),而在 ScratchJr 語言的實驗中則顯示,相對于左側(cè)來說,右側(cè)激活的比例更大。

他們寫道:“我們發(fā)現(xiàn),盡管代碼和自然語言之間有許多相似之處,但語言系統(tǒng)在代碼理解過程中的反應并不一致。”

編程似乎進化出了新的處理網(wǎng)絡

有趣的是,解碼過程激活了多需求網(wǎng)絡的部分,而這些部分在解決數(shù)學問題時沒有被激活,因此,大腦并沒有把它當作語言或邏輯來處理,它更像是自己獨立的一個部分。

盡管閱讀計算機代碼可以激活多需求網(wǎng)絡,但與數(shù)學或邏輯問題相比,它似乎更多地依賴于網(wǎng)絡的不同部分,這表明編程并不能精確地復制數(shù)學的認知需求。

“這些發(fā)現(xiàn)表明,大腦將編碼視為一個獨特而復雜的過程。理解計算機代碼似乎是獨立的事件。它和語言不一樣,和數(shù)學和邏輯也不一樣……”,麻省理工學院研究生、該研究的主要作者安娜・伊萬諾娃說。

同時作者指出,這并不排除經(jīng)驗豐富的程序員可能有專門用于編碼的大腦區(qū)域的可能性。

去年,日本神經(jīng)科學家做的另一項實驗,支持解釋了計算機代碼所涉及的大腦獨特過程。

在那項研究中,分別向新手級、經(jīng)驗級和專家級程序員展示代碼片段,與此同時,他們需要躺在 fMRI 中完成將這些代碼片段分類到四種類型算法的任務。

正如預期的那樣,具有更高技能的程序員可以更好地分類代碼片段。

不過,研究人員還發(fā)現(xiàn),與自然語言處理(natural language processing)、情景記憶檢索(episodic memory retrieval)和注意力控制(attention control)相關(guān)的大腦區(qū)域的活動,也隨著程序員的技能水平而加強。

由此看來,雖然編程與語言的相似性并非我們想象的那樣,但兩者似乎都是越早學越受益。

責任編輯:華軒 來源: 數(shù)據(jù)實戰(zhàn)派
相關(guān)推薦

2011-02-28 09:51:43

內(nèi)省

2010-06-28 14:47:45

云計算

2018-07-05 16:15:26

緩存數(shù)據(jù)cache miss

2021-02-03 05:25:39

存儲層次化代碼

2019-07-22 15:29:53

JavaScriptGitHub語言

2019-06-04 14:15:08

JavaScript V8前端

2009-02-27 09:25:28

編程語言程序員C#

2009-07-28 08:28:15

2019-10-21 13:58:22

爬蟲互聯(lián)網(wǎng)程序員

2016-11-01 15:16:52

QQ狀態(tài)即時通訊

2012-08-20 10:34:07

軟件開發(fā)開發(fā)軟件

2019-04-26 13:55:02

Istio微服務架構(gòu)

2009-05-06 16:10:17

Java傳值引用

2021-01-05 09:23:49

網(wǎng)頁端消息

2024-10-18 14:43:31

2020-07-08 08:09:08

邊緣計算邊緣云云平臺

2011-02-16 16:13:40

Debian

2010-03-26 17:50:17

Python設計理念

2019-09-10 12:58:03

電腦編程語言硬件

2011-05-30 15:07:58

計算機語言
點贊
收藏

51CTO技術(shù)棧公眾號