生涯未熟

生涯未熟

プログラミングをちょこちょこと。

Golang Weekly #170

Go 1.9 Release Candidate 1 is released

Go1.9のrelease candidateがリリースされました!

インストール方法はこちらから

godoc.org

Go1.9には大きな言語仕様の変更として、型エイリアスFMA(融合積和演算)が実装されます。

エイリアス

エイリアスについては例を見た方がパッと判りやすいです。
例えば、

のコードの場合、定義したそもそもの型が違うためエラーとなります。
しかし、型エイリアスを使うことで以下のようなコードが可能になります。

先ほどと違いエラーは出ません。
この型エイリアスによって、パッケージ間の構造体のやり取りが柔和になるので凄く便利に使えそう・・・👌
実装された理由としては「大規模リファクタリングの際に段階的移行を行なうため、リファクタリング前・リファクタリング後のコードの相互運用をしたいから」という感じみたいです(あまり想像がつかない🤔

FMA(融合積和演算)

ザックリ説明をすると r = x * y + z といった計算の際に、 x * y の演算時点で浮動小数点数の丸め処理を行わずに和算を行なう演算方式。
今回の実装では上記のFMAが実装され、逆に丸め処理を行いたい場合は r = float64(x * y) + z のように明示的にfloat型でキャストさせます。

多分この実装のProposalとしてはここかな?🤔

github.com

本当にGo1.9のリリースが楽しみですね!!

Should Go 2.0 support generics? | Dave Cheney

Go2.0にジェネリクスのサポートは必要?という記事。

  • 最近の主流言語ではサポートされているため、多言語を扱うプログラマーにとってのコンテクストスイッチに関するコストを少なくするためにも入れるべき
  • しかし、Goの簡潔性やその他諸々の独自性を保ち、この「ジェネリクスは必要か否か?」の議論を無くすためにも、「ジェネリクスはGoで実装されるべきものではない」と声明するべき

というのが記事内での主張。(訳間違ってたらすみません🙇)
確かに自分自身はジェネリクス無くてもいいんじゃないか?と思っていたりするので(少なくともGoには)、開発陣による何らかの声明が欲しいところ。

GitHub - gophercon/2017-talks: Slides and links for 2017 talks

今年開催されたGoperConの資料まとめ。ありがたし🙏

ほぼ全てが映像による資料なので、英語の達者な方でないとちとキツい・・・