2019年12月10日火曜日

読書環境

今日読んだ本、Goならわかるシステムプログラミング (渋川 よしき(著)、ごっちん(イラスト)、ラムダノート)の感想。

Go Systems Programmingを読んだときにも気になったことの、タイトルのシステムプログラムとはどういう意味か気になって本著を読んでみることに。システムそのものをGo言語で書くのか、気になったのは、それともシステムを使うプログラムのコードをGo言語で書くのかというようなこと。

その意味は、Go Systems Programmingと同様な感じだった。システムそのものをGo言語で書くというのではなく、オペレーティングシステムが提供する機能を利用するプログラムをGo言語で書くといった内容。なので、大雑把にみると内容的に重なる部分も多かった。

ただ、Go Systems ProgrammingはUnixやLinuxといったPOSIX系のOSについて学ぶというのが主な目的な内容だったのに対して、本著はそれだけではなく、同様の機能をWindowsではどうするか、Go言語ではどのように実装してるか、またはWindowsでは出来ないこと、特にシグナルハンドラやプロセス間通信のあたり、などについての話もUnixやLinuxの話と同様にあったのが有り難かった。ポータブルなクロスプラットフォームなソフトウェアを気軽に書けるのもGo言語の良さの一つだと思うし。また、Windowsについての低レベルのことについても学んでみたいと思っていたから。

Windowsについての記述もしっかりとあること以外の違いとしては、本著の方がより低レベルな内容についての話もあったこと。低レベルな部分を覗いて見る中で、Go言語の低レベルのアセンブリ言語で書かれた内容のコードやそれをみる方法、また、C言語のコードを覗いて見る、GC(ガベージコレクション)があって気にしないでもいいにも関わらず、メモリー管理の話などの箇所もあった。もちろん、その中でもWindowsの解説はあるし、POSIX系のOS、BSD系のOS、FreeBSD等やLinux、macOSとの違いや、POSIX系のOS間の中での違いの解説もあったり。他にもその違いを吸収するための、抽象化されている方法やサードパーティ製のパッケージの使い方や紹介などの記述もあったり。

また、本著の方がシステムについての機能についての解説がより詳しかった。Go Systems Programmingはどちらかというと、その機能をどのようにしてGo言語で使うかということが主だった印象。

注意点としては、本著はあくまでシステムプログラミングの話であって、Go言語の入門書ではないということ。ところどころに必要なGo言語の解説はあるものの、Go Systems Programmingみたいに最初にまとまったGo言語の基本をおさらいするといった箇所がないから、Go Systems Programming以上にGo言語の基礎的なことは知っておく必要有り。Go言語を全く知らないという人は、本著を読む前にHead First Go入門Goプログラミング、あるいは入門するだけではなくしっかりGo言語を学んでからにしたいという人はプログラミング言語Go等、何かでGo言語を学習しておくのが良さそう。

ということで、本著によりUnixやLinuxだけではなくWindowsのシステムプログラミングについて、しかもそれを日本語で学ぶことができて良かったし、まだ、最初から最後まで読み終えただけで実際に手を動かしてコードを書いたわけではないから、実際に問題や本著に出てくるプログラム、思いついたプログラムなどのコードを書きながら、今後よりシステムプログラミングについて理解を深めていくことにした今日この頃。

0 コメント:

コメントを投稿