回答:
プログラミング言語に関して言えば、古い格言「それはあなたが誰であるかではなく、あなたが知っている人である」は間違いなく当てはまります。CとC ++はAT&Tのスポンサーであり、JavaはSunによってもたらされました。.NETファミリーはMicrosoftから出ており、それらはすべて非常に急速に普及しました。次に、Objective-CとPythonがあります。これらはかなり前から存在し、それぞれAppleとGoogleによって発見および宣伝されるまで、本当に不明瞭なままでしたが、その後突然彼らは飛び立ちました。しかし、主要なスポンサーのない言語は、どれほど良いものであっても、あいまいにならない傾向があります。
GoはGoogleがスポンサーです。ここで正しい結論に達することは難しくありません。5年を与えれば、それは巨大になるでしょう。
実際、Goがそれほど成功するとは思いません。なぜそれが大衆に届かないのかという理由は、それがシステムプログラミングのための言語であることを意図しているからです。
より最新の機能を備えたシステム言語が本当に必要です。CとC ++は、従来のコードと後方互換性に縛られすぎて大幅に改善できません。とはいえ、Goが現在の形でその役割を果たしているとは思いません。そのデザインはシンプルすぎます。並行性モデルはエキサイティングですが、高レベルの言語からシステムの世界に他の機能をほとんどもたらしません。(最後に確認したのは、かなり前のことですが、例外もありませんでした。)さらに、少なくともコンピューター言語ベンチマークゲームが適切な尺度である限り(明らかに非常に大まかな指標です)、そうではありません。 「実際の」システム言語が必要とする速度とほぼ同じです。
私は、より現代的なシステム言語の空白を埋める最高のチャンスを持つ言語はDだと思います。Dは技術的にはGoよりも強力ですが、政治的には弱いです。大企業に支えられているわけではありません。本当に必要なのはいくつかのライブラリ(言語仕様が安定しているため、これは急速に対処されています)とキラーアプリです。
foo, err := SomeFunc()
一般的になります。重大な問題、またはerrがあまりうまく機能しないスポットについては、panic()
and を使用できますrecover()
。ただし、これらが意図的に使用されることはほとんどありません。スタックが非常に短い場合、例外をスタックに渡す方法はありません。また、短いスタックは、多くの並行スレッドがある一般的なものです。
Goを学んでいます。はい、GoogleとHeroku以外に生産的に使用されています。
Goは間違いなくシステムプログラミングに適した言語です。Cのような単純なコード、C ++のような強力な構造、Javaのような安全機能。非常に若い言語であるため、他の言語から多くの素晴らしいものが継承されています。
i := 1
代わりにint i = 1
、のfunc f(x, y, z int)
代わりにvoid f(int x, int y, int z)
、のtype Foo struct { a, b int }; bar := Foo{1, 2}
代わりにclass Foo { int a; int b; Foo(int a, int b) { this.a = a; this.b = b; } } /* ... */ Foo bar = new Foo(1, 2);
これらすべての優れた点と、静的に型付けされた言語でのみ知られている安全性とパフォーマンスを考慮すると、動的言語コミュニティの多くの人々がGoを好きになり始めました。ほとんどの場合、GoコードはRubyコードよりも長くありませんが、どの場合でも安全で構造化されています。
しかし、結局のところ、Goの致命的な議論は並行性であると思います。これは、関数型言語でのみ知られている強力な同時実行性サポートを備えたCに似た言語です。
これには少し遅れる可能性がありますが、Goは現在人気のある言語になりつつあり、Googleがそれを推し進めて主流になりそうです。Google内のシステムや製品で使用される言語としてプッシュされ、Google App Engineで使用する言語としてプッシュされています。Goの構築と拡張のバックエンドには、非常に鋭い人々がいます。Goのサードパーティライブラリに取り組んでいる非常に賢明で想像力豊かな人々がいます。
Goは、他の言語ではまだ満たされていなかった空白を埋めます。私にとっては、Perlと多くの回避策とトリックでその隙間を埋めようとしていました。私はそれがすべての状況とすべての人々にとって完璧な言語だとは思いませんが、確かに非常に多くの状況の候補です。たとえば、Webアプリには最適ですが、デスクトップアプリやサーバーベースのアプリにも最適です。HTTPとWebSocket(Apacheまたはnginxを完全にスキップできることを意味します)で非常に素晴らしい仕事をします。また、Windows、Linux、OS Xの両方のデーモンと通常のol 'デスクトップアプリでも非常にうまく動作します。今のところ、私にとって失敗する唯一の状況はAndroidアプリです。Windowsデスクトップアプリ、Linuxデスクトップアプリ、およびLinuxベースのWebアプリに使用します。
本当に主流になるまでには数年かかると思いますが、そこに到達するでしょう。PerlがCPANで持っている数や選択のようなものと同じように、より多くのサードパーティライブラリを構築する必要があると思います。そこに着くでしょう。
とにかく「メインストリーム」とはどういう意味ですか?それを知らずに、この質問に答えるのはとても難しいです。少し見てみましょう。
多くの可能な定義があります。以下にいくつかを示します。
管理ビュー:
開発者の見解:
経歴ビュー:
上記のすべてを考えると、唯一の正直な答えはおそらく「すぐに伝える」ことだと思いますが、本当の寿命の最良の指標は小さな数ですその言語を使用する企業。大規模な組織はすべて非常にうまく機能しています。投資規模が大きいため、言語やツールのシステムの成長に不可欠な場合もあります。対照的に、中小企業が言語を使用して製品やサービスを提供することで自身を築き上げた場合、彼らは将来もそうすることができるように貢献したいと考える可能性が非常に高いです。また、この地域の強力な雇用市場の基盤を形成し、ツールの需要も高まっています。おもしろいことに、これらは私のリストの主流性のいくつかの指標です(おそらく、経営者の気まぐれに応じて、もっと多くなります)。
では、Google以外で何人がGoを仕事に使っているのでしょうか?何も思いつきません。(私はそうではありません。私のニーズは現在、Java、C、およびTclの混合物で十分に満たされています。YMMV。)
私はそれを聞いたときにGoを調べました。完全な初心者として、私はまだ初心者の言語(私の場合はJava、C#、Python、およびScheme)を学んでいますが、多くの異なる言語に夢中にならなければ真剣に考えていたでしょう
私は自分のレベルで考えていますが、時流に乗る前に基本を下ろしても害はありません。しかし、私が正しいことを覚えていれば、Goを探していたとき、何らかの理由でErlangに非常に惹かれました。
この質問のためにGoを見ただけなので、主流の言語として普及するかどうかについては本当にコメントできませんが、1つだけが本当に興奮しています。
http://golang.org/doc/go_spec.html#Channel_types
私は最初にOccam-piでチャンネルの概念に出くわしましたが、これは史上最高のプログラミング概念の1つであると言わざるを得ません。C型言語で同じことをするのが面倒な場合があるので、並行処理はとても簡単に思えます。
私が見てきたことから(私が見た10分間で)、Goは多くの異なるプログラミングの概念を組み合わせようとしているように見えますが、それはすべての取引のジャックであり、誰のマスターでもないというリスクがあります。
メインストリームになるかどうかは、GoogleがAppengineやGWTのサポート言語として採用するかどうかにかかっていると思います。
after
。