2010-09-18 108 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