今まさにプログラムを学ぼうとしてる若人に薦めるならば
というテーマで少し考えてみた。
前提
プログラム、と一言で言ってもいろいろ。
それによって変わるんだけど、とりあえずよくわかんないけどプログラム書きたい、と思っている人だとする。
そういう人にお勧めするなら何かなということを考えてみようという話。
昔話
今の前に昔なら、を少し考えてみると、こうかなと。
- 1990年代: C
- 2000年代: 前半ならC or Java、中盤以降ならHTML/CSS/JavaScript
2000年代中盤になると技術のパラダイムはWebに移ってるので、consoleでhello world出すよりHTML書いてHello World出せた方がよかろうと。
ちなみに2000年代も後半になると、小規模な開発ではC書けるやつよりWordPressいじれるやつのが偉いので、一歩一歩上ってるエンジニアには辛い時代になってる。
即効性を求めるならこんな基礎すっ飛ばして適当にググって入れてみて、わかんないことあったら聞け、が、一番効果が高い。
それでもあえて基礎からやりたい人がいた場合でも、俺ならHTML/CSS/JavaScriptを2000年中盤以降では薦めた。
時代が進みすぎていて、もうCでHello World出すのは学問だと思わないと辛すぎるので。
今薦めるなら
ちょっと考えてみるとこうかなと。
ネットワーク基礎 | TCP/IP |
---|---|
言語基礎 | C |
楽しさのとっかかり | JavaScript |
基本は枯れない技術というのがよくて、その観点で三つ。
TCP/IPは、結局のところ俺が15年弱IT業界にいて一番役に立っているのがこれなので。
ちゃんと勉強したいなら抑えておいて損はないと断言できる数少ない技術。
これはひたすら机上で勉強するのがいい。
Cは、どれだけHello Worldがつまらなくても、ポインタをちゃんと学べる数少ない言語のひとつなので。
これやっても仕事にはならんし実務にも使えないんだが、プログラムの根っこがどうあるかを知るのには結局Cが一番いい。
ほんとはヘッダとかリンカとかの概念がない状態で学べるのが一番いいので、Cでどこまで学ぶかはよく考えた方がいいかもしれないけど、変数・関数・制御構造とポインタについてはCで押さえたい。
これはひたすら読んで書くのがいい。
JavaScriptは、学習意欲を継続させるにはやはり動かしたいと思うので。
2000年代中盤ならHTML/CSSもセットにしたけど、今ならjsだけを推すと思う。
enchant.jsのコンテンツとかでもいい。
これはひたすら書いて動かすのがいい。
落とした技術
Java
オブジェクト指向自体がすでに怪しいので、最初期に学ぶことからは落としていいと思った。またJava8とかになると文法が拡張されすぎていてつらい。
今から学ぶなら、次のステップでいいし、その次のステップとしてJavaを選ぶかどうかも別の話。
C++
お察し。
底なし沼にはまる覚悟のあるやつだけ頑張れとしか言えない。
Cを好きになった人の次のステップにお勧めするのはいいかもしれない。
関数型諸々
俺まだ関数型しか書いたことないって人会った事ないんで。
マルチパラダイムのScalaを筆頭に覚えなきゃいけない事多すぎな意識高い系言語で、しかも20年後に残っている技術何個あるのって感じなので、初心者にはお薦めは出来ない。
立ち位置としてはJavaと同じ場所で語っていい段階に来ているとは思う。
Linux
Linuxというか、bashとunixという文化が生み出したマイクロモジュールの塊、は、やって損ないと思う。
思うが、ちょっと敷居高いし所詮やってることはツールを使ってるだけなんで、入門用としてはお勧めできない。
Cの勉強の過程でclangなりgccなり使います、エディタとかよくわかんないけどvimやっときます、とかなら、ついでに少し学ぶのはありかなぁとは思うけど、教科として含める程ではないかなと。
まとめ
特にまとまらんけど、今学習を始める未経験者に薦めるならこうかなぁと思ったことをつらつら書いてみた。
多分5年もすればまた意見も大きく変わるだろうなぁ。GLSLは鉄板だろうとか言ってるかもしれん。