Goプログラミング: Rob Pike and Andrew Gerrand [The Changelog]

http://5by5.tv/changelog/100

1 comment | 0 points | by Jshiike 3年弱前


Jshiike 3年弱前 | ▲upvoteする | link

GoogleのRob PikeとAndrew GerrandがThe Changelog PodcastでGoプログラミングについてインタビューを受けてます。



Goは3年半前に最初にリリース。Cのようなローレベル言語とRubyやPythonのようなスクリプト言語と中間の位置づけ。C++のように何でも機能があるものではなく、シンプルであることがコアバリューで一貫性がある言語。


使ってもらうとどれだけ生産的で早いが実感できる。先日のプロジェクトで全部のテストプログラミングが8ミリ秒で実行できた。プログラマにとって効率的だが、コンピュータにとっても効率的。


Rubyのように同じことをあらゆる書き方で実現できるのではなく、一つではなくてもある程度決まった書き方でロジカルに解決するのが、プログラマー間での共通の理解、コードの可読性 & 再利用できるという意味でメリットがあるはず。機能が多ければよいのではなく、問題を解決するのに必要なミニマムの機能があるかがポイントなはず。


GoをはじめたRob, Ken Thompson & Robert Griesemerは長い経験があって、バックグランドが違って、ミニマム主義 & 実用主義。この3人が合意できるものを作ってきたのでシンプルなつくりにできた。


Rob: 物理学専攻し、AT&TベルラボでUnixなどの開発に携わる。 Googleで10年目。5年前にC++の非効率さにうんざりして、Goの提案をした。現在はほぼフルタイムでGoの仕事をしている。ライブラリ/toolを中心に開発している。


Andrew: Google社内でGoのDeveloper Evangelistに応募。現在はGoプログラミングの対外的な窓口。


GoはGoogleの保有でなく、完全に独立しているオープンソースプロジェクト。(コアのメンテナーである) Googleの社員は十数名。


大規模開発のプロセスの効率化に向いている。小さいプロジェクトにもいいけど。


Google社内の開発システムはすばらしいが、大規模な分散システムに支えられてる。Goは同じことを1台のサーバでできる。その他社内では、YouTubeのトラッフィクをさばくMySQLのロードバランス、Google Downloadサーバ、HTTPスタック、分散キャッシュシステムにGoが利用されている。


歴史の新しい開発言語なので、最近のwebソリューションにマッチしている。


現在はVersion 1.1.2


Version1.1.1でパフォーマンスが大幅に改善。Windows対応はGoogleチームがノータッチで全てオープンソースのWindowsエンジニアが対応してくれた。


Version 1.2は12/1にでる予定。


Ruby/PythonのコミュニティはStaticタイプ言語はコードが汚くなる原因だとみなしているふしがあり、それはC/Javaが与えた印象だと思うが、C/Javaのようにどのようなストラクチャであるかが重要な言語だと、問題に行き当たったときにストラクチャを考慮し直すのは容易ではない。そこで、Goの継承がなくフラットな仕組みが活きる。プログラムが大きく複雑になったときにこの利点が大きく効いてくる。「オブジェクト指向は継承がなくてはいけない、public/privateがなくてはいけない。」というのは間違ったバイアス。継承において何が親で何が子で、どのようにやるかが問題ではなく、何をするのかが重要。


Goはエクセプションをもたない。本番環境でエクセプションがありうるというのは運営上安全でない。GoogleのC++はエクセプションをもたない。また、Pythonではエクセプションが多くの意味をもち、見えないコントロールフローを考慮しなくてはいけないが、Goはエラーはコンピュータには当然あることで、ただのvalueのひとつとみなしている。


Dockerは全てGoで書かれている。


来年4月にデンバー(コロラド)ではじめてのGoカンファレンスを開催。




TOP25 アクセスランキング [9/23-9/29]


TOP25 アクセスランキング [9/16-9/22]

TOP20 アクセスランキング [8/25-9/15]


#golang

Back