shinobe179の日記

パケットの気持ちになって考えるのはもうやめだ

今年の夏季休暇は『Goプログラミング実践入門』の写経に取り組んだ(実施中)

概要

タイトルの通り、『Goプログラミング実践入門』の写経に取り組んでいます。この記事を書いている時点で第4章の最中です。

book.impress.co.jp github.com

動機

AtCoderを通してPythonの文法がある程度分かってきたので、今度はコンパイル言語を習得しようと思いました。Goはクロスコンパイルの容易さという点でメリットがある「らしい」(よく知らない)のと、現職でも使う可能性があるという点で選択しました。

コンパイル言語そのものははじめてというわけではなく、以前『スッキリ分かるC言語入門』の写経に取り組んだ経験があります。実務での開発経験はなく、トラブルシュートなどの際にソースコードを読む時の一助になっている程度です。

book.impress.co.jp github.com

Rustも気になっていますが、仕事で使う機会がないので見送りました。以下の本は買いました。

booth.pm

そもそも、低レイヤー技術が私が忌み嫌うハードウェアと切っても切れない縁で結ばれている(というか低レイヤーという言葉自体がハードウェアを多分に含む)ということもあって、基本的には低レイヤーへの興味は自分の趣味と割り切って、「自分も興味があって、かつ仕事にも役立てられる」技術の習得を優先しようというのが目下の方針です。

この本を選んだ理由

新しい言語を学習するとき、私に一番合っているのは「文法の説明をしつつサンプルコードを組み合わせるといつの間にかプロダクトっぽくなっている」本です。文法の説明に終始しているものだと、どういう時に使うのかがイメージできないので、プロダクトの開発過程を辿って各過程において必要な文法やパッケージの説明があると分かりやすいのです。書店でGo関連の書籍にざっと目を通したところ、それに一番近いのが同書でした。既に経験のあるネットワーク分野(HTTPサーバー)を題材のひとつとして取り上げているのも、とっつきやすそうだと感じました。

実際どう?

まだ途中ですが、正解だったと思っています。各文法の細かな説明は行われていないので、別途文法書やチュートリアルで補強したほうがいいなと感じています。前提としてHTTPの理解が多少あることや、C言語入門をやっておいたのもよかったです。

今後

この本の写経はもちろん続けるとして、よりよい環境を求めて「モダンな開発環境」を意識してスキルを身につけていこうと思います。