PHP自主練/ 0.5hour
Sep / 38.5hour
Total / 140hour
プログラミングと英語学習は共通点が多い。
こんにちは。takaです。
7月26日から本格的にプログラミングを勉強し始めて、1か月半が経過しました。
正直、力がついたとは全く思っていませんが今後も継続して学習を続けていきたいと思います。
そんなプログラミングを学習する中で感じたことは、「これ、英語を勉強していたときと似ているなあ」ということです。
ちなみに自分自身の英語力はというと、
TOEIC 750点ほど
簡単な英会話ならOK
メールでの問い合わせ、返信もできるよ!
程度なのですが、ここに至るまでもなかなか道は険しかったです。
そうした経験から、プログラミングと英語学習のどこかどう似ているのか、またそれを基にしてどういう学習方法をしているのかをお伝えしたいと思います。
似ている三つのポイント
プログラミングと英語学習の似ている部分は枚挙にいとまがありませんが、自分は下記の三つが特に相関性が高いと感じました。
① インプット(勉強)<アウトプット(実践)
② 成果が出るまで、一定の地道なトレーニングが必要
③ 暗記しようとするのではなく、文構造を理解した上で練習をする
①インプット<アウトプット
まず、これが最も大事な共通点です。
英語学習を例とすると、「日常会話が出来るレベル」を目標としたときに単語の暗記や文法学習だけをしていても絶対に英語を「話せる」ようにはなりません。
例えば、次の和文を英文として口に出してみてください。(日本語をみた瞬間に英文をつくってください)
昨晩この通りで会った少年は、今日私の弟と一緒に野球をしていた。
The boy I met at this street yesterday evening was playing baseball with my brother today.
どうでしょう?すぐに口から英語は出てきましたか?
こうやって文にするとなんてことはない、中学生で習う単語や文法ですが、いざ口にだそうとすると難しいものになります。
これが「わかる」と「できる」の大きな違いです。
そして「できる」ようになるには、ひたすら自分の口、目、耳、手を使って練習する以外に道はありません。
プログラミングも一緒で、写経や教材を学習するというのはあくまで「わかる」ようになるためのものです。
これを「できる」ようにもっていくには、ひたすら自分でアウトプットしていくしかありません。
(それがなかなか難しいんですけどね・・・)
なので、初めは文法なりルールなりを理解しようとするのはいいんですけど、「何かしらのプログラムを自分で作る」という作業のほうが圧倒的に力になる、ということですね。
② 一定期間の地道なトレーニングが必要
現在の自分の英語力は「日常会話程度であれば可能」というレベルです。
そこに至るまで、主に学習したのは次の三つとなります。
音読・瞬間英作文(先ほどの、和文を英文にさっと作る)・単語学習
これを継続してトレーニングするのですが・・・まあ辛い(笑)。
何が一番辛いかというと、
「成長できているか、効果があるのかわからない」
ということです。
自分の場合だと「英文を英文のまま理解する」というレベルにいくまでに半年強ほどかかった覚えがあります。
それまでは、ほとんどといっていいほど成長を感じることがなく、「このままやってて大丈夫か?」となんども思いました。
プログラミングも同じだと思います。
現在1か月半ほどが経過して、毎日練習していますが、正直全く手応えがありません。
でもそれは当たり前で、まだまだ「できる」ようになるための練習量が圧倒的に足りていないからなんですね。
英語学習で耐性をつけていなかったら、多分挫折していたかと思います。
いつでも一番効果があるのは、一定期間の地道なトレーニングです。遠回りに見えてもこれが一番の近道だと思い、辛いですが日々取り組む以外道はありません。
③ 暗記はNG。文構造を理解してトレーニングする
英語を学習するときに指針としていたのが、森沢洋介先生の下記のサイトです。
その中でも特に重要だと思うのが、次の一節です。
英語力をつけるための基本法則はきわめて単純なものです。「意味・文構造を理解できる英文を意味処理しながらひとつでも多く自分の中に取り入れ、英語の文法・構文に則った文をひとつでも多く作る。」ということを行えばいいのです。この基本法則を効率的な方法で実践する上で重要なポイントをいくつか挙げてみましょう。
引用元:http://mutuno.o.oo7.jp/03_japan/03_japan.html
つまり、理解があやふやなままいくら音読や瞬間英作文をしても効果は薄いということです。
英語の例でいうと、先ほどのこの英文。
The boy I met at this street yesterday evening was playing baseball with my brother today.
この文構造を理解するとはどういう事かというと、
The boy (関係代名詞whom省略) I met (元々はここにwhom=the boy) at this street yesterday evening (ここまでが主文)
was playing (過去進行形 be+ ~ing) with my brother today.
簡易的に記述してますが、文構造を理解するということは、
「どういった文法のルールで英文が書かれているのかを、理解し説明できる」という事だとおもいます。
これがプログラミングだとどうなるのか。
<?php
if(isset($_POST['name']) == true){
header("Location:edit_pro.php");
}else{
~~~~~
?>
if = もし〜なら実行せよ
isset = isset関数、以下に指定する変数に値があるかを確認
$_POST = スーパーグローバル変数。htmlでの<form>タグ内でmethod=”post”とすることでユーザーが入力した値が格納される
また値は連想配列形式で格納される。ここではキー名が[name]のものとして値が入る。
「==」 = 比較演算子。ここでは「==」となっているので値が入っているかどうかを確認している。
header = 上記の条件を満たす場合は、「edit_pro.php」に遷移させてそこで処理を継続させる。
・・・・という具合です。
ただプログラミングで気を付けなくちゃいけないのは、
「完全に理解しようとして、全く前に進まない」
ということです。英語と比べてプログラミングは変数や関数など、網羅すべきことはめちゃくちゃあります。
正直、全部を完全理解するというのは不可能に近いかもしれません。
なので、「文法の根幹となるものは理解しつつ、細部のものは徐々に理解する」という進め方が理には適っているかと思います。
結果が出なくても諦めない。
挫折しがちな英語学習とプログラミング。
両者に共通するのは「成果が出るまでの期間がとても長い」ということです。
自分がやっていることが全て意味がないような、このまま続けてもできるようにはならないような・・・
学習してるとそんな気持ちに襲われます。
自分も今プログラミングの学習をしてて、襲われることがあります。
でも、意味はあります。そして目には見えないですが効果はあります。
コップに注がれた水のように、ある一定期間を越えたあたりでそれが目に見えてきます。
それまでは本当に苦しいですが、継続をやめることなく水が溢れるまでやり続けたいとおもいます。