都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

SQL Server Management Studio を触っていて、GO コマンドをみてふと Go のことを思い出したので、ちょっと勉強をしてみる

 今年のお盆休みは初の10連休でした。これだけ休みが長いとふと何かを勉強したくなるもんですね。最近はデータベースばかりでプログラミングに触れていませんでした。SQL Server を触っていて、GO コマンドを見たとき下記の記事を思いだしました。
codezine.jp

 求人数的には、RubyPython には及びませんが、年収では堂々一位です。今後人気が出そうですね。ミーハーなこともあり、早速 GO のお勉強を開始したいと思います(笑) ちょっとググってみるとわかりやすい記事がいくつも見つかります。下記のサイトが一番わかりやすそうです。
なぜGo言語 (golang) はよい言語なのか・Goでプログラムを書くべき理由

 悪い点がいくつか挙げられていました。

Generics (template) がない
継承がない
例外がない。まるで1970年代に設計されたかのようである。
非知的なプログラマのためにデザインされている。

 ここで、「非知的なプログラマのためにデザインされている。」という項目がありましたが、大規模プロジェクトになると様々なレベルの開発者が関わるため、この点は非常に重要だと感じます。知識のない開発者に継承や Generics などを下手に扱わせて、メンテナンス性などを落とすくらいなら、ある程度制限がある方がソースのレベルも一定に保てていいように思います。※ただ、やっぱり継承欲しいです。

 try catch finally などの例外処理がないとありますが、とりあえず手法は存在するようです。try に対応する defer を使って panic() 関数でコールした内容を catch にあたる recover() 関数で処理するようです。また、この defer,panic, recover は内部処理的なものに使うのが指針のようで、API レベルのものには error オブジェクトを使用するのが本流のようです。
blog.amedama.jp

 それ以外には、繰り返し処理には do や while は存在せず、for 分のみです。switch 文では case に条件を複数指定することができます。※ case 1,2,3,4 みたいに。

 たまに、言語を勉強するなら C++ を学べばどんな言語でもできるようになるという方もいらっしゃいますが、C++ が挫折する人も多く、開発言語を習得するにはハードルが高いように思えます。Go であれば習得も速く、言語習得するには最適なような気がします。(個人的意見です。)

 とりあえず Go の開発環境をインストールして見た。面白そうなので、しばらく触ってみよう。
f:id:koogucc11:20180819131934p:plain

みんなのGo言語【現場で使える実践テクニック】

みんなのGo言語【現場で使える実践テクニック】