頼むからプログラミングを勉強するな

プログラミングは使うものであって、学ぶものでは無いというのが多くのエンジニアの言わんとするところであろうし、それは英語でも言えることなので何も間違っているとは思わない。

プログラミングはスキルであり、体育であるのだ。つまり何度も実際にやることでしか身につかないものである。一度プログラムで要件を実装可能な能力を持つ人が作ったものをコピーして、何となくどうやって動いているのか考えられるくらいになっていくしかない。自転車とか水泳と同じだ。人の動きを見て、自分でやってみて、十分にできるようになって、ようやく動きを考えることができるようになる。最初は見よう見まねでやってみることだ。

嫌になったら続けられないので、とにかく負荷を軽くして、できることをひたすら続けよう。プログラムは学ぶものではなく、馴染むものである。

一部のプログラミングさえできれば何とでもなると思い込んでいる、プログラミングをやったことのないおっさん達が学校でプログラミングを学ばせようとしているが、コンピューターを使い始めた世代はまずプログラミングすることから始めていたから、プログラミングに抵抗がないし、プログラミングしないといけない側面を何とか避けようとする。

だからプログラミングに検討もつかないおっさんしかプログラミングを勧めてこないというわけのわからない状況になっている。

プログラミングができれば、時間を圧倒的に圧縮し、自分の求めるものを手に入れる自由を多く手に入れることができるが、そもそもパソコンを使って時間のかかることをやっていない人間からしたら全く無駄な時間である。

効率化とか、省略とか、整理整頓とか、そういうことというのは、その人がそれを必要としている時にしか意味がないことだ。一律に学ばせても何にもならない。

ただ、コンピューターの仕組みという原理原則というものはこれからも長期間変わらないと思われるし、変化するならどう変化したか、過去の技術の仕組みの知識が必要になるので、覚えておいて何ら問題ない。

クロック数というのが何か、なぜ配列というデータの持たせ方をするのか、なぜ配列内は同じデータの型しか受け付けないのか、データの型を変換するためにはどうすれば良いのか、繰り返し処理させるにはどうすれば良いのか、時間の流れをどうやって表現するのか、ポインターというのはなぜ言語によってあったりなかったりするのか、そもそもポインターとは何か、メモリ管理って何だ、メモリリークとは何か、オブジェクト指向は何がありがたいのか、オブジェクトはなぜ生まれたのか……

この辺の考え方というのがプログラミングとパソコンの仕組みの学習を合わせてやることで、できるようにならないと、偉いおっさんの言う考える力(笑)というのにはまずならない。

プログラミングに興味があるなら自分で勝手に真似して作る。それで何かしらできるようになってくると、今度は仕組みそのものを考えられるようになっていく。まずは膨大なサンプルを読み解き、そのパターンの抽象化と応用だ。これはどんな学習でも同じだろう。ゲームでも同じだ。皆同じ動きすれば良い。余裕を持って動けるようになったら、実験してみて、自分の苦手な部分を知り、さらに真似るところを見つけ、余裕を作り、考えられるようになっていく……学ぶ姿勢とはこういう能動的な動きのことで、勉強のことではない。

5/30/2016 08:01:00 PM