見出し画像

本当の「基礎」はどこにある?

基礎勉強をするのは大事です。
これは紛れもない事実ですよね。

事実なのですが…ことプログラムの学習ににおいてはこれを最重要にすると違和感を感じます。

プログラミングを始めようという初学者の方はまず作りたいモノや目的を決める。
そして、その後に最適な言語を調べてその言語の入門書などを見て記述方法を学びますよね?

この辺の明確さは個人差があるでしょうがおおよそはこういう流れが多いように感じます。

しばらく学習をして初学者を脱し、本格的にシステムに関わることになったとして、基礎に立ち帰る事は基本ですし大切な事です。

ただ、この時の基礎というのは同じ入門書を見たとしてその言語の記述方法という技術ではなく、
プログラムの組み方と言う思考に関する情報で、


学習を始めた頃の基礎の確認というのは
言語の記述方法の学習→プログラムの基礎的な動きの学習
という学習プロセスを辿るのに対し、

仕事でプログラムを扱う方の確認が
プログラムの動きの確認→言語のその動きに対応する記述方法の確認
という確認プロセスを辿ります。

確かにこの二つにはまず立場が違うし「学習」と「確認」という異なった事象ですので厳密には並べるのは何か違うのかもしれません。

ただこれを比較した時、どちらも基礎を確認するという事に違いはありませんので、挙げさせていただいております。

さて、ここまでを踏まえた上で何を伝えたいのかという事なのですが、


各プログラミング言語は基礎に依存するが、
根本的な基礎は各プログラミング言語に依存しない。


という考えが出てきます。

もちろんキャリアの長い方や機械語や、アセンブリ言語等を理解してる方には当たり前の話に聞こえてしまうかもしれません。
しかし、初学者にはこの辺りの基礎や言語が織りなしている「層」の相関的な理解がどうしても難しくなってしまいます。

学習を始めた段階でここを上手く織り込んだ上で進めて行く事が出来れば、基礎学習は使えるモノになるのでは?と私は考えます。



さて、今回はこの「層」というものを踏まえて学習について考えていきましょう。

ここまでの話をしたとて、
「実際のところ初学者は何をすればいいんだよ。」
なんて、とても混乱してしまいますよね。

そこで、私なりのプログラミング初学者向けの基礎勉強法があり、それは

2言語以上の基礎勉強を同時にやる。
というのを個人的にはおすすめしております。

具体的な方法ですが、

  1. まず、作りたいモノに最適な言語の入門書を入手して下さい。

  2. そして、その入門書とは違う言語の入門書をフィーリングで選んで入手して下さい。

  3. 次に、2冊の目次を開き同じような項目や単語がある事を確認して下さい。(「変数」「for文」など)

  4. 1冊目の入門書を進めます。この時、ひとつ項目を進めたら2冊目の入門書でも同じか似た項目を進めます。
    (補足ですが、2冊目の入門書は読むだけでも構いません。)

これをやって2冊をやり終えた頃には先述した「層」の概念についての感覚を持った上で言語の習得をし易くなるのではずです。



前回の投稿でも少しお話をさせて頂いたのですが、
ここで大事な考え方としては

基礎を学ぶ際はその項目が実際にはどう使われているかを考える事が重要です。

よく、目的意識を問う内容の学習テキストなど見かけます。
私も目的意識が無いと学習はほぼ不可能だと考えております。
しかし、この目的意識というのはそこまでハードルの高いモノでは無いと思うんです。
先述した「項目が実際にはどう使われているかを考える」という事、これを少し考えるだけでもこれは立派な目的意識ではなかと私は考えております。

少し逸れてしまいましたが、タイトルにも書かせて頂いた「基礎」というものですが、これは紛れもなく参考書などに書いてある基本概念や記述方法で間違い無いと私も思います。

しかし、ここで先ほどの「層」を考えて頂きたいのです。
1つの項目に対して概念や方法をどれだけ考え、アプローチができるか。
これが学習者本人にとっての大事な「基礎」になるのでは?
と私は考えております。


以上!

この記事が気に入ったらサポートをしてみませんか?