日頃Railsばっかり触ってるエンジニアがGo触ってみた

Posted on 2018年6月29日 Under Go 1 Comment
Pocket
LINEで送る

はい!こんにちは、新人の有安です。

いきなりですが、僕業務では動的型付け言語しか触ったことなくてですね、他のをやってみたいと常々思っているんです。

というわけで、Go言語入門してみました!

具体的には本を2冊ほど読みました。とりあえず勉強したこと感じたことなどつらつら書いてみます。

・スクリプト言語を触っていても気にしない、プログラムの低レベルな処理についての理解を深めることができる。Goを使って最大のパフォーマンスを得るには、スタックやヒープといったメモリ領域についての知識が必要になる。また、初心者がCを学ぶ時の障壁になる「ポインタ」についても理解する必要がある。スクリプト言語ならある程度大雑把に扱うことができた数値や浮動小数点、文字列などの基本的なデータ構造についても、より正確な知識が必要になる(“個別に構造体を生成するよりも、組み込み関数のmakeと構造体を組み合わせて構造体型のスライスを作った方がメモリ効率がよい”といった感じで、メモリについて言及されている箇所が多かった)。

JavaC#などのように各プラットフォームの差異を吸収するためのVMは備えていない。Goプログラムが動作するCPUOSに適合したネイティブコードを生成する。ネイティブコードとして実行されるため、仮想マシンやインタープリタなどを要するプログラミング言語と比較して、オーバーヘッドが少なく高速。

C言語との互換性を考えて設計されている。ポインタのポインタなども定義可能になっている。Cと合わせて学ぶと良いとのこと。

・構造体。クラスに似ているけど、そこまで高機能じゃない感じ?Cとか通ってないのでまだ感覚掴めてない感あり。

・publicprivateを、先頭が大文字か否かで分けている。慣れればラクで良さそう。他にも、楽にプログラミングするための工夫は色々施されているように感じた。

・型システムに階層関係がない。オブジェクト志向の親クラス子クラスに慣れていると、やりにくく感じるそうな。

・インターフェイスについて。インターフェイスを利用することでダックタイピングが可能になる。ここら辺はRubyやってたので馴染み深い。Goではインターフェイスを明示的にimplementsしない。interface{}型は全ての型と互換性のある特殊な型。

・並行処理、ゴルーチン、チャネル、実際使ってみないと感覚身につかない気がするな。。

などなどなど。とりあえず入門編の本読んで思ったのは、楽しく使えそう!です。

楽にコーディングするための工夫を色々感じたし、割とすんなり入れそう。Java勉強しといてよかったかも。高速で動くのも単純に嬉しいです。

次のフェイズとしては簡単なアプリ作ろうと思ってます!

最終的にはフクロウラボでGo導入して、僕のような経験の浅いエンジニアの意見も通るフラットな環境であることをお伝えできれば嬉しいです。そのためにも、まずは色々作ってみようと思います!それではまた!

Pocket
LINEで送る