Go
https://ashitani.jp/golangtips/gopher.png
とりあえずやっとけ
サンプルコードの解説がよい
channelの実装は結構コンパクトらしい
packageは機能単位で切ることが推奨?一般的?らしい
クリーンアーキテクチャのレイヤーとして分割する、という水平方向の分割とは少し相性が悪そうである
が、他にコード分割の手段はない
外から見えるインターフェース用のパッケージが機能単位であれば問題はなさそう
errorチェックを減らしてスッキリ書くための手法
1個目の例だと、イテレータにエラーを押し込んで、2個目の例だと、Writerにエラーを押し込んでいる
使いたいオブジェクトをエラーと合わせてつつめということぽい
Go 1.10 はConcurrent Mark & Sweep (CMS)
コンパクションはなし
TCMalloc ベースのアロケータ
世代別仮説
多くのアプリケーションにおいて、新しくアロケートされたオブジェクトのほとんどが短期間で死ぬ、という仮説
世代別GC ではライトバリアを使って世代間ポインタを記録する必要がある
Goのコンパイラのエスケープ解析はかしこいので、世代別仮説にある若いオブジェクトはスタックに割り当てられることが多い