Monday, July 11, 2016

『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」

7月6日にジュンク堂にて行われた『プログラミング言語Go』刊行記念イベント「Goの設計思想を読み解く~実際の開発に活かすために」プログラミング言語Goの訳者である柴田さんと対談してきました。

トークセッションということで特にプレゼン資料的なものはないのですが、sliceの比較や、goroutine IDをあえて提供しないあたりにGoの設計思想であるSimplicity(簡潔性)が色濃くでているとかいう話をしました。 実際の開発に活かすには、Goでは具象型(concrete type)でAPIをきちんと考えて設計して、必要なところでinterface型を提供するようにしたほうがいいということを説明しました。特にJavaとかを書いている人とかは まずinterfaceを定義しようとすることが多いのでそれはやめたほうがいいと思います。interface型を先に定義するのはpremature abstraction(早すぎる抽象化)に陥りやすいです。

Goでは言語がシンプルな分、プログラマがしっかり設計し、きちんとコードを書くことが求められます。例えばGoプログラマは複雑な型であってもゼロ値が有効な値になるように設計する努力する必要があります。 また、エラー処理に関しても、Goではしっかり設計することが求められます。

できるだけシンプルな具象型をinterfaceを介してうまく組み上げていくことで、複雑な処理をするプログラムを開発していくかんじになります。 最初はどう組み合わせばいいかわかりにくいですが、うまく組み合わせることができるようになってくると、読みやすいGoのコードになっていくと思います。