brand new note

ジャズ屋が技術の話をするところ

大学の授業から先の学びって

独学はきつい?

独り言になりますが、Cを始めプログラミングの独学はなんだかんだいって辛いものがあります。学ぶだけでいつまで経ってもものができないとか、専門用語が多いとか。プログラミングの単位取るのがめちゃくちゃ辛いとか、なにがなんでも学ばないといけない環境に身を置くとか、そんなことをするのが習得には最も良いと思うんですが、実際そうでもないなという学生の為に今やっていることを書いておこうと思います。まだ自分の実装力は0.00001くらいです。

授業でやったもの

標準入出力、配列、条件分岐、繰り返し、関数、若干のポインタ

この程度です。正直そこから先の学び方はあんまり教えてくれません。プログラミングの使いどころが分からず諦める人や自分のようにいつまで経っても「やりたい」が「できる」に変わらない人も多いような気がします。こういう場合、「実際そんなに作りたいものがない」という理由が挫折を生む原因の大部分を占めている気がしています。じゃあ諦めるしかないのか。。。

いまやっていること

自分の場合、今はサーバやネットワークが専門なのでlinuxを触る機会がこの1、2年でかなり増えてきました。普段使いのPCをwindowslinuxの2台持ってどちらにも対応できるように練習中です。Cはvimで書いてます。windowsの場合vidual studioを使う方も多いですが、個人的にはこちらの方がエディタの練習もできていいかなと。

またlinuxカーネルはCで実装されているので、これをいつか読み解きたいというのが今のモチベーションになっています。こうなると「何かを作りたい」という欲求よりも「仕組みを知りたい」という「わりと勉強寄り」なところがあるので、サーバエンジニアを目指したいとか、モノ作りが好きというより授業を真面目に受けるタイプだ、とかいう人によってはこういうはまり方もありかなという気がしています。作りたいもの作る欲求がある人はもっと別な方法で勉強できると思いますし...

カーネルのソースを見てみると関数、ポインタ、マクロあたりを(授業のレベルをはるかに超えたところで)学べるので、自分はしばらくこれらと格闘することになるかと思います。まださっぱり分かりませんが「非常に美しいコード」との事ですし、何よりlinuxひいてはコンピュータの仕組みをがっつり学べる所に魅力を感じます。メモリ管理とかプロセススケジューリングとかも学べます。

使うサイト

普通に授業受けてるだけだとこのへんのサイトの使い方は教えてくれないんです。レベルが低いだけと言われればそれまでですが、学生であっても早いうちからこのへんは知っておくべきだと思います。エンジニアを目指すならできるだけ早く専門用語が飛び交う所に身を置いた方がいいです...ネット上だけでも。

  • qiita

プログラマのための情報共有サイト。プログラマだけでなく全てのエンジニアが活用していると言ってもいいと思います、Cに限らずここ1、2年は疑問があった時は気づいたらここを読んでます。

Login - Qiita

  • terarail

エンジニアのための質問サイト。最近使い始めました。悩んだらここに疑問を書くと強い人が解決してくれます。インフラは未知数ですがプログラミングの疑問解決はここです。

teratail【テラテイル】|思考するエンジニアのためのQAプラットフォーム

自分が作るアプリケーションや作業したものをここに上げる練習はしていて損はないと思います。最初はきついですが雑誌やネット上の記事を頼りにするといいと思います。もちろん使っている方の身近で教わるのが一番の近道です。

The world's leading software development platform · GitHub

  • paiza転職

AtCoderとかでプログラミングをやるのもいいですが、難しいと感じたらここの問題からやってみるのもいいと思います。わりと最初の達成感は大事なので、できる問題から解きましょう。。。

ITプログラマー・エンジニア転職のpaiza転職

  • その他

あとはドットインストールとか、個人でやっているようなプログラミング学習サイトは探せば沢山あるので、まずやること、やる言語を決めましょう。始めたらものを作るでもいいですしアプリケーションなりカーネルなり、他人の書いたソースを読み解くでもいいです。分からないにぶつかって解決する、を楽しんで続けるのが難しいんですが、一番大事です。

おわりに

こういうところを教えてくれる人が周囲にもっと早くいたらよかったなーと思って書いていたら愚痴みたいな自戒みたいな文になってしまいました。。。精進します。なにかの参考になれば。