こんにちは、プロ象(@shoshi_pro)です。

JavaScriptを学習し始めたんだけど、今Pythonがすっごく話題だよね、ChatGPTでAIが熱いし。AIとか機械学習のことをやりやすいPythonも一緒に勉強したら、両方使えて、取れる案件も増えるんじゃない??



プログラミングを勉強し始めたら、他の言語にも目移りしちゃうよね!でもそれが実はプログラミング第5の壁、「他の言語も同時に学習したい気持ちになる壁」なんだ。今回はこの壁を乗り越えるべき理由について解説していくよ!
プログラミングを学習していて、「この言語とこの言語、組み合わせて学習したら効率的なんじゃない?」とか「今話題のあの言語も学習しておいた方が将来的に仕事の選択肢が増えそう!」って考えますよね?
確かにエンジニアとしてバリバリ働いている人にとって、多言語が読める・書けるというのは、こなせる案件が増加したりするため、必要になることがあります。
ですが、プログラミングを学習し始めた初学者の方にとっては、複数の言語を同時に学習するのはあまり良くない行動であることを知っていましたか?
もちろん、言語によって複数を同時に学習した方がよいものもあります。ですが、例えばJavaScriptを学習しながらPythonも学習する、というのは初心者のうちはやめておいた方が無難です。
その理由は大きく分けて3点。
- 文法・記法がゴチャゴチャになって、理解をさまたげるから
- 挫折する可能性が高まってしまうから
- 1つ目の言語をマスターした後の方が、他の言語を習得するのが楽になるから
今、プログラミングの基礎的な文法(if文やfor文、switch文などの使い方等)を学習していて、という程度の学習進度であれば、まだまだ他の言語に手を出すべきではありません。
まずは今学習している1つの言語をもう少し深いところまで学習をしてからでも遅くはないです。
でも、ついつい「今この言語が熱い!」とかネットで見ちゃうと浮気したくなりますよね(笑)
以下の記事では、初心者が複数言語を同時に学習するべきではない理由についてくわしく解説をしていきながら、それでも複数言語を同時に学習したいという人のための方法について書いていきます。
文法・記法がゴチャゴチャになって、理解をさまたげてしまうから


プログラミング言語は、優れた言語を参考にしながら新しい言語が開発されるため、文法や記法は似たものになっていきます。
ですが、やはりそれぞれのプログラミング言語特有の文法や記法があって、それを覚えていかなくてはいけません。
例えば、JavaScriptとPythonで変数の宣言方法については、以下のような違いがあります。
JavaScriptでは、letやvar、constというキーワードを使って変数を宣言します。
var hoge = 1;
let hoge;
一方のPythonでは、JavaScriptのようにvarやletなどの変数を宣言する際のキーワードが不要です。(文末を表すセミコロンも不要)
hoge = 1
同じ「hoge」という変数(hogeは意味をもたない文字列で、変数の例を表すときに使う「メタ構文変数」と呼ばれるものです。覚えておきましょう)の宣言方法についてこのような違いがあります。
Pythonでは、変数を宣言する際に初期値を与える必要があるので、「hoge」だけを書いても変数を宣言したことにはなりません。
このように、JavaScriptとPythonでは、変数の宣言の仕方ひとつ取っても、細かな違いがあります。この違がある中で同時に学習してしまうと、Pythonでvarやletを使うんだっけ?あれ?となってしまいます。
その他にも細かい違いがたくさんあるため、その都度、頭を切り替えながら学習内容を整理していかなくてはいけなくなります。



人間の脳は、本来マルチタスクが苦手だから、学習しながら、かつ、内容をその都度切り替えるというのはすごく難しい作業になる。だったら、1つの言語に集中して取り組む方が、効率がよくなるんだね。
挫折する可能性が高まってしまうから


プログラミング、特に独学で学習する人の挫折率は非常に高いと言われています。
例えば、侍エンジニアで約300人にアンケートを取ったところ、約9割の人がプログラミングを学習する際に行き詰りや挫折を感じたことがあると答えました。


一つの言語を学習するのでも挫折率が高いのに、複数の言語を同時に学習することで挫折の可能性が高まってしまうことが考えられます。
したがって、1つの言語でまずは挫折せずに学習して、ある程度学習が深まったときに第二言語として他の必要な言語を学習する方がより安全にプログラミングをマスターする方法と言えるでしょう。



同時に言語を学んでいると、分からないこと、聞きたいことが単純に考えて2倍出てくることになる。じゃあこれをスムーズに解決して学習を深めていくというのは至難の業と言えるかもね。
1つの言語をマスターした後の方が、他の言語を習得するのが楽になるから


プログラミング「言語」となっていますが、「日本語」と「英語」のように文法体系などが全く違うかというと、それほどの大きな違いはありません。
言うならば、日本語における「関西弁」と「広島弁」などの「方言」における差くらいがプログラミング言語の違いになります。
つまり、標準語の日本語を知っている人にとって、多少の聞き取りにくさがあったり、単語の意味などが分からなかったりしますが、方言を聞いたときに全くチンプンカンプンということは少ないでしょう。
したがって、1つの言語に深く習熟すると、プログラミングの根っこにあるアルゴリズムや基礎的な文法についてマスターしているので、他の言語に応用が利くようになります。



中高生の頃、先生から「何冊も問題集をやるよりも、同じ問題集を何度も解いた方が実は効率的」と言われたのと同じ…ではない?
それでも同時に複数の言語を学習したい人は


それでも同時にプログラミング言語を学習したいという人もいるでしょう。
そういった人は次のことに注意して、第二言語を選びましょう。
- 現場で同時に使われる言語であるかを確認する
- 比較的新しい言語を選ぶようにする
- できれば、性質の違うプログラミング言語を選ぶ
現場で同時に使われる言語であるかを確認する
例えば、あなたがWebエンジニアで、フロントエンド(Webの見た目を作る)の制作でJavaScriptを使用している場合に、バックエンド(見えないところの計算など)の制作をしようとしてPHPを学習するというのは、実際の現場でも同時に制作に使われるのでありかと思います。
(ですが、最近はバックエンドにNode.jsを使うことが多くなってきていますが、PHPやPerlを今から学習すべきかというのはまた別の話として考えてください)
このように、実際の現場で同時に制作に使われる言語を選べば、制作に直結することになります。今学習している言語との相性を考慮して、2つ目の言語を選ぶようにするのが一つです。
比較的新しい言語を選ぶようにする
例えば、Goは2009年、Kotlinが2011年、Swiftが2014年にそれぞれ開発された言語で、他の言語に比べれば歴史が浅い言語です。
これらの言語はまだまだ使える人が少ないため、年収が高い傾向にあります。また、これらの新しい言語を学習してマスターすることによって、案件獲得や就職に有利に働くことでしょう。
また、出来るだけ新しい言語を選ぶことで、より言語が洗練されており、書きやすくもなっています。
このことから考えて、出来るだけ新しい言語を第二言語として選ぶことがよい、ということが言えるでしょう。
できれば性質の違うプログラミング言語を選ぶ
プログラミング言語は大きく分けて3つに大別されます。
①関数型、②手続き型、③オブジェクト指向の3種類です。
くわしくは割愛しますが、例えば、Javaはオブジェクト指向のプログラミング言語というのはとても有名だと思います。
それに対して、C言語は手続き型、Haskellは関数型です。
この種類の違う言語を学ぶことで、3つの種類でどのような違いがあるのかを理解することができるようになります。
それがプログラミングへのより深い理解につながるので、あえてこの違う種類の言語を学習することも一つの手です。



どうしても最初の内から複数の言語を学習したい場合、基礎的な内容については1つの言語で学習し、もう一つの言語も使いながら「何か動くモノを作ってみる」、という方法がよいと思います。
まとめ
プログラミング初学者が、複数の言語を同時に学習することはおすすめできません。それは以下の通りだからです。
- 文法・記法がゴチャゴチャになって、理解をさまたげるから
- 挫折する可能性が高まってしまうから
- 1つ目の言語をマスターした後の方が、他の言語を習得するのが楽になるから
もし万が一、初学者の内から複数言語を学習することになったときは、以下のことに気を付けてもう1つの言語を選ぶようにしましょう。
- 現場で同時に使われる言語であるかを確認する
- 比較的新しい言語を選ぶようにする
- できれば、性質の違うプログラミング言語を選ぶ
ではでは、よいプログラミングライフを!!
以下はまとめ記事へのリンクです。


コメント