プログミング言語とGoの歴史
プログミング言語とGoの歴史
Goができるまで
2009→2019年の振り返り
- それだけでなく1960→2007年までの経緯、いままで、これからの3部構成で話します
1960から2007年
- 1960年代はHWごとに言語が存在した
history of Concurrency (並行処理の歴史)
- 最初はミューテックスから始まった
- メッセージパッシングのさきがけ
- 1978にトニーホアーさんがCSPの論文発表
- バッファーなしでプロセス間のやりとりを提案
2007から2009(Goの開発経緯)
- C++buildですら45分かかるプログラムがあった
- ロブ・パイクさんがこんなに時間が掛かってよいのかと考えた
- ある日C++11のテックトークに参加した
- そこでどういった機能をいれるかの話が上がった
- そんなに機能がいるのかなとロブさんが思った
- C言語開発者ケントンプソンの紹介
- CSP→Newsqueak、Algol→Cへとつながった
- Go言語をケン・トンプソンさんとロブ・パイクさんが作った
- Go言語は出た当初、それまでの言語の機能を削ったため批判があがった
- ジェネリクスがなかった
- ただこの経緯はALGOLの時と同じだという考えがある
- Goは新しい機能をいれるのをNoと言ってるのは、新しいアイデアが生まれるまでまつから
- どうなるまでまつか→シンプルまで
- どうやっってシンプルと判断するか→誰かがNoと言わなくなるまで
Goできてから(OSSの歴史)
2009
2010
- Gogetに相当する go install
- Prof
- govet
- Sliceにappendができるようになった
- The Go Blogが開通
- Iaasが復旧
2011
- gofix
- go install (今のgo build)
- ここでmakefileが不要に
- ‘go`コマンドができるようになった
2012
- ge get
- Go tool x(6g 8g 5gビルドなどの整備)
- この年compatibility promise
2013
- Go1.1
- 30から40%speed up for build
- Go 1.2
- encoding
2014から2019
2014
- Go1.3 gc効率が50%から70%削減
- Go1.4 runtimeがCからGoになった
- Golang/dep
- パッケージ管理ツールがたくさんでてきており、ここで公式にdepをだした
- この時k8sができた
2015
- Cだと可読性が低かった。Go触れる人みんなC触れるわけでないから
- コンパイラもC言語からGoになった
- Go1.6HTTP2対応
- 1.7SSA対応
- 1.8,1.9はそんなにない
- Go1.10でGo BuildCache
2016
- Go1.11でGo module
2017
- Go 1.12でGo vet rewrite
2018
- Go 1.13で Moduleproxu module mirror