nukorouのゆるガバ帳

ゆるくガバく適当に

プログラミングを学び始めて3年ぐらい経ったので遍歴まとめてみた

自分の肩書き

まぁ、お前誰だよって話で、最初のエントリーだし一応簡単に経歴等を紹介しておく。

関西の大学四回生で、24歳学生ではない。情報系の大学に通っている。

就職先は既に決まっている。Web系(が強い)の会社だと思う。

クソザコエンジニアです。

プログラミング言語遍歴

だいたいこんな順番で勉強したというか書いたと思う。 ここでリストにあげているのは、別にマスターしたというわけではない。ただ書いたことがあるという基準である。

C

こいつは一回の時に(東京では1年っていうんかな)大学の講義で学んだ。型という概念やプログラミングの基礎を学ぶのにはいいのかもしれないが、味気なさ過ぎ。コンソールに出力される文字列を見て何が楽しいねん!(白目)。楽しさについては教えてくれなかったあまりいい思い出のない言語。

  *
 ***
*****

こういうピラミッドをforの2重ループで作るやつで最初につまづいて、「ああ、俺は絶対にエンジニアにはなれない」と強く確信したのを今でも覚えている。エンジニアに憧れて情報系の大学に入ったのだが、少し挫折した。(そこからあるときまではプログラミングを嫌いになった。)

まだ、プログラマ(ここでは、給料を貰ってコードを書く人と定義)になった訳ではないが、結論から言うとその確信は大きな間違いだった。

Java

二回の時の実習で学んだ。こいつはクラスの概念を教えてくれた。構造体より、断然便利だな〜と当時思ってたような気がする。

Processing

二回の時に独学で勉強した。 厳密には言語ではない気がする。

電子アートとビジュアルデザインのためのプログラミング言語であり、統合開発環境である。Processing - Wikipedia

先生によると言語らしい。俺は、Javaラッパーという位置付けだと思っていた。

そんなことはともあれ、こいつは神すぎた。アニメーションとか、動くものが簡単に作れる。ライブラリも簡単に導入できて、見えるものがこんなに簡単に作れるのは俺にとっての革命だった。ゲームとかも作れると思うし楽しかった。こいつが、プログラミングの楽しさを教えてくれたと言っても過言ではない。前述のプログラミング嫌いが解消された。

Python

三回の時に勉強した気がする。独学。 こいつは更に神だった。最初は、「なんだこの気持ち悪いインデントのブロックは」なんて思っていた。よく言われるかもしれないけど、これは慣れると止められない。型がないのは新鮮だった。あと、pip(ライブラリのインストールツール)が便利すぎて驚いた。

三回の時に就活で出会った人の影響で、Webアプリにはまる。PythonでWebアプリ作るなら個人的に、BottleJinja2を使って作ればいいと思う。めっちゃわかりやすいし、大規模なプロジェクトとかじゃなけりゃ普通に使えるはず。

Ruby

三回の時にWebアプリはまった時に勉強始めた。独学。2度挫折した。 Ruby on Railsを学ぶために始めたがこれは間違いだった。 Ruby自体を学ぶことに問題はなかったのだが、Webアプリケーション全部入りのRailsを最初に(PythonとBottleを勉強する前に)勉強しようとしたのは間違いだった。覚えること多すぎて死んだ。「MVCが何ぞや」ってちゃんとわかる前にやるような代物ではないのではないかと思う。

Rails(挫折) -> Bottle -> Rails(挫折) -> Bottle -> Rails ぐらいでやっと理解できたような気がする。

まあ、別にBottleである必要は全くないので、Rubyで言うところのSinatraあたりを最初に勉強するのがRailsを理解するための早道な気がする。

C#

Unityで遊びたかったから、ちょっとかじった程度。

JSとHTML

こいつらは、必然的にWebアプリケーションを学ぶ時に書く羽目になったので、その都度リファレンスというか見ながら書いてたイメージ。

個人的にお勧めな勉強順

もちろん異論は認めるが、プログラミングが嫌いにならない程度にCやってPythonとか緩い楽しい言語やればええんじゃないかな〜って思う。逆の順だと型とかなんやねんってなりそうで辛そう。もちろん正解なんてないと思うし、好きな言語なんて人それぞれだと思う。

大事なのは、用途に合わせて技術選定することかなって思う。言語なんてあくまで、ゴールに到達するための手段でしかない。どんだけその言語が好きだったとしても、やはり得意分野不得意分野あるので、作りたいものに合わせるしかない。

極論

ある程度プログラミングの流れがわかれば、どんな言語でもリファレンス片手に書けるようになる。大事なのは、ロジックとかアルゴリズムの方。

ただし、楽しく書けるかは別である。