D言語とGo言語

http://forum.dlang.org/thread/l37h5s%242gd8%241@digitalmars.com

1 comment | 0 points | by Jshiike 約4年前


Jshiike 約4年前 | ▲upvoteする | link

FacebookでD言語が採用されたというニュースですが、この内容では本番サービスに投入されたのか、社内ツールで採用されたのかよくわかりません。「AppleがObjective-C、GoogleがGo、MozillaがRustを担いでいるのに対抗して、FacebookもDを採用することで、C/C++後継争いに参戦。」というコメントもありましたが、単に元のC++のコードがヒドすぎたから替えただけという可能性もあります。Facebookのエンジニアブログで正式に発表されるのを待ちたいと思います。

D言語 [参考: D言語基礎文法最速マスター] のクリエーターのWalter Brightは、5月のdconfで方針を語ってます。


1) 簡単に読み理解できるコード


正しいコードが正しく、ダメなコードがダメとわかること


雛形構文を極力減らす


問題を解決しているが読み取れるコード


2) 正しいことが証明できるレベルであること


メモリは壊れない


安全性は他動詞で語れること


ファンクショナルプログラミング


コントラクトプログラミング


3) 産業レベルのクオリティ


パフォーマンスに妥協しない


スケールできる


管理ツールがしっかりしている


[Video] https://www.youtube.com/watch?v=e2F2pqeMLuw
[Slide] http://www.slideshare.net/andreialexandrescu1/dconf-2013-opening-keynote-by-walter-bright

D言語は、1999年以来、ここまでの道のりが随分時間がかかったり(Walter Bright頼りであったり、大きなコーポレートスポンサーがいなかったことが影響していると思われます。このカンファレンスの費用も主にKickstarterで調達しています。)、過去にD1/D2/Tango/Phobosという分裂があったりしたようですが、ついに日の目を見るのでしょうか。

D言語支持派は、


D言語がfacebookで採用されたということは、少なくとも開発言語として実用に耐えうる段階にきたと言える。


D言語は、C++の得意なことに加えて、得意でないことにも対応しているので、C++の傘から強い意志で脱出したと言える。一方、Go言語がC言語よりもよいという論拠は薄い。unsafeメモリアクセスとメモリ操作の機能は不十分。ビデオ周りや高頻度の取引システムなどメモリ操作をしなくてはいけないシステムは多い。JVMは生産性をあげてくれるが、Goのガベージコレクタではチューニングが必要。


という主張をしてますが、

D言語とGo言語の相違点をざっとまとめると、下記のとおり。


D言語はC++のリプレースの感が強い。Go言語はC, Limbo, Newspeakの影響がある。


D言語はややパフォーマンス指向。Go言語はプログラマーのために物事をシンプルに解決する生産性指向。


D言語は、exceptionはC++やJavaのように安全性に重きを置いた視点で設計されている。Go言語ではexceptionは奨励されていない。exceptionを投げることを”panicking”、exceptionをキャッチすることを”recovering”と呼ぶので初心者にわかりやすい。


オブジェクト指向プログラミングにおいて、D言語はC#、Java、C++と同じ意味で、struct / class / interfaceを使う。Go言語においてstructは、定義する際にinterfaceをインプリしたと言う必要はなく、コンパイラーが必要であれば決めてくれる。


並列処理において、D言語は、スレッドはメッセージを介してコミュニケートする。メモリはシェアされないが、デフォルトでスレッドローカルであることで、データがシェアされたと宣言されてない限り、コンパイラーでかなりアグレッシブに最適化される。Go言語にはスレッドに似ているがもっと軽量なgoroutinesがある。動的にサイズがかわるスタックを持ち、数十万の並列したgoroutinesが処理できる。


D言語は多くの機能をカバーしているが、マスターするのに時間がかかる。Go言語は短期間に理解できる。D言語とGo言語の差異は、パワーを重視するか、シンプルさを重視するかの思想の違い。


D言語ではほとんどのものがテンプレート変数をもつことができ、コンパイルで多くのことが処理される。テンプレを簡単に利用できることを重視している。Go言語はテンプレをもたず、複雑なものとみなしている。


https://groups.google.com/forum/#!topic/golang-nuts/8k59RgkeJ6s

http://stackoverflow.com/questions/3554956/d-versus-go-comparison

Facebook is using D in production starting today
https://news.ycombinator.com/item?id=6532322


ワザノバ TOP100 アクセスランキング [8/25-10/12]


#golang #dlang

Back