2010-09-18 107 views
27

既然新的雲計算時代即將到來,而且我將學習編程,我不知道雲支持哪種編程語言。雲計算的哪種編程語言?

我想支持的Java,ASP.NET,PHP,Python和Ruby,Perl的等,而不是低端的語言,如C,C++等......還是我錯了?如果那樣的話軟件公司將不得不重新開發他們的軟件。這是你可以開始一個項目的時候,你沒有大型軟件公司作爲競爭對手?

我想知道我應該專注於學習的語言,這樣我就可以開發用於雲計算。

回答

32

「雲計算」更像是一種操作系統級概念,而不是語言概念。

比方說,你希望主辦Amazon's EC2 cloud computing service的應用程序 - 可以開發它在任何你喜歡的語言,通過EC2支持(Linux操作系統,Solaris和Windows的幾種口味)在任何操作系統上,然後安裝並運行它在一臺或多臺虛擬機上「在雲中」,就像在專用物理服務器上做的一樣。

+0

好吧,一直都在想什麼雲只使用「語言爲網絡」。所以我錯了:) – Anomym 2010-09-18 07:20:56

+1

「」雲計算「更多的是操作系統級的概念,而不是語言概念。」 在恕我直言,不正確。 「雲」一般來說是一個糟糕的術語,但讓你有支持C#,VB.NET,Java,Python和Apex的Microsoft Azure,Google AppEngine和SalesForce AppForce等雲服務。就我個人而言,如果您是Windows傾向者或Java,我會選擇C#。這完全取決於您針對託管代碼的目標平臺或針對您的終端設備的目標。 – CosmosKey 2011-08-16 15:05:55

+2

@Jim Lewis:不一定正確。你在談論IAAS(基礎設施即服務)。 IAAS不是唯一的雲。 PAAS(平臺即服務)語言絕對重要。例如,您需要Java for Elastic Beanstalk,C#(或其他.NET語言)的Azure和Ruby for Engine Yard。有時PAAS提供商支持多種語言,但通常有一種主要的語言/框架/平臺。 – stepanian 2012-03-19 08:18:49

9

你提到的Java,PHP,Python和Ruby,Perl的語言的肯定是更獨立的平臺比C/C++(和ASP.NET)。

許多平臺特定的差異也來自於特定平臺的庫可用。但是在實踐中,我認爲你總是會在相同的或至少非常類似的平臺(操作系統風格)上開發代碼運行的系統,也就是說雲不會採用源代碼並編譯它爲你之前運行它。

個人而言,我會去爲Java或Python(可能也紅寶石),因爲它們具有可用於各種任務的庫的廣大和獨立很平臺。

3

你的問題有點模糊,關於你在做什麼。 「雲計算」幾乎意味着任何事情。如果您正在尋找具有特定雲計算優勢的語言,則Java有幾個優勢,因爲它是一種編譯語言,可編譯爲獨立於操作系統的字節碼。

我也和其他人討論C++是低級語言。是的。但是你總是會有更多的不僅僅是C++語言。如果您將Java和C++從它們隨附的類中分離出來,則Java和C++非常相似。你必須採用一些嚴格的標準,比如「指針=低級,垃圾收集=高級」來區分這個區別。 (當然,你可以讓智能指針和無形的在C++中,你可以用垃圾收集在C++太多,如果你想。)

4

取決於其「雲」,你會想使用。如果它是Google App Engine,則可以使用Java或Python。 Groovy也支持運行在jvm上的Google App Engine。如果您打算使用Amazon,幾乎可以在任何應用程序服務器上安裝任何操作系統(Amazon Machine Images)並使用任何語言,具體取決於應用程序服務器對該語言的支持。但是做這樣的事情意味着對可伸縮性概念有很多技術性的理解。一些服務可能會像DB服務,存儲等一樣被提供。我聽說過ruby和Heroku(另一個雲應用程序平臺)。但是沒有經驗。

個人而言,我更喜歡的Java/Groovy的,因爲可用的廣闊庫和工具的這樣的事情。

2

顯然沒有「更好」 - 或更值得學習 - 語言。你使用哪種語言只是你喜歡什麼和你的服務器支持的問題。你不應該學習任何服務器都不支持的語言,或者說它在不久的將來會死去。另一方面,很明顯,將來會有更好的語言,而且這些語言會更有用。因此,學習一個快速,方便,你喜歡的學習方法並不是太大的努力,因爲如你所說,你可能在不到3年的時間內改變。

我個人會考慮一個「開放源代碼」(非專有),因爲網絡對每個人都開放,開放源碼更有可能得到每個人的支持。 (這意味着PHP在這種情況下)

4

這總是令人着迷。我不是雲開發人員,但基於我的研究,沒有什麼比我們許多人幾十年來一直在做的事情有很大不同。該服務器是平臺特定的。如果你想爲你的服務器編寫平臺不可知的代碼,那很好,但根據你的雲服務器提供者是誰是不必要的。我認爲迄今爲止我看到的最大差異是爲前端客戶端提供大量服務來處理這個概念。前端,我假設主要是網絡或Web應用程序開發。由於大多數瀏覽器都可以很好地處理LAMP和Microsoft堆棧,所以您仍然可以回到本月的任何風格。我從20年前在高度分佈式網絡環境中所做的事情看到的唯一差別是更高級別的協議(HTTP與TCP/UDP)。也許我錯了,並且會歡迎教育,但是我一直這麼做很長時間,但仍然沒有看到任何我認爲具有革命性或顯着差異的東西,儘管像Java,C#,Python,Ruby等語言是顯着的更簡單的編程方式是混合包裝,因爲對於那些不熟悉編寫優化代碼的人來說,它們是降低的。 PAAS和SAAS對我來說似乎是新技術中的一些關鍵,但一直在做這些關閉和20年:)

9

這是一個非常有趣的問題。

在Lang.Next會議有一個very interesting discussion about this topic, in which authors of several programming languages participate (Scala, Dart, C#).有沒有在最後一個明確的共識,但是從我的觀點有一個消息:

對於這種「雲時代」應該是理想的語言面向對象(因爲這就是我們如何理解並能夠對世界進行建模),也包含了函數式編程。

「雲時代」中的代碼幾乎總是分佈式的:運行在多個核心/機器上(在雲中心)或者僅僅是客戶端/服務器分離。它也是異步的。在等待WS響應時,我們不會阻止代碼。回調隨時出現。

當使用標準的命令式編程語言時,處理異步和分佈確實很複雜。您必須始終關注「當前狀態」,並在回調進入時,您必須根據此狀態決定要做什麼。

功能編程有助於消除「狀態」,更適合這種新的情況。

所以我會說:在雲計算中,代碼是分佈式的,無狀態的,異步的。函數式編程可以幫助你。面向對象幾乎是一個必須能夠模擬世界。

我寫了一個blog post about it,如果你有興趣。我喜歡C#,但實際上我會說斯卡拉,Clojure,F#可能更適合。

另一方面,C++將永遠存在,並且最近正在進行現代化並獲得更多關注。

9

至於什麼編程語言,可能會使用任何基於瀏覽器或基於服務器的語言。 Javascript,PHP,ASP,AJAX,Perl,Java,SQL。

假設你需要實現一種新的編程語言和專門爲在雲中操作而設計的BCL(它不會在客戶機上使用)。它應該針對雲計算進行優化;易學,快速,高效,功能強大,現代化。

我看到雲託管產品幫助開發人員的最大方式是能夠啓動並增加服務器的大小,而不會有任何延遲。開發人員能夠在完全自定義的環境中創建應用程序,然後將其擴展到生產機器中,而且很麻煩。如果事情沒有按照想要的那樣工作,他們可以相對容易地摧毀那臺機器。

大部分使用JAVA和C-Sharp的Cloud Computing Providers來製作雲服務器。

+9

那麼,AJAX不是一種語言...... – 2012-11-22 08:04:46