プログラミング言語は『同時に複数』学んだ方がいい理由

   

「プログラミング言語を同時に学ぶとわけわかんなくなるんじゃないの?」と思いがちですが、そんなことはありません。

私が情報処理の専門学校でプログラミングを始めたですが、授業では同時に複数の言語が教えられていました。

教わったのはC/C++とVisualBasicでした。

私が通っていたのは1998年4月~2000年3月なので、マイクロソフトの技術が全盛の時代だったんです。

Webはこれからってときでした。HTMLやJavaScriptの授業もありましたが、中心はC/C++とVisualBasicだったんです。

そんな風に同時に複数の言語を教わったんですが、私自身はどちらもちゃんと身についたし、クラスメイトも同じように複数の言語を使いこなしていました。

なので、複数同時に学べるということです。その理由について詳しく紹介します。

バイリンガルの方が的確に言葉を使える?

自然言語の場合、例えば、日本人のお母さんとアメリカ人のお父さんの間に生まれた子供は日本語と英語のバイリンガルになりますよね。

その場合、どちらの言語も中途半端になるとか、発達障害になるとか言う人もいますが、それって半分嫉妬があるような気がします。

以前の職場で、子供の頃、親の都合でアメリカ駐在経験したことがある人がいたんですけど、日本語も英語もばっちりでした。英語がどれくらい出来てるかは私には判定できませんけどね(自分を超えた英語力だったので)。

日本語の方はとても論理的で説明的な言葉遣いをしていました。

ここにポイントがあります。

複数学ぶと共通点が見えて視点が上がる

2つ以上のものを知ると、それらを比較して共通点を見出すことが出来ます。

単純な例で言えば、コップというものを2つ以上見たことがある人は、

「コップというものは、液体を入れるもので、取っ手がついてたりついてなかったりする」

という特徴を見いだせます。一つしかコップを知らない人は例えば、

「コップというのは白くて取っ手がついていてコーヒーを入れるもの」

という理解をするかもしれません。この人が見たコップはコーヒーカップだった場合です。一つしか知らないと物事の本質はわからないということです。

ですから、自然言語で言えば、日本語と英語を両方話せる人は、日本語と英語を比較して、言葉というものの本質が見えてきます。

英語を学ぶと日本語もうまくなる

日本人は義務教育で英語の授業があるので、日本語と英語を知っています。なので、言葉というものに本質を理解できてるはずです。

英語を学ぶことで言葉には文法があり、構造を持っていることが意識できます。日本語は無意識に自然と覚えてしまったので気づかなかったけれど、第二言語を学ぶとそれらが意識できます。

さらに本気で英語を使うと、言葉の本質の理解は深まります。

私の場合、海外旅行に一人で行った際に、本気で英語を使う体験が出来ました。

外国で自分一人しかいないわけですから、本気で英語を話さないと、旅が前に進みません。

その瞬間意識が変わります。本気になると、

「自分が今伝えなきゃいけない内容味は何か?その内容を的確に相手に伝えるにはどういう単語を使い、どういう表現をすればいいか?」

という意識が働いたんです。これによって、言葉とは相手に自分の意志を伝えるものという本質がわかりました。日本語だとなんとなく喋っていれば、伝わるので意識しませんが、英語の場合、どう言えば伝わるかということを真剣に考えることになるんです。

つまり、言葉の本質とは「伝わること」だと気づいたんです。

旅行から帰ってきて、旅行記のブログを書いたんですが、その際に日本語版と英語版両方作ってみました。

すると、「日本語でこう書いたけど、意味としては何を伝えているのだろう?」という意識が働いたんです。

日本語でなんとなく書いていると、案外意味が少ない文章を書いていたりします。

「~な感じで、それに○○は~で~、…」みたいな文章って論理構造がなくて、英語に訳せなかったりするんです。

これに気付くと日本語の文章の書き方や話し方も変わります。しっかりと意味を伝える言葉の使い方に変わるんです。

一つ視点が高くなったということです。視点が高くなり、日本語視点ではなく言語の本質視点(言葉は意思を伝えるもの)で言葉を使うようになれたということです。

前置きが長くなりましたが、プログラミング言語も同じです。

プログラミング言語の本質が見える学習方法

プログラミング言語も2つ以上知っていると、

「プログラミング言語ってif文みたいな条件分岐があってwhile文やfor文みたいな繰り返しの構文があるもの」

というような共通点 = 本質が見えてきます。

「PHPだとこういう書き方をするけど、Rubyだとこう書くんだな、じゃあ、この表現の共通点(本質)はなんだろう?」

というような視点が生まれます。

あるいは、新たな言語のロジックの組み方を学ぶことで、元々使っていた言語のコードの書き方が変わるということもあります。

別の言語の視点を持つことの重要性

例えば、RubyやJavaScriptでは高階関数を使う機会がたくさんあります。すると、C#やPHPでコードを書く際にも、高階関数使う発想が生まれるんです。違う視点でその言語を見るようになったということです。

違う視点で見れるというのは、物事を俯瞰して見れてるわけです。視点が一つあがっているということです。

ですから、同時に複数の言語を学んだほうが高い視点を持ってプログラミング言語を学ぶことが出来るので学習効率が良いんです。

それにある言語を学んでいる時にわからなかったことが、別の言語を学んだら理解できたってことがよくあります。

node.jsを学んだらRubyのブロック構文が理解できた

私の場合、Rubyのブロックがよくわからない時期があったのですが、node.js(JavaScriptのサーバーサイド処理系)をしばらく使った後にRubyのブロックを見たら、思いっきりよく理解できたんです。

「あぁ!Rubyのブロックって無名関数を高階関数に渡す表現なんだな!」と。

これがわかったのも、node.jsでさんざんそのようなコードを書いたからなんです。
普通の言語でファイルを読み込むコードって↓みたく書くじゃないですか。

これは同期IOの書き方なんです。

node.jsって非同期IOなのでIOが発生する度に、IOが結果を受け取るための高階関数を使うんです。こんな感じのコードです↓

非同期IOだとIO結果を受け取るコールバック関数を高階関数に渡す書き方をするんです。これがRubyのブロック構文と同じなんです。Rubyのブロックは非同期IO以外の場面で多用されますけどね。

Rubyで同じロジックを書くと

って書きます。

JavaScriptの場合、無名関数が

なので、理解しやすかったんです。

Rubyのブロックって

なので、構文の意味を知ってる人からしたら、美しい構文なんですけど、知らない人がしたら、「え?どういう意味?」って感じになってしまいがちで、そんな時に別言語(JavaScript)での知識が加わって自然と理解が出来たということです。

まとめ

・複数同時に学ぶとプログラミング言語の共通点を抽象化した知識が得られる。それによってプログラミング言語を扱う際の視点が上がり、ますます、新たな言語を理解しやすくなる。
・ある言語をマンでいてわからなかったことが別の言語を学んだ際に理解できることがある

ということで、プログラミング言語はぜひ同時に複数学んでみてください!

エージェントを使った方が転職活動は楽です

東京・大阪近郊のイケてるIT企業に転職したい人には『レバテックキャリア』

 東京・大阪近郊のエンジニア経験者向け転職サービスです。

このサービスを運営しているレバレジーズという会社はシステム開発もやっているので、現場の仕事をよくわかってくれてますし、ヒカ☆ラボというIT系の勉強会なども主催していたりteratailというプログラマー専用の質問サイトを運営してて好感が持てます。求人案件もWebやスマホの面白い仕事が多いのでいいと思います。

あとホームページ見ると分かるんですが、若くて美人の担当者が多いのもナイスなんです!私の場合(たぶんあなたも)、担当者が美人だと転職活動のモチベーションめちゃ上がりますからね笑

エンジニア未経験の方や地方在住の方にはDODAというエージェントをおすすめします。

エンジニア未経験の方や地方在住の方には『DODA』

全国の求人を扱っていて、しかもITエンジニア未経験の人にも転職支援をしてくれるエージェントです。

未経験の人はサポート対象外のエージェントが多い中、DODAは未経験者を支援し転職を成功させています。未経験の方こそエージェントから職務経歴書の作り方や面接の仕方のレクチャーを受けた方がずっとうまくいきます。

フリーランスになりたい人には『ギークスジョブ』

フリーランスエンジニアになるには人脈が必要と思われがちですが、ギークスジョブに登録して希望条件を伝えれば、自分に合った案件を紹介してもらえるんですよ!思ってるより全然簡単にフリーランスってなれるもんなんです。

東京・大阪・名古屋・福岡の案件を紹介してもらえます。

 - 勉強法