?
圖片來源:Pixabay
?
作者 青蘋果
來源 公眾號“數(shù)據(jù)實戰(zhàn)派”
?
2016 年蓋洛普民意測驗(Gallup poll)調查發(fā)現(xiàn),在美國,大多數(shù)學校希望開始教授編程,且 66% 的美國基礎教育(簡稱 K-12 教育)學校的校長認為,非計算機專業(yè)的學生也應該考慮學習計算機科學。
?
大多數(shù)歐洲國家都在學校課程中增設了編程課和計算機科學,其中法國和西班牙早在 2015 年就開設了這些課程。很顯然,在這樣高速增長的勢頭之下,新生代程序員持續(xù)涌現(xiàn),預計會將全球開發(fā)人員的規(guī)模從 2019 年的 2390 萬增加到 2024 年的 2870 萬。
?
而在中國,編程教育有多火熱就更不用贅述了,“內卷” 這個詞便被頻頻用來形容該領域。
?
盡管各行各業(yè)在編程的教育上做了如此多的努力,但對于如何教授編程仍然存在一些困惑。比如說,我們至今都沒搞明白,它究竟更像一種語言,還是更像數(shù)學?
?
尤其從腦科學的角度來看,計算機編程是一種新穎的認知工具,已經(jīng)改變了現(xiàn)代社會。哪些認知和神經(jīng)機制支持這項技能?這個問題至關重要,因為它將決定著我們的傳授該領域知識的方式應該遵循怎樣的底層方法。
?
正如麻省理工學院的神經(jīng)科學家安娜?伊萬諾娃(Anna Ivanova)所說:“我們有興趣探討語言和計算機編程之間的關系,部分原因在于,計算機編程是一個新的發(fā)明,我們知道不可能有任何結構上的硬件機制(hardwired mechanisms)讓我們成為優(yōu)秀的程序員?!?/p>
?
安娜?伊萬諾娃也和她的同事進行了一項新的研究,嘗試通過觀察受試者在閱讀 Python 代碼時的大腦活動,來回答這個問題。
?
?
編程語言本質是什么?兩種不同的解答
?
目前,針對上述疑問,存在兩種思想流派 ——“語言派” 和 “數(shù)學派”。
?
其中,較為流行的觀點是,編程是一種語言,必須遵循自己的語法規(guī)則和語義規(guī)則。畢竟,它們被稱為編程語言是有原因的。
?
在某些方面,學習計算機編程也與學習新語言相似。它要求學習新的符號和術語,必須正確組織這些符號和術語以指導計算機該怎么做。計算機代碼還必須足夠清晰,以便其他程序員可以閱讀和理解。
?
因此,依附于該觀點之下,還有一個頗為時髦的縮寫:CAL, Coding as Another Language。而與之對立的是,有些人認為編程更像是學習數(shù)學中的邏輯,即借助公式和算法來創(chuàng)建輸入和輸出。
?
究竟哪種方法更貼近真理?自編程進入到教育體系以來,爭論就從未休止,但目前看來,“語言派” 顯然已占據(jù)上風。比美國得克薩斯州、俄克拉何馬州和佐治亞州的法律均允許高中生選修計算機科學課程,以完成他們的外語學分。
?
但這場辯論對神經(jīng)科學家似乎有著特殊的意義:由于計算機編程才出現(xiàn)了幾十年,大腦還沒有進化出任何特殊的區(qū)域來對其進行處理,所它必須重新利用大腦中通常用來處理其他事情的區(qū)域。
.
因此,去年年底麻省理工學院(MIT, Massachusetts Institute of Technology)的神經(jīng)科學家試圖觀察人們在處理計算機編程時會用到大腦的哪些區(qū)域和所對應的功能系統(tǒng)。
?
他們認為,“解釋計算機代碼的能力是一種非凡的認知技能,與包括一般執(zhí)行功能、數(shù)學、邏輯和語言在內的不同認知領域有著相似之處。”
?
?
考慮到一個人成年后可以學會編程的事實,它一定是依賴于我們大腦中某些預先存在的認知系統(tǒng)。
?
由此看來,以下兩個大腦系統(tǒng)似乎是可能的 “候選者”:要么是大腦的語言系統(tǒng),要么是處理復雜認知任務的系統(tǒng),如解決數(shù)學問題或填字游戲的 “多需求網(wǎng)絡”(multiple demand network)。
?
?
大腦中的編程
?
在這支 MIT 團隊的實驗中,研究人員要求精通代碼的參與者躺在磁共振功能成像(fMRI, Functional Magnetic Resonance Imaging)機器中,以方便測量他們的大腦活動,規(guī)則是要求被試者閱讀編程問題并預測輸出答案。
?
在這項研究中使用的兩種編程語言是以 “可讀性”(readability)著稱的 Python 和 ScratchJr。其中,后者是以符號為基礎,專門為兒童開發(fā)的語言,以便尚未學會閱讀的兒童也可以使用它。
?
首先,研究的主要任務包括給定一個人的身高和體重參數(shù),讓參與者計算一個人的身體質量指數(shù)(BMI, Body Mass Index)。
?
實驗中的代碼示例和難題
?
這個問題要么以 Python 風格的代碼的形式呈現(xiàn),要么以普通句子的形式呈現(xiàn)。類似地,ScratchJr 也采用了同樣的方法,只是參與者被要求去追蹤小貓走路和跳躍時的位置。
?
其次,研究的控制任務包括兩項:其一記住網(wǎng)格上的一系列方塊,以激活參與者的多重需求系統(tǒng);其二閱讀一個正常和一個無意義的句子,以激活他們的語言系統(tǒng)。
?
最后,研究結果表明,當參與者在閱讀代碼時,大腦的語言部分反應微弱,論文作者認為,這很可能是在整個過程中未涉及口語和聽力的原因。相反地,這些任務主要由多需求網(wǎng)絡處理。
?
具體來說,多需求網(wǎng)絡分布在我們大腦的額葉(frontal lobes)和頂葉(parietal lobes),它主要負責處理復雜繁重的心理任務,即日常生活中我們需要努力思考的部分。
?
該網(wǎng)絡大致可以分為負責邏輯的左側部分和主管抽象思維的右側部分。此外,MIT 的研究人員發(fā)現(xiàn),閱讀 Python 代碼似乎可以同時激活多需求網(wǎng)絡的左、右兩側,而在 ScratchJr 語言的實驗中則顯示,相對于左側來說,右側激活的比例更大。
?
他們寫道:“我們發(fā)現(xiàn),盡管代碼和自然語言之間有許多相似之處,但語言系統(tǒng)在代碼理解過程中的反應并不一致?!?/p>
?
編程似乎進化出了新的處理網(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)相關的大腦區(qū)域的活動,也隨著程序員的技能水平而加強。
?
由此看來,雖然編程與語言的相似性并非我們想象的那樣,但兩者似乎都是越早學越受益。
?
Refenrence:
https://elifesciences.org/articles/58906
關注【深圳科普】微信公眾號,在對話框:
回復【最新活動】,了解近期科普活動
回復【科普行】,了解最新深圳科普行活動
回復【研學營】,了解最新科普研學營
回復【科普課堂】,了解最新科普課堂
回復【科普書籍】,了解最新科普書籍
回復【團體定制】,了解最新團體定制活動
回復【科普基地】,了解深圳科普基地詳情
回復【觀鳥知識】,學習觀鳥相關科普知識
回復【博物學院】,了解更多博物學院活動詳情