2018年3月21日水曜日

golang

プログラミング言語としてのGo (golang)を試してみた。
しかし,「Go」っていうのはGoogleの作った言語のくせにググラビリティが悪い。😅
まあ,golangで調べればいいんだけど,なんだかなあ。

で,ざっと勉強してみた感じ,安全なCの発展形っていう印象。ポインタ演算はないけどポインタは意識しないといけない(値渡し,参照渡し)っていうのが,今時の言語としては特徴的だと思う。CやC++などを経験していれば,それほど難しいことはないけど,今時は普通Cなんてやらないよね。
あと,クラス指向のオブジェクト指向言語ではないので,スライス(動的な配列)に要素を追加するときも,
 array = append(array, item)  
のように書かないといけない。
エラーチェックも,例外がないので,関数の戻り値チェックを一つ一つするという,WIN32 APIを生で使っていた時代に戻ったかのような手法。
まあ,標準ライブラリがかなり充実していそうだとか,クロスコンパイルが簡単にできるとか,ネイティブコードだから実行速度が速いとか,軽量スレッドを使った並列処理が簡単にできるとか,いいことはもちろんいっぱいあるので,適材適所で使っていきたいなと思うけど。

今回は,echoというWebフレームワークを使ってみたんだけど,フレームワーク自体はRubyのSinatraみたいに簡単に使えるシンプルなもので,いい感じ。ただ,RubyやJavascriptで日常的に使っていたハッシュオブジェクトが使えないっていうのが,とにかく不便。JSONのエンコードもデコードも,基本的にはとにかく構造体を作ってやらないといけない。動的型付け言語は楽だなぁとつくづく思う。

で,開発自体はWindows 10上で行っていたんだけど,クロスコンパイルして,ELF形式の実行ファイルをそのままLinuxサーバ上にコピーしたら,本当に動く。これはやはりすごい。ただ,実行ファイルサイズが巨大なのは,なんとかならないのかな。フレームワークを使ったせいなのか,実行ファイルサイズが14MBとかになったんだけど。
#もっとも,Hello Worldでも2MB位のファイルサイズになるんだけど。