chakokuのブログ(rev4)

テック・コミック・DTM・・・ごくまれにチャリ

Go言語を勉強する

組み込みでTinyGoを使うとして、Go言語自体を理解できていないとパッケージ(ライブラリ)の使い方とか、エラー処理とか、細かい所がよくわからない。Go言語は言語仕様がコンパクトで学びやすいとは言われているけど、実はクセ強な言語と思っています。というわけで、、Go言語を理解すべく、「初めてのGo言語」という本を買って、解説を読みながらサンプルコードを走らせて勉強中。400ページ以上の分厚い本なので、全部読むのにかなり時間かかりそうですが、、一つの言語をじっくり勉強したことが無いので*1、今回はきっちり理解したいと思っています*2

この本のスタイルとして、イディオム(書き方の型?)に注目して理解するというアプローチなので、解説に示された書き方の型を学べばGo言語らしい一定の品質のコードが書けるだろうと期待。本では、なぜこのような仕様になっているのか?のレベルから解説がなされているので、GOという言語の思想も少しは理解できるだろう。Go言語を初めて見た人は、なぜ例外処理がないのか??と言うらしいが、この本にも仕様に入っていない理由が書かれている。*3

Go言語は新しいソフトウエア設計思想を盛り込んだ最新の言語というわけではなく、シンプルな言語を作るという設計者の強い思いで、必要な機能を厳選したミニマムな言語と思いました。だから、、Go言語の特性を活かしたコードを作るには、どのように記述するが最適なのかを理解している必要があると思っています。シンプルな言語なので好きになれそうで、MicroPythonで速度が問題になるときはTinyGoで組んでみたいと思っています。なぜCを使わないのか??自分でも分かりませんが・・ワクワクしないから??ARM等はライブラリが盛りだくさんでワケ分からないから?? コーディングの観点では、Go言語ではMAP型とかfor rangeとか使えるし、メモリ管理も処理系でやってくれるのでCよりは楽にコードが書けるのではと思っています。

*1:Swiftもクロージャあたりで挫折気味、Flutter+Dartに転向,JavaScriptもasync/awaitが分かり切らない

*2:特に、インタフェースと並行処理は理解したい

*3:書かれているが、、自分はすんなりとは理解できない。言語仕様を策定した人の考えなんだろうけど。。関数を呼び出した側で、 value, error の2つを必ず受け取る書き方ってきれいですかね。。うーん。。十分に設計されないプログラムで、下位に関数からExceptionを返されて実行フローが想定外になるケースもありえると思われ、このGo言語のスタイルはそれなりに意義はあるのだろうけど