サーバーサイドのプログラミング言語としてPerlを使っていましたが、最近Go言語を使い始めました。そのざっくりとした感想です。命名の慣習とコード生成はGo言語らしいと思いました。
変数名やパッケージ名が短い
Go言語では短い変数名やパッケージ名が使われる傾向があります。パッケージ名は慣例的に1単語の命名されます。
Perlでは grep でサブルーチンが使われている場所などを探すことが多かったです。Go言語では簡潔な名前が用いられることが多いので、grepではなくLanguage Server の機能を使って参照箇所を探すようになりました。
個人的には言語を問わず、冗長であっても情報量が不足していない名前の方が望ましいと思っていたので、慣れない部分もあります。参照されるスコープが小さい変数は短く、グローバル変数は長くというのが元々の意図のようで1、それは100%同意です。
コード生成を多用する
Go言語でコード生成が多用されるのは1.18までGenericsがなかったのが一つの要因のようです。
また Goにはgo generate
を使ってコード生成することができるようになっています。
go generate で生成したコードには //go:generate go run generator.go
のようなコメントが入っています。このようなコード生成されたファイルやコード生成のためのコードが多いのがGo言語らしいと感じました。
感想
Go言語はシンプルで、習得しやすい言語だと言われていますが、無個性で無難という感じはなく、癖はあるけど一貫したポリシーがあるという印象を持ちました。今後もGoらしいコードをどんどん書いていこうと思います。