プログラム言語を効率良く学びたいからこそ『2つ同時』に学ぶ!!! 7個のメリット

キャッチアイ画像に赤ちゃんを使うというちょっとヒキョーな手を使ってしまいました(笑)

 

プログラム言語を学ぶ時、普通は入門書を一冊買ってきてそれに集中して学習しますよね。
これが一番効率の良い方法と考えますよね、普通はね。

しかしっ!!!
今回は、

 

プログラム言語の学習は1つに集中するより2つ同時に並行して学習する方法もいいですよ。

 

というお話しです。

絶対オススメ!! プログラム言語を2つ同時に学ぶ!

プログラミングが全く初めての方にはあまりオススメしませんが、1つでもプログラム言語を知っているなら、次から新しい言語を覚えるのはこの方法がオススメです。

私はこの学習方法を

プログラム言語を2つ同時にやったら意外と記憶に残って覚えやすいやん法
略して 2つまとめてやっておしまいっ!法

と名付けました。

てな感じで大して略してないというベタな事も入れてみました(笑)

これだけある! 2つのプログラム言語を同時に学ぶ7個のメリット

1つの言語に集中して学習するのは悪くないんですが、2つ同時に学ぶ方がメリットがあります。

  • メリット1:同じような命令を二回学習でき、頭に残りやすい
  • メリット2:二回学習できても、微妙に違いがあるので飽きない
  • メリット3:『違いはどこだ?』という比較の観点を持てるので集中しやすい
  • メリット4:同じような命令でも使い方が違う場合があり、それを考えるのが面白くて記憶に残る
  • メリット5:片方にだけある命令や機能があると、特徴として記憶のポイントになる
  • メリット6:一度の学習期間で二つ覚えられるのでチョーお得!!
  • メリット7:一つだけに集中するより二つの方が意外と覚えやすくて忘れにくい

メリット1:同じような命令を二回学習でき、頭に残りやすい

やっぱり、一回より二回、なんなら二回より三回と学習する方が、頭に残ります!!

1秒勉強法(記憶法?)というのもありますよね。
少しでも目にする回数を増やして、忘れる前に何度も見ようっていうアレです。

やっぱり何度も目にすることは覚えるための基本ですね。
今回は見るのは二回ですが、それでも一回よりも二回見る方が記憶するにはいいですよね。

メリット2:二回学習できても、微妙に違いがあるので飽きない

でも・・・・
単に何回も見るのって・・・・

 

飽きますよね(笑)

 

先ほど1秒勉強法を書きましたけど、個人的にはあまり好きじゃないんですよね。書いたのに(笑)
無機質に何度も見てもつまらないんです。

1秒勉強法を貶しているワケではありませんので、誤解ないように。

今回の場合、片方の言語で一回見て、もう片方の言語で二回目見ます。
二回目見るんですけど、この2つの言語は微妙に違うのでちょっと比較する思考が動くのです。

この『ちょっと比較する思考』が頭に残りやすいですし、飽きない要素になります。

メリット3:『違いはどこだ?』という比較の観点を持てるので集中しやすい

メリット2でも書きましたが、2つの言語は微妙に違うため、どうしたって違いに目がいきます。
違いがあるということは『どこが違うんだろう?』と自然と考えてしまいますので、気持ちがそれに集中する事ができます。

メリット4:命令は似ていても使い方が違う場合があり、それを考えるのが面白くて記憶に残る

メリット3で自然と違いを考える事が続けば、この違いを探すのが楽しくなってきます。
雑誌の最後のページによくある間違い探しみたいな感じで遊び気分で楽しめれば、文法書を読み進めれば進めるほど楽しくなります。

もちろん楽しいということは自然と記憶に定着します。

メリット5:片方にだけある命令や機能があると、特徴として記憶のポイントになる

比較することが続くと全ての命令が比較できる思いがちです。

がっ! しかしっ!!!

中には、

  • 片方だけに存在する場合
  • 命令の書き方は全く違うけど機能はほぼ同じ場合


があります。

こういう時は、『あれっ?いつもと違うパターンと違うぞ?』と思うのです。
これが記憶のポイントとして頭に残りますし、飽きないポイントになります。

特に『命令の書き方は全く違うけど機能はほぼ同じ場合』は、以下の感じで、結構大きなポイントとして記憶に残りやすくなります。

『この命令ってどこかで見たような気がする』
  ↓
 探す
  ↓
 機能は同じだけど書き方が違うので、違いをちゃんと見ないといけない

 

メリット6:一度の学習期間で二つ覚えられるのでチョーお得!!

これはそのまんまです。
一回の学習期間で2つが同時に覚えられてしまいます。

メリット7:一つだけに集中するより二つの方が意外と覚えやすくて忘れにくい

メリット1メリット5をまとめると、

結局は

『比較するから記憶に残る』

という事なんです。
単に比較するだけだとつまらないと思いますが、比較表(後述します)を埋めながらだと、結構楽しいですよ!

疑問:いやいや、2つ同時に学習するなんて効率悪いんじゃねーーーーの!?

こういう疑問出ませんか?

『いやいや、2つ同時に学習するなんて効率悪りぃーーーに決まってんだろう!(怒)』

◆答え:
 Noです! むしろ効率良いです! 言い切ってしまいます!

◆理由:
 ぶっちゃけプログラム言語なんてどれもそんなに大きく違わないので1つでも2つでも労力はあまり変わらない

プログラミング言語なんてね、そんなに違いは無いんですよ。
どれも似たようなもんです。

現在日常的に使われているプログラム言語(RubyとかPythonとかC#とか)はC言語/C++/Javaが元ネタになっていると言っていいでしょう。(Javaの元ネタはおそらくC言語/C++)
いわばご先祖様は皆同じなんです。

ご先祖様が同じならどれも同じような言語体系になっているはず。
はず・・・と言うか、どの言語も大体似ています。

もちろん他とは全く違う言語体系を持つプログラム言語もありますけどね。

そもそも、プログラム言語をザッと挙げると、下記の種類に分けられます。

  • C言語のような昔ながらの構造化プログラミング言語
  • JavaやC++のようなオブジェクト指向言語
  • RubyやPythonのようなスクリプト言語

特殊な言語は省いています

もちろん他にもありますけど、ごくごく一般的なものはこんな感じですね。
種類に分けると少ないですよね。
種類毎に分けられるって事は、同じ種類のものは言語体系と言うか命令なんて大体似たようなものなんですよ。

しかも!! 種類が違っていても使っている命令の単語や書き方はほぼ同じ。
『同じ』は言い過ぎかも知れませんが、非常に似ています。
同じと言ってもいいぐらいだと思います。(結局『同じ』という表現になっちゃいました)

書き方が微妙に違うだけで、機能や使い方はほぼ同じというものが非常に多いです。

下に挙げた命令・機能はどのプログラム言語でも持っているものばかりです。
ご先祖様が同じだからこそ、似たような命令・機能を持っていると言えるでしょう。

  • if命令
  • for命令
  • while命令
  • 関数
  • クラス
  • 代入
  • 参照
  • 変数
  • 配列
  • …..etc

と言うワケで、↓下記のような理由で2つ同時に学習するのは効率悪いどころか、良いです!

  • ご先祖様は同じなので言語体系なんてどれもそんなに変わらない
  • 2つ同時にやった所で、ほぼ同じ命令が出てくるだけ混乱もしない
  • 書き方が微妙に違うだけ。その違いが記憶の引っ掛かりポイントとして頭に残る

余談:プログラム言語がどれも似たようなものなら、なんで沢山あるの?

ご先祖様であるC言語/C++/Javaは完璧じゃなく、使いづらい面が沢山あります。

個人的にはC++はプログラム言語の一つの完成形と思っていますが、何でもできちゃうけど使いづらいし、なんかごちゃごちゃしててとっつきにくいと思っています。

C言語もシンプルでなんでもできるので非常に良い言語で好きなんですけど、プログラマに対してちょっと厳しいなぁという感じがあります。
memcpyとかmemsetとか指定サイズを間違えると平気でメモリ壊してしまうし、その間違いを発見するのもものすごく大変だしね。
余計なことを一切しないので、ある意味使い易いんですけど。

そういう使いづらい面を改良しているのが最近の言語です。
C言語経験者がRubyとかC#とかPythonとかをやると、すごく便利で使い易いと感じるのではないでしょうか?
少なくとも私は、初めてRubyやPythonをやった時、

『スゲーー!! ハッシュとか辞書型とか集合型とかeach doとかtimesとか使いやすいじゃん!』

と思いました。

RubyやPythonだけをやってる人では、もしかしたらその便利さがよく分からないかも知れません。

C#のラムダ式とかLINQとかも便利ですよね。

 

プログラム言語開発者って、既存のプログラム言語に不満があって、それらを改良したいがために新たなプログラム言語を作るんだと思うんですよ。
不満のポイントや改良ポイントってプログラム言語開発者によって違いますし、全く同じ機能でも書き方の好みとかもあるでしょう。
また、そのプログラム言語の使われ方や得手不得手がありますので、そういうのを色々と織り込んでプログラム言語を設計しているのです。

ですので、言語体系は似ているとは言うものの、できることが微妙に違ったりします。

プログラミングする側としては、どういうシステムを作りたいかを考え、そのシステムを作るにはどの言語を使えば一番効率も品質も良く作れるかを考える必要があります。

『2つまとめてやっておしまいっ!法』のやり方

で、私がやってる方法を書いておきます。
方法と言っても、大した内容ではありません。
わざわざ書く程のものでもなかったりしますが・・・(笑)

準備するもの

入門書 or 文法書

この学習法は両方のプログラム言語の入門書をそれぞれ1冊ずつ準備します。
基本的には薄い本でいいと思います。

何かのアプリを作り上げる形式より、文法を淡々と説明しているものがいいでしょう。
目次を見て、命令を種類ごとに分けてくれていると、2つの言語を比較しやすいので。

例えば、私がPythonとRubyでやった時はこの2冊の本を使いました。

比較表

もうひとつ準備するのは比較表です。

↓以下はサンプルです。

gengo-hikaku-hyou

言語対比表.xlsx

ExcelでもNumbersでも、Wordとかのワープロソフトでも表を書けるならOKです。
学習を進めながら対比表を作り上げていきます。

進め方

  1. 片方の文法書で何ページか進めます。
     進めるページ数はお好きなように
  2. 覚えた事を比較表に書く
  3. もう片方の文法書も何ページか進めます
  4. 覚えた事を比較表に書く
  5. 両方に同じような命令があれば違いを見比べる

これだけです。
これの繰り返しです。

 

比較表を埋めるために分類を探さないといけませんが、結構頭に残るものなんです。

 『この命令の種類は分岐なのか繰り返しなのかどれだろう・・・』
 『目次に種類を書いてたかな?』
 『あ、分岐か。そらそうか、if命令は処理を繰り返すわけじゃないしね。』

ってな感じかな。

 

また、for命令を覚えて書き込む時に「繰り返し命令」を探して書き込むときに、

 『あ、whileっての既に書いてるやん。』
 『って事は、whileとforは同じ仲間なのか。』
 『あれ? whileとforってどうやって使い分けるんやろ?』

みたいな事を考えるきっかけになります。

こうやって 記憶の引っ掛かりポイント がちょくちょくできるので、頭に残るというわけです。

自然に考えてしまうポイントがちょくちょく出てくるので、頭に残りやすいってのが重要なポイントです。

みなさんに伝わるかどうか分かりませんが、個人的には『サラサラツルツルしたものより、何箇所かザラッしているものの方が記憶しやすい』という感じです。

二つ並行するにはどういう組み合わせがいいの?

あまりにも違うのはやりにくいと思うので、ある程度は似ているものを組み合わせると良いでしょう。
サクッと考えるとこんな感じでしょうか。

  • Ruby と Python
  • Ruby と PHP
  • Perl と JavaScript
  • Java と C++
  • Java と C#
  • Swift と C#
  • Excel VBA と VisualBasic

まぁ、全然違うものを組み合わせてもいいですけど、アセンブラとSwiftを組み合わせても違い過ぎて意味ないですね。
C言語とRubyの組み合わせとかなら大丈夫かと思います。Rubyの便利さや良さが分かるかも知れないですね。

比較しながらって結構面白いと思いますよ。
1つ目の方でサラッと流しても、2つ目の方で『アレッ? 1つ目の方ってどうなってたっけ?』となると思います。

まとめ

2つを並行すると集中力が散漫になって学習が進まないと思うかも知れません。
いやいや、

上級者は3つ同時でもいいかも知れません。

個人的には3つ以上になると混乱する可能性があるのでやりませんが、デキる人は3つでもいいと思います。
やり方は同じです。
比較表作りながらやれば3つでも4つでも記憶していけると思います。

比較表を埋め込みながらってのは結構いいと思います。
学習すると言うより、比較表を埋めるために文法書を進めるという感覚でやってみると面白いと思いますよ。

こちらもプログラミング独学についての記事です。
良かったら是非ご覧ください。

 

参考書籍

昔、この本で勉強しました。
当時、C言語とJavaは多少は知ってはいましたが、それでも3つ同時に学ぶのが結構楽しかったのを覚えています。
当然ですが演習問題は3つの言語で解きました。
この方法はホントにオススメです。

既に絶版になっているので手に入らないと思いますが、マーケットプレイスならあるみたいです。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

ABOUTこの記事をかいた人

Windows/Mac/Linuxを使う現役システムエンジニア&プログラマ。オープン系・組み込み系・制御系・Webシステム系と幅広い案件に携わる。C言語やC#やJava等数多くのコンパイラ言語を経験したが、少し飽きてきたので、最近はRubyやPython、WordPressなどのWeb系を修得中。初心者向けのプログラミング教室も運営中。オンライン・対面・出張等でプログラミングをレッスンします。