
Google、C/C++に代わる言語「Go」をBSDライセンスで公開 120
ゴー?もしかして「碁」? 部門より
あるAnonymous Coward 曰く、
すでに各所でニュースになっているが、Googleが11月10日、新たなプログラミング言語「Go」をBSDライセンスで公開した(@IT、日経ITpro、CNET Japan)。
Goはご多分にもれずC風の構文を持つが、ガベージコレクタや、「チャネル」および軽量プロセス「ゴールーチン」といった並列プログラミング対応、イテレータ、クロージャ、リフレクションなどの特徴を持つ。設計と実装にはかつてベル研UNIXチームに在籍した Ken Thompson、Rob Pike、Russ Coxの3人や、Google Chromeの高速JavaScriptエンジン開発で知られるRobert Griesemerなど、Googleならではの超豪華キャストが名を連ねている。
タレコミ子の乏しい知識では、ベル研が開発した分散OS、Plan 9 をJava風にアレンジしたInfernoに搭載されていたLimbo言語にそっくりな感じがします。Sunに負けっぱなしだったベル研チームがGoogle移籍で逆襲なるか、という所でしょうか? かつて./のインタビューでオブジェクト指向の隆盛に嫌悪感を示していたRob Pikeが「JavaやC++よりもオブジェクト指向的」と積極的にぶち上げてるのも気になります。
また、プログラムサンプル内に日本語があるというのも目を引く。あるAnonymous Coward 曰く、
Go公式サイトのプログラム例
package main
import "fmt"
func main() {
fmt.Printf("Hello, 世界\n")
}で、なぜ「Hello, world」ではないのか不思議に思った方はおられないだろうか。2バイト文字の代表格漢字だから、と思ったがGo公式サイトのチュートリアルページにあるプログラム例が
05 package main
07 import fmt "fmt" // Package implementing formatted I/O.
09 func main() { 10 fmt.Printf("Hello, world; or Καλημέρα κόσμε; or こんにちは 世界\n"); 11 }と、漢字ではなく日本語(とギリシャ文字)であることが分かる。そしてyoutubeにアップされた一時間のデモの18分5秒のところで「This is a 日本語 string」なるconst strが扱われている(おそらく他にもあるだろう)。
日本語処理はプログラム言語開発の上でマイルストーン的な何かなのでしょうか?それともGo開発者の皆様が日本萌え?
言語名がちょっと…… (スコア:2, すばらしい洞察)
Re:言語名がちょっと…… (スコア:2, 興味深い)
昔、高林さんが migemo の名前を考えた時に、 検索でヒットしやすくなるよう気を付けた、 という話を書いていて、なるほどなと思いました。 横着プログラミング 第2回: Migemo: 日本語のインクリメンタル検索 [0xcc.net]
#というか高林さんて Google の中の人なんじゃなかったっけ? 今は違うのでしょうか?
探しにくいで思い出したけど、 高エネルギー物理で使われている Root というデータ解析用ソフトウェアがありまして、 これも非常に情報がぐぐりにくくて難儀しました……
もちろんGPLの実装も出る (スコア:1, おもしろおかしい)
GNU Go
Re:もちろんGPLの実装も出る (スコア:1)
ライセンスはもちろん GPL
Re:もちろんGPLの実装も出る (スコア:2, 参考になる)
無粋な解説ですが、GNU Go [wikipedia.org]という囲碁ソフトが既に存在することから来たネタでしょ。
Re:でも発音はしやすい (スコア:1)
Re:でも発音はしやすい (スコア:1)
もしかして: Goo [goo.ne.jp]
日本萌え?んなわけねーだろ常識的に考えて… (スコア:2, おもしろおかしい)
/ ̄ ̄\
(⌒ヽ ヽ⌒)
|:::: ̄  ̄l
. |::: |
|:::: (● ) (●)|
.|::: (_人__) | やらないお 萌えに決まってるだろ
|::: `⌒´ | マスコットキャラ的に考えて
|::: __ |_
|::: ノ__) |_) The Go Programming Language
|::: | http://golang.org/ [golang.org]
|::: |
\___、⌒i___ノ⌒ヽ
(_ノ ヽ_ノ
言語仕様をみてみた感想(ややおふとぴ (スコア:2, 参考になる)
取り敢えずFAQ [golang.org]とLanguage Design FAQ [golang.org]とLanguage Specification [golang.org]を飛ばし読みした感想。
例外は無いか・・・まあKenさんが想定していそうな用途(for systems programming)だと実装の優先度を下げてもいいかもね。
Generic Typesがまだないのはちょっと残念だな。でもまあ、変なキャスト変換も無いから、JavaのObjectのようにフリーダムな事にはならないかな。
"-ldarwin/amd64" ? (スコア:2)
http://www.youtube.com/watch?v=wwoWei-GAPo [youtube.com]
ビルドデモのオプションに見える"-ldarwin/amd64"って何でしょう?
64ビットAMDマシンをHackintoshで動かしてるんですかね?
Re:"-ldarwin/amd64" ? (スコア:1)
4GB 以上のメモリを搭載した x86_64 アーキテクチャの macbook で実行しているだけでは?
もしくはブートオプションで 64bit モードで起動するようにもできますし。
amd64 は x86_64 と同義です。OSによっては amd64 と表記されるものもあります。
AMD が先行して実装し、後に Intel が互換命令を実装したため、いち早く amd64 に対応した OS
では x86_64 にアーキテクチャ名を変更するメリットが無いと、今でも amd64 として扱っています。
Linuxx では x86_64 になっていますが、FreeBSD では今(8-STABLE)でも、amd64 のままです。
ユーザランドが FreeBSD ベースの MacOSX が amd64 と表示されるのはあたりまえかと。
# mac mini もあるのだけど電源入れに行くのがめんどくさいので mac では確認してません。
えーと… (スコア:1)
>日本語処理はプログラム言語開発の上でマイルストーン的な何かなのでしょうか?それともGo開発者の皆様が日本萌え?
英語アレルギーの人が多い日本人に早く普及させれば、世界的にも普及させやすいから…とか?
#んなわけない
/* Kachou Utumi
I'm Not Rich... */
Re:えーと… (スコア:5, 参考になる)
故石田晴久元東大教授の訳した K&R の前書きに、カーニハンからのメール (1988年12月) が引用してあって「日本語勉強してるよ」とあります。
Beru Ken de Ishida san ome ni kakatta no toki kara
nihongo wo benkyou shite imasu.
今どきなら中国語に興味を持つ人も多いでしょうが、当時は全く異文化の言語 (多くの計算機言語の研究者は自然言語にも興味を持っているでしょう) としては日本語が目に留まりやすかっただろう、と想像します。
で、そういった人たちに影響を受けた人たち (トンプソンもそうじゃないかな) が、この言語の開発に多く関わってる (か強い影響力を持っている) ってことですかね?
Re:えーと… (スコア:2, 興味深い)
石田氏だったか、名前を思い出せないけどある日本人研究者が
ベル研で日本語処理についてしゃべったらずいぶん好評だったらしく、
翌年ベル研を再訪したら、Dennisがまる一年間、多国語処理の研究だけしていた
というエッセイを読んだことがあります。誰だったけなあ。
ベル研の日本語贔屓は日本人にとって有難い話ですね。先達に感謝です。
Re:えーと… (スコア:2, 興味深い)
Re:えーと… (スコア:4, 興味深い)
>それともGo開発者の皆様が日本萌え?
プログラミン言語 『碁』 なのだとばかり。
囲碁はゲームプログラミング的には今でも最難関だよね?
Re:えーと… (スコア:4, 興味深い)
彼らはUNIXで日本語を通せるようにした人々ですから。
EUC開発にも絡んでます。
別に出ている1988年のメールだと、ちょうどUNIXで日本語を扱うニーズが増し、
一通りのコマンドを8bit cleanにする作業をやっていたころかな。
Re:えーと… (スコア:2, すばらしい洞察)
UTF-8 だと日本語は 3byte …
# って誰も突っ込まないのはナゼ
Re:えーと… (スコア:1)
> マジレスすると、文字列の2byteコードとかのチェック用なのでは?
それは大前提で、その前提のもとで
中国語でもハングルでもギリシャ語でも発音記号でも、選択肢はいろいろあるのに、その中でもなぜ「日本語」なのか?
というのがタレコミの疑問なんだと思います。
Re:えーと… (スコア:2, 参考になる)
多言語対応のアピールだから、英語からかけ離れた言語の方が都合がいいんでしょう。
# "It's Greek to me"(ギリシャ語に見える/聞こえる)は「訳分からん」の慣用句
言ってないことに反論するなよ
フランス語では・・・ (スコア:1, 参考になる)
素直に参考になりました。
こちら [blogspot.com]によりますと
PLAN9(Re:えーと…) (スコア:1)
今回公開されたソースコード中には、"#ifdef PLAN9PORT" とかあるので、
その辺に影響されているんじゃないですか?
あと、イメージキャラクタ(?)がそことなく似ているような、、、
Re:えーと… (スコア:2)
>でも翻訳してない/日本語通らないってだけで一切読まれない/使われないんだから。
こらこら。それは技術者に対して非常に失礼だぞ。
日本においても、英語が読めないほどの低レベル開発者が使わないだけで、
まともな技術者なら必要があれば英語くらい読むし使うでしょ。
Re:えーと… (スコア:2)
> 日本においても、英語が読めないほどの低レベル開発者が使わないだけで、
> まともな技術者なら必要があれば英語くらい読むし使うでしょ。
プログラマとしてまともな技術者のみを仮定するのはとても
視野が狭いです。
プログラミングって英語の学習途上にあるはずの中学生でも
英語を学習していない小学生でもできますよ。
API リファレンスの翻訳というのはこういう層に対して
プログラミングの門戸を開くという点においてとても
重要です。
Re:えーと… (スコア:2)
>API リファレンスの翻訳というのはこういう層に対してプログラミングの門戸を開くという点においてとても重要です。
誰が門戸を開く話をしている?
>>翻訳してない/日本語通らないってだけで一切読まれない/使われないんだから。
これが「ユーザー数が減る/激減する」だったら、非常に残念だがその通りだろう。
翻訳がユーザー層を広げる意味があるのは百も承知。
そうすることに、一体どれだけの価値があるかは分からんけどね。
Re:えーと… (スコア:2)
>でも翻訳してない/日本語通らないってだけで一切読まれない/使われないんだから。
Go言語は英語で発表しただけでこれだけ話題になってますよね。
Re:「かの有名なGoogle」補正 (スコア:1)
昔はじめてアスキーの「オブジェクト指向スクリプト言語Ruby」を読んだ時も同じ事を思った。
まあ本気かどうかなんてどうでもよい話で、普及するかどうかは結果論だよね。
Re:えーと… (スコア:1)
和英辞典での一番目に書いてあるズレた単語を使うよりは日本語のローマ字綴りか、最近のコンパイラなら漢字で書いた方がなんぼかマシですわなあ。
pracite()なんつー関数があって、何かと思ったら「実行」なんだそうだ。
ネタ元は http://dic.yahoo.co.jp/dsearch?p=%E5%AE%9F%E8%A1%8C&enc=UTF-8&... [yahoo.co.jp] か!
Re:えーと… (スコア:1)
プラサイト?
さすがに難易度高いです。
Re:えーと… (スコア:1)
Issue 9 (スコア:1, 参考になる)
Issue 9 [google.com]でi9に?
Go! [lulu.com]ってのが先にあったらしい
今後のバージョンアップにおける名称の変更 (スコア:1, おもしろおかしい)
さらに次のバージョンが Goog
…
最後にGoogleがつぶれた時には Google
Re:今後のバージョンアップにおける名称の変更 (スコア:1, 参考になる)
Gooはプログラミング言語としても既にあります [mit.edu]。開発がしばらく止まっているようですが。
ライブラリの名前が og ? (スコア:1)
で、リンカーとかが le ?
最初に実行したときに全部リンクしてから最適化をスタートさせる…とかが楽しそうだから、"le" は是非作って欲しい。
ところが、ライブラリ "og" がへくってしまい、Go..le となってしまい、
「おねーちゃん、俺たちの間に挟まってくれ」
とお願いをする事に(それは違う話だっ)
fjの教祖様
日本語キーボードを良く見るんだ (スコア:1, おもしろおかしい)
これは殺人者を意味する。
つまり、これまでのCやC++を
破壊するために送り込まれたんだよ!
Re:日本語キーボードを良く見るんだ (スコア:2)
できる事なら冗談でなく、そうなってほしいが ^^ >>破壊
今まで何度もCやC++を「上書き」つまり過去のものにしようという試みがなされてきたけど、
まだどれも「棲み分け」するほどにはなっても「上書き」には成功してないですからね。
コマンドライン引数の扱い (スコア:1)
興味持ったのがこれ。
このコマンドラインパース方法は面白いと思った。この発想はなかったっす。# おれが見たことないだけかもしんないけど
たしかに、プログラム中最初の1回しかパースしないんだから内部でスタティック変数使おうがなにしようが関係ないわけだな。
まぁこれはこの言語とは関係ないからオフトピだな。
Re:コマンドライン引数の扱い (スコア:1)
Goを使う場所は?(オフトピ) (スコア:1)
サーバー用途だったらBigTableのO/Rマップとか最初から入っていても良さそうな物だし、
ローカル環境を意識しているわけでも無さそうだし、……
と消去法的に考えていくと、
もしかしてAndoroidのアプリをユーザーにGoで作らせるのがとりあえずの目的なのでは。
そしてAndoroid OS自体もGoで置き換えるつもりなんじゃ。
と、妄想してみたり。
Re:Goを使う場所は?(オフトピ) (スコア:1)
Rails(やPHP)の置き換えとか。
べつにWebだから「パフォーマンス イラネ」ってわけでもない。
コンパイルコマンド (スコア:1, オフトピック)
% 8g foo.go
- 6g - x86-64bitアーキテクチャのGoコンパイラ
- 8g - x86-32bitアーキテクチャのGoコンパイラ
- 5g - ARMアーキテクチャのGoコンパイラ
エイリアスすればいいとはいえ・・・。
BSDライセンスということは (スコア:0)
MSがやるなら・・・ (スコア:0)
Re:MSがやるなら・・・ (スコア:3, おもしろおかしい)
いやいや。不可能を可能にするMSとしてはGoを上回る VisualGo2 或いは VisualGoTo でしょう。
Re:MSがやるなら・・・(お約束) (スコア:3, おもしろおかしい)
コーディング規約でGoTo禁止だからうちの会社じゃ使えないな。
#後藤さんが「(日付) ~を修正 by Goto」といれたコードが社内のチェッカーを通らなくて
#3時間ぐらい悩まされたのでAC
Re:MSがやるなら・・・ (スコア:3, おもしろおかしい)
Re:何故出てこない (スコア:1)
でもって、
TurboGo とか
Boland Go とか
GnuGo とか、、、
# うーん、最後のはすでにあるなぁ。
Re:typo (スコア:4, おもしろおかしい)
これでいいんだと言い訳されます。
Re:結局はGC付き言語 (スコア:1)
そーだよねー。
せめて、GCを使わないよ宣言ができたらいいのになーと。
仕様書をまったく読んでないけど、以下ができたら C++から乗り換えてもいい。
デストラクタを確実に読んでほしい場合のGCを使わないよ宣言
D言語並みの契約による設計
テストの接合部を作りやすいようにクラスの再定義のサポート
メソッドのconst指定による状態変異の抑制
外部から読めるけど書けないアクセッサ(読みはpublicで書きはprivate)
by rti.
Re:結局はGC付き言語 (スコア:1)
>ごく稀にでも+500%になりうるようなら失格です。
そういう理屈だとOSのシステムコールを読んでもダメ、キャッシュを使うのも
パイプラインもダメということになるはずです。でも実際はそうじゃない。
実際には一定の許容範囲があり、ごく希ならOKなのですけどね。
C言語を良く分かってない人ほど「GCは非決定的だから糞、C言語は決定的だから最強」と
いう議論になりがちなのですね。