プログラミングって興味はあるけど難しそうでなかなか手が出せないって人多いと思います。
確かにプログラミング、コンピューターの世界は深淵で最早一人の人生では全ては理解できない程に細分化されています。
私はJAVAやphpといった高級言語からアセンブリといった低級言語まで独学で学んでいます。
これから学習を始めようと言う人の参考になればと思います。
学習方は人の数だけある
やりたいことが決まっている人
例えばWebアプリケーションを作りたいとかブログを運用したいとか、具体的に決まっているなら先ずはそれを作って見るのが一番だと思います。
私は初めこれでした。
正直基礎的な知識はないのででたらめなコードだったり効率に悪い部分は否めませんが、一通り形になれば達成感や楽しさを味わえます。
但し本当に形にするのは大変です。
相当な覚悟と忍耐力が必要になりますね。
何度も心が折れました。
せっかく動いていていたのに少し修正したら動かなくなったり、そもそも何故変数に型が必要なのかとか基礎的なことが全く分かっていなかったり。
欠点を挙げれば、アプリケーションやWebサイトは普通高級言語で書きます。
フレームワークなどを便利なツールもあり、正直言って作るだけなら呪文を組み合わせるだけ。
当然呪文の組み合わせ方を覚えただけになって、コンピューターの動作原理を少しも理解できません。
例えばエラーの意味が分からない、偶然動いているが何故こう動くのかわからない、脆弱性が存在していても気がつかない、効率が悪くて高速に動作させられない。
コンピューターの理解不足から生じる問題が多々あります。
その都度理解していけば問題ないでしょうが体系的な理解に時間がかかります。
漠然とプログラミングを勉強したい人
こういう方はまず2進数から学習してもいいかもしれません。
2進数での表現が分かれば次はアセンブリ。コンピューターを直接制御する言語なのでハードウェアについてに理解が必須になります。
その後に高級言語を学べばC言語のポインタなど屁でもありませんね。
次にUNIXなどの設計思想を学習し、その後はOSのコードを実際に読んで理解する。
この方法の良いところはコンピューターの歴史を学ぶので、なぜそれが必要なのか、osのこの部分は何故必要なのか、この言語は何故こんな仕様なのかというのを自然に理解できます。
欠点は時間がかかりすぎる…。
アイディアを実現するのはいつになんねん。あの世でプログラミングを始めるつもりで頑張って下さい。
私のおすすめ
上記の方法を同時にやる、です。
こうすれば作りながらコンピューターを理解できますし、同時に形にすることができます。
プログラミングの学習に用意できる時間を分割し1時間は手を動かす、1時間は2進数やアセンブリを勉強する。といった感じです。
そうすればポインタの意味や変数に何故型の宣言が必要なのか、といったプログラミングを初めると生まれる疑問がすっきり解消されます。
ifの条件分岐ってコンピューターでは実際にどうやってんだとか理解できるようになれば効率的なコードが書けます。
やはり手を動かすことも原理原則を学ぶことも大事なのです。
なのでプログラミングを初めてみたい方はこの方法をおすすめします。
どちらかに偏ると絶対に行き詰まり挫折します。
おすすめ書籍
なぜプログラムが動くのか。
平易な言葉で学べますが、初心者には難しいかもしれません。
でも読み終わった頃にはなんとなく理解しているでしょう。
初心者には家にあって損はありません。
プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
UNIXの思想を学べます。
高尚なタイトルですが、コードはおろか難しい言葉も殆どありません。取っ掛かりに最適でその後のプログラミングに対する理解を一変させます。
なぜならこの思想はプログラミングそのものだからです。
一読の価値ありで、これは良書なので今後紹介したいと思っています。
ハードウェアについて学べます。ちょっと専門的かもしれません。
困ったときやなんだっけ?といった辞書的な使い方をしています。
まだまだありますがまたの機会に紹介したいと思います。
英語ができると尚いい
結構大事です。
情報量が桁違いです。
誰でも調べる内容ならいいですが、あまり誰も手をつけないことだったりすると英語の方が充実しています。
最初はプログラミングの専門用語も必要だし英語なんてやってられん!て思うかも知れませんが日本語で存在しないことを調べているかも知れませんよ。
そうだとすれば日本語をいくらしっていても意味がありません。
オープンソースのアプリに書かれているコメントが読めればコードの意味が分からない時に理解を助けてくれます。
中学校の教科書のも引っ張り出しましょう。数年後には大きな差になります。
長期的な視点で学習すべきです。
コメント