メモ

「1つのプログラミング言語を学んだら別の言語も簡単に習得できる」という説は本当なのか?


プログラミング言語を教える人々の中には、「1つの言語を習得することができれば、新たな言語も簡単に習得できる」と主張する人が多く存在します。ところが、ミシガン大学で電気工学とコンピューターサイエンスの教授を務めるMark Guzdial氏はこの主張に疑問を投げかけており、現代におけるプログラミング言語習得の実情にはそぐわないと主張しています。

Why Did We Ever Think the First Programming Language Didn't Matter? | blog@CACM | Communications of the ACM
https://cacm.acm.org/blogs/blog-cacm/253393-why-did-we-ever-think-the-first-programming-language-didnt-matter/fulltext

Guzdial氏は最近、他の学校に勤務するコンピューターサイエンスの教育者から、「最初に勉強するプログラミング言語はそれほど問題ではないため、気にする必要はない」という意見を聞きました。その人物らは、学生がプログラミング言語の概念さえしっかり学ぶことができたら、次に学ぶ言語にもそれを適用することができると信じていたそうです。


「最初に学ぶプログラミング言語でしっかり概念を学ぶことができたなら、構文が違う別のプログラミング言語にも同様の概念を適用できる」という考えは古くから存在します。しかし、これは基本的な概念が異なるプログラミング言語には応用できない上に、Guzdial氏の経験的証拠から見ても、多くの学習者にとって2つ目のプログラミング言語習得は容易ではないとのこと。「あるプログラミング言語から別のプログラミング言語に乗り換えることはできますが、シームレスではありません」とGuzdial氏は述べています。

コンピューターサイエンス以外の分野を専攻する学生にとって、最初に勉強するプログラミング言語は特に重要だとGuzdial氏は指摘しています。実際、プログラミング言語を学習したい多くの学生は、「自分の専門分野やコミュニティで役に立つ言語を身に着けたい」と考えているはずです。たとえば、データサイエンティストになりたい学生はC言語よりもR言語Pythonを学ぶ方が理にかなっており、ビジュアルデザインに興味がある人はMATLABよりProcessingを学ぶ意欲が高いはずです。


Guzdial氏は、「今日ではプログラミング言語を学ぶ全ての人が、コンピューターサイエンティストのように簡単に言語を切り替える能力を望んでいる、または必要としているわけではありません」と主張。最近では、そもそも「なぜ多くの人は最初に学ぶプログラミング言語が重要ではないと考えているのか?」という方面から考えることが増えたとのこと。

実際、コンピューターサイエンスの分野が誕生して間もない時期には、「最初に学ぶプログラミング言語は重要な問題ではない」という考えが一定の正しさを持っていたとGuzdial氏は考えています。1960年代後半にコンピューターサイエンスが学問分野として確立された頃、プログラミングでは数学的基盤に重点が置かれていました。従って、当時コンピューターサイエンスを専攻した学生は、現代のほとんどの学生と比較すると数学的バックグラウンドが豊富な人材でした。

Guzdial氏が持っている仮説は、「豊富な数学的バックグラウンドを持っている人にとっては、プログラミング言語が異なっても同じ数学的な基盤の上に成り立っている点は変わらないため、習得済みのプログラミング言語と新たな言語の違いは表記法の違いに過ぎない」というもの。1つの定理に複数の証明法が存在するように、数学が得意な人は同じアイデアについてさまざまな方面からアプローチすることに優れており、こうした人は複数のプログラミング言語の習得が得意だとのこと。

しかし、現代では小学生すらもプログラミング言語を勉強するようになっており、プログラミング言語の学習者が持つ平均的な数学的素養が下がっているのは明らかです。数学が苦手な人でも仕事や趣味でプログラミング言語を使いたい場合があるほか、中には「自分がソフトウェアを開発するわけではないが、タスクについてプログラマーと会話ができるようになりたい」という学習者も存在します。こうした人々にとって、複数のプログラミング言語の学習は難しいだろうとGuzdial氏は指摘しています。


記事作成時点では学習ツールやプログラミング言語の進化もあり、数学的なバックグラウンドがなくても言語を学習することができます。しかし、「1つの言語を学習したら別の言語も簡単に習得できる」という考えは当てはまらない可能性が高いため、研究者や教師はこの点に注意して学生を指導・教育する必要があるとGuzdial氏は述べました。

この記事のタイトルとURLをコピーする

・関連記事
プログラミングを勉強するには「言語能力」と「問題解決能力」も重要 - GIGAZINE

プログラムのコードを読む時に活性化される脳の領域は言語処理と同じではない - GIGAZINE

プログラミングを上達するには量と質のどちらがより大切なのか? - GIGAZINE

6歳の子どもに「関数型プログラミング」を教える方法 - GIGAZINE

一流プログラマーになるためには「1万時間の法則」ならぬ「3万時間の法則」が適用される - GIGAZINE

in メモ, Posted by log1h_ik

You can read the machine translated English article here.