web-dev-qa-db-ja.com

クラウドコンピューティング用のプログラミング言語はどれですか?

新しいクラウドコンピューティング時代が近づいており、プログラミングを学ぶつもりであるため、クラウドがサポートしているプログラミング言語はわかりません。

Java、ASP.NET、PHP、Python、Ruby、Perlなどをサポートしているのではなく、C、C++などのローエンド言語はサポートしていないと思います。その場合、ソフトウェア会社はソフトウェアを再開発する必要があります。これはプロジェクトを始めることができる時期であり、競合他社として大きなソフトウェア会社はありませんか?

クラウド向けに開発できるように、学習に重点を置くべき言語を知りたいです。

32
Anomym

「クラウドコンピューティング」は、言語の概念というよりもオペレーティングシステムレベルの概念です。

AmazonのEC2クラウドコンピューティングサービス でアプリケーションをホストする場合、EC2でサポートされているオペレーティングシステム(Linux、Solaris、Windowsのいくつかのフレーバー)で、好きな言語で開発できるとしましょう)、それを専用の物理サーバーで行うのと同じように、1つ以上の仮想マシンに「クラウドで」インストールして実行します。

35
Jim Lewis

それは非常に興味深い質問です。

Lang.Nextカンファレンスでは このトピックに関する非常に興味深い議論で、いくつかのプログラミング言語の著者が参加しています(Scala、Dart、C#)。 最後に明確なコンセンサスはありませんでしたが、私の観点からは、1つのメッセージがあります。

この「クラウド時代」の理想的な言語は、オブジェクト指向である必要があり(それが私たちが世界を理解し、モデル化できる方法であるため)、関数型プログラミングも受け入れる必要があります。

「クラウド時代」のコードはほとんど常に分散されています:いくつかのコア/マシン(クラウドセンター内)で実行されるか、クライアント/サーバー分離のみです。また、非同期です。 WSの応答を待つとき、コードをブロックしません。コールバックはいつでも入ります。

標準の命令型プログラミング言語を使用する場合、非同期と配布の処理は非常に複雑です。常に「現在の状態」に注意する必要があり、コールバックが来たら、この状態に応じて何をするかを決定する必要があります。

関数型プログラミングは「状態」を排除するのに役立ち、この新しい状況により適しています。

クラウドコンピューティングでは、コードは分散され、ステートレスで非同期です。関数型プログラミングはあなたを助けることができます。世界をモデル化するには、オブジェクト指向がほぼ必須です。

もし興味があれば、私は それについてのブログ記事 を書きました。私はC#が好きですが、実際にはScala、Clojure、F#の方が適しているかもしれません。

一方、C++は常に存在し、最近は近代化され、注目を集めています。

11
hoonzis

どのプログラミング言語については、ブラウザベースまたはサーバーベースの言語が使用される可能性があります。 Javascript、PHP、ASP、AJAX、Perl、Java、SQL。

クラウドでの動作専用に設計された新しいプログラミング言語とBCLを実装する必要があるとします(クライアントマシンでは使用されません)。クラウドコンピューティング向けに最適化する必要があります。学びやすく、高速で、効率的で、強力で、モダンです。

クラウドホスティング製品が開発者を支援する最大の方法は、遅延を発生させることなくサーバーを起動してサイズを拡大できることです。開発者は、完全にカスタマイズされた環境でアプリケーションを作成し、それを非常に面倒な実稼働マシンに拡張できます。物事が望みどおりに機能しない場合は、比較的簡単にそのマシンを破壊できます。

ほとんどの クラウドコンピューティングプロバイダー 使用JavaおよびC-Sharp、クラウドサーバーを作成するために。

9
john

Java、PHP、Python、Ruby、Perlについて言及した言語は、確かにC/C++(およびASP.NET)よりもプラットフォームに依存しません。

プラットフォーム固有の多くの違いは、特定のプラットフォームで利用可能なライブラリによっても発生します。

しかし、実際には、コードを実行するシステムと常に同じプラットフォーム(オペレーティングシステムのフレーバー)で同じまたは少なくともクラウド上で開発する、つまりクラウドはソースコードを取得してコンパイルしないそれを実行する前にあなたのために。

個人的に私はJavaまたはPython(おそらくRuby)も)あらゆる種類のタスクに利用できる膨大な数のライブラリを持ち、非常にプラットフォームに依存しない。

9
Andre Holzner

どの「クラウド」を使用するかによって異なります。 Google App Engineの場合、JavaまたはPython。Groovyもjvmで実行されるGoogle App Engineでサポートされます。Amazonを使用する場合は、ほとんどのOSをインストールできます。 (Amazon Machine Images)任意のアプリケーションサーバーで使用し、アプリケーションサーバーが言語をサポートするかどうかに応じて任意の言語を使用しますが、そのようなことを行うと、スケーラビリティの概念を技術的に理解する必要があります。 DBサービス、ストレージなどの棚。RubyとHeroku(別のクラウドアプリケーションプラットフォーム)について聞いたことがあります。

個人的に私はそのようなことのためにJava/Groovyを好みます。なぜなら、利用可能な膨大なライブラリとツールがあるからです。

4
Kalyan

これは常に魅力的です。私はクラウド開発者ではありませんが、私の研究に基づいて、私たちの多くが何十年にもわたって行ってきたことと大きな違いはありません。サーバーはプラットフォーム固有です。クラウドサーバープロバイダーが誰であるかに基づいて、サーバーのプラットフォームに依存しないコードを作成したい場合は、それは問題ありませんが、不要です。私がこれまで見てきた最大の違いは、フロントエンドクライアントが処理するための多数のサービスを提供するという概念であると思います。フロントエンドは、主にWebまたはWebアプリの開発を想定しています。ほとんどのブラウザはLAMP対Microsoftスタックを十分に処理できるため、今月のフレーバーが何であれ、あなたはまだ戻っています。高度に分散されたネットワーク環境で20年前に行ったことと実際に見た唯一の違いは、高レベルのプロトコル(HTTPとTCP/UDP)です。たぶん私は間違っており、教育を歓迎するでしょうが、それでも私はこれを長い間やっていますが、Java、C#、Python、Rubyなどの言語は著しくそれらのバーが下げられているため、混合バッグであるプログラムがより簡単であり、最適化されたコードを書くことに慣れていません。私にとって、PAASとSAASは​​新しいテクノロジーの鍵の一部のように思えますが、20年にわたってこの機能の一部をオンとオフに切り替えています。

4
Greg B

あなたの質問は、あなたが実際にやろうとしていることについて、少し曖昧です。 「クラウドコンピューティング」は、ほとんど何でも意味します。特定のクラウドコンピューティングの利点を持つ言語を探している場合、Javaはオペレーティングシステムに依存しないバイトコードにコンパイルされるコンパイル済み言語であるため、いくつかあります。

また、C++が低レベル言語であることについて、他の人たちと話し合いました。はい、そうです。ただし、常にC++言語以上のものを使用することになります。 JavaとC++をそれらに付属するクラスから分離する場合、JavaとC++は非常に似ています。 "ポインターのような厳格な基準を採用する必要があります。 =下位レベル、ガベージコレクション=上位」を使用して区別します(そしてもちろん、C++でポインタをスマートで非表示にし、必要に応じてC++でもガベージコレクションを使用できます)。

3
David Schwartz

明らかに、「より良い」言語、または学ぶ価値のある言語はまったくありません。どの言語を使用するかは、あなたが好きなものであり、サーバーがサポートしているものの問題です。どのサーバーでもサポートされない言語や、近い将来に死にかけていると言われている言語を学ぶべきではありません。一方、将来的にはさらに優れた言語が存在し、それらがより有用になることも明らかです。だから、早くて便利で、あなたが好きで、どこで学ぶのがそれほど大きな努力ではないかを学びましょう。なぜなら、あなたは3年以内に変わる可能性が高いからです。

私は個人的には「オープンソース」(プロプライエタリではない)を検討しています。なぜなら、ウェブはすべての人に開かれており、オープンソースは誰でもサポートされる可能性が高いからです。 (PHP)を意味します)

2
MrRap