プログラミングは、数学にも言語学に属していない
MITの研究によると、プログラミング言語を読む能力は、言語能力でも数学能力でもない、脳の全く新しいネットワークを駆使して読み解くものだという事が判明しました。
プログラミング言語が、数学に属しているのか言語学に属しているかの議論に、そのどちらでもないと言える確たる証拠になりそうです。
In some ways, learning to program a computer is similar to learning a new language. It requires learning new symbols and terms, which must be organized correctly to instruct the computer what to do. The computer code must also be clear enough that other programmers can read and understand it.
参照元:https://news.mit.edu/2020/brain-reading-computer-code-1215
– マサチューセッツ工科大学 Massachusetts Institute of Technology. December 15, 2020 –
ある意味で、コンピューターをプログラムすることを学ぶことは、新しい言語を学ぶことに似ています。
それは新しい記号と用語を学ぶことを必要とします、そしてそれはコンピュータに何をすべきかを指示するために正しく組織されなければなりません。
コンピュータコードは、他のプログラマがそれを読んで理解できるように十分に明確でなければなりません。
これらの類似性にもかかわらず、MITの神経科学者は、コンピューターコードを読み取ることは、言語処理に関与する脳の領域を活性化しないことを発見しました。
代わりに、マルチデマンドネットワークと呼ばれる分散ネットワークをアクティブにします。
これは、数学の問題やクロスワードパズルの解決などの複雑な認知タスクにも採用されます。
ただし、コンピューターコードを読み取るとマルチデマンドネットワークがアクティブになりますが、数学や論理の問題よりもネットワークのさまざまな部分に依存しているように見えます。
これは、コーディングが数学の認知的要求を正確に再現していないことを示唆しています。
MITの大学院生で研究の筆頭著者であるAnnaIvanova氏は話します。
「コンピューターコードを理解することはそれ自体のことのようです。それは言語と同じではなく、数学や論理とも同じではありません。」
フレデリックA.とキャロルJ.ミドルトンのキャリア開発准教授であり、マクガヴァン脳研究所のメンバーであるエヴェリナフェドレンコは、本日eLifeに掲載される論文の筆頭著者です。
MITのコンピューター科学人工知能研究所とタフツ大学の研究者もこの研究に参加しました。
フェドレンコの研究の主な焦点は、言語と他の認知機能との関係です。
特に、彼女は他の機能がブローカ野や脳の左半球の他の領域を含む脳の言語ネットワークに依存しているかどうかの問題を研究しています。
以前の研究で、彼女の研究室は、音楽と数学がこの言語ネットワークを活性化するようには見えないことを示しました。
Ivanova氏は話します。
「ここでは、言語とコンピュータープログラミングの関係を調査することに興味がありました。これは、コンピュータープログラミングが非常に新しい発明であり、優れたプログラマーになるようなハードワイヤードメカニズムが存在しないことがわかっているためです。」
脳がどのようにコーディングを学ぶかについては、2つの考え方があります、と彼女は言います。
プログラミングが得意であるためには、数学が得意でなければならないと考える人もいます。
もう1つは、コーディングと言語の類似点があるため、言語スキルの方が関連性が高い可能性があることを示唆しています。
この問題に光を当てるために、研究者たちは、コンピューターコードを読んでいる間の脳活動パターンが言語関連の脳活動と重複するかどうかの研究に着手しました。
研究者がこの研究で焦点を当てた2つのプログラミング言語は、読みやすさで知られています。
PythonとScratchJrは、5歳以上の子供向けに設計されたビジュアルプログラミング言語です。
研究の対象は、彼らがテストされていた言語に堪能なすべての若い成人でした。
プログラマーが機能的磁気共鳴(fMRI)スキャナーを使用している間、研究者はコードの断片を見せ、コードがどのようなアクションを生成するかを予測するように依頼しました。
研究者たちは、脳の言語領域のコードに対する反応をほとんどまたはまったく見ませんでした。
代わりに、彼らはコーディングタスクが主にいわゆるマルチデマンドネットワークを活性化することを発見しました。
このネットワークは、その活動が脳の前頭葉と頭頂葉全体に広がっており、通常、一度に多くの情報を念頭に置く必要があるタスクのために採用され、さまざまな精神的タスクを実行する能力を担っています。
Ivanova氏は話します。
「それはあなたが難しいと思うようにする、認知的に挑戦的なことはほとんど何でもします。」
以前の研究では、数学と論理の問題は主に左半球の複数の需要地域に依存しているように見えますが、空間ナビゲーションを伴うタスクは左半球よりも右半球をアクティブにします。
MITチームは、コンピューターコードを読み取ると、マルチデマンドネットワークの左側と右側の両方がアクティブになるように見え、ScratchJrは左側よりもわずかに右側をアクティブにすることを発見しました。
この発見は、数学とコーディングが同じ脳のメカニズムに依存しているという仮説に反しています。
研究者たちは、プログラミングに専念しているように見える地域を特定しなかったものの、そのような特殊な脳活動は、コーディングの経験がはるかに多い人々で発生する可能性があると述べています。
Fedorenko氏は話します。
「特定の言語でのコーディングに30年または40年を費やしたプロのプログラマーである人々を連れて行くと、複数の需要システムの一部の専門化または結晶化が見られるようになる可能性があります。コーディングに精通していて、これらのタスクを効率的に実行できるが、経験が比較的限られている人々では、まだ専門分野を見ているようには見えません。」
eLifeの同じ号に掲載されたコンパニオンペーパーで、ジョンズホプキンス大学の研究者チームは、コードの問題を解決すると、言語領域ではなく複数の需要ネットワークがアクティブになることも報告しました。
調査結果は、コーディングを数学ベースのスキルとして教えるか、言語ベースのスキルとして教えるかについての決定的な答えがないことを示唆しています。
部分的には、プログラミングを学ぶことは、たとえ一度学んだとしても、プログラミングが言語地域に依存していなくても、言語と複数の需要システムの両方を利用する可能性があるためです。
Ivanova氏は話します。
「両方の陣営から主張がありました。それは数学と一緒でなければならず、言語と一緒でなければなりません。しかし、コンピュータサイエンスの教育者は、コードを最も効果的に教えるために独自のアプローチを開発する必要があるようです。」