云计算编程有多种形式。对于后端开发人员来说,这可能意味着开发一个云原生应用程序,或者持续交付一组相互连接的微服务。对于管理员来说,这可能意味着开发一个自动供应基于云的资源的脚本。对于web开发者来说,这可能意味着开发一个使用云托管资源的Angular或React应用程序。
要根据您的需求选择最佳的云编程语言,请仔细考虑以下选择标准。然后,探索一些流行的编程语言及其用例的细节。
语言的选择标准
组织在选择云编程语言时应该考虑以下四个因素:
1. 云客户端和服务
2. 目标云叠加层
3. 熟悉度
4. 风险厌恶
1.云客户端和服务
确定哪种编程语言适合您的第一步是询问您将创建哪种类型的客户端,以及您将访问哪种类型的基于云的服务。
例如,需要 IBM Watson 机器学习 (ML) 功能的虚拟现实 (VR) 耳机与从阿里巴巴的对象存储服务中提取图像的简单 iOS 应用程序具有不同的语言要求。
2.目标云叠加层
另一个需要考虑的问题是,您是否需要一种通用的、能很好地完成各种工作的编程语言,还是一种针对特定技术的编程语言。
例如,Node.js 和 .NET 是通用平台,使开发人员能够配置 IaaS、开发云原生微服务并访问 AWS、Microsoft Azure 或 Google Cloud 服务。但是您不能使用这些语言来增强运行大多数云基础设施的 Linux 内核。您也不能使用 Node.js 或 .NET 来扩展 Docker 或 Kubernetes 运行时。对于云堆栈的这些层,只有 C 和 Go 是有效的选项。
3.熟悉度
IT 和开发团队不必总是离开他们的舒适区。有时,最好利用您对给定平台或框架的现有知识。例如,如果您已经具备强大的 Java 或 .NET 技能,那么这是选择 Java 或 .NET 的一个令人信服的理由。
此外,要避免对某些编程语言的炒作。例如,许多开发人员吹捧Python是数据科学和AI的首选语言,但它不是必需的。每个云管理的AI和ML服务,如谷歌Cloud AutoML和Oracle Cloud Infrastructure Forecasting,都提供了对多种语言的支持。
“Java、Python、Javascript 和 .NET 都已经发展到支持一个通用的、广泛的标准,”IT 培训提供商 Web Age Solutions 的 AWS 授权讲师 Michael Forrester 说,他专门研究 DevOps 和 ML。 “如果您从 Java 开始,请坚持下去。如果您从 Python 开始,请坚持下去。”
没有必要仅仅为了在云中使用AI和ML而把Python教授给一个成熟的Java开发团队。发挥你的才能。
4.风险厌恶
最后,组织必须确定其对风险的舒适度。例如,Rust 是一种编程语言,开发人员几乎可以在云堆栈的每一层使用它。但是,Rust for Linux 项目尚未将任何代码集成到官方内核构建中,主要云供应商的软件开发工具包 (SDK) 支持并不普遍。如果企业想要规避风险,选择更成熟的语言是更好的选择。
云编程语言的特性和用例
在选择云计算编程语言时,组织通常会评估以下11个选项。
1、Javascript
对于需要访问大量云服务(如Azure Blob Storage或通过Amazon Cognito进行安全认证)的基于http的客户端开发,客户端Javascript是最佳选择。
在许多情况下,Javascript的发展已经消除了实现复杂的RESTful中间件层的需要,在该层中,运行在应用服务器上的粘合代码为客户机层提供了对后端资源的访问。Javascript可以直接与托管云服务交互。
对于许多组织来说,客户端 Javascript 可能是他们唯一需要的语言。由于每个浏览器都支持它,因此开发人员可以在任何笔记本电脑、手机、平板电脑、智能电视或台式电脑上渲染用 Javascript 编写的应用程序。丰富的 Web 开发框架,例如 ReactJS 和 AngularJS,简化了与基于云的资源异步交互的响应式 Web 应用程序的开发。
但是,Javascript 确实有其局限性,例如安全性。 Web 浏览器的基本用户名和密码身份验证机制不像安全外壳 (SSH) 连接所需的加密密钥握手那样可信和安全。
大多数组织都需要访问密钥或 SSH 连接来以编程方式配置基于云的基础架构。客户端 Javascript 非常适合使用基于云的资源。对于自动化和资源配置,需要服务器端语言。
2、Node.js
如果开发人员普遍使用Javascript在客户端编写基于浏览器的代码,那么他们为什么不也使用Javascript编写服务器托管的代码呢?这就是Node.js项目在2009年将Chrome浏览器的V8 Javascript引擎移植到服务器上时决定解决的难题。Node.js和Node包管理器(npm)将Javascript变成了一种可行的云编程语言。
Node.js是微服务开发和部署的理想选择,因为npm提供了一个简单的机制来添加RESTful API支持、数据层资源的连接器和实用程序库,从而简化了通常执行的任务和函数。
js使得组织可以将客户端和服务器端云任务统一在一个保护伞下。另外,Node.js及其对Javascript的支持对于那些想要一种可以跨多个用例工作的单一语言的组织来说是一个很好的选择。
然而,运行在VM上的代码,如Chrome V8引擎,永远不会像Go、Rust或c这样接近金属的语言那样执行得好。在每兆内存都计算的情况下,你可能会发现Node.js应用程序缺乏所需的运行时优化。
3、Python
Python在开发人员中很受欢迎,因为它支持命令式编程。这种方法也称为函数式编程,使开发人员能够编写执行复杂逻辑的简单、简洁的函数。这些函数式方法还可以与外部系统交互,而不需要像面向对象的编程语言(如Java)那样使用繁文缛节和冗长的代码。
使用 Python,开发人员可以快速编写脚本,使用供应商 SDK 配置基础设施。主要的云供应商提供 Python 的 SDK;当云平台发布新功能时,Python SDK 会优先更新。
Python也是数据科学家和AI开发团队最喜欢的语言。对于使用AWS AI服务或谷歌的ML工具的组织来说,使用基于python的sdk与基于云的服务交互是有意义的。
然而,像R或Julia这样的语言可能更适合想要“深入数据科学的杂草”的开发人员。云提供商并没有普遍为R和Julia提供SDK支持。
4、C
C 是快速和高效的。它直接与 CPU 内核接口,无需像 Java 那样通过抽象层语言。操作系统、硬件驱动程序、管理程序、挖掘比特币的 GPU、负载平衡器和虚拟化工具最常使用 C 和 C++ 编写。当优化和效率是重中之重时,C 是首选。
所有主要的云供应商都提供了对C的完整SDK支持,尽管C在云世界中的作用远远超出了调用IaaS和PaaS api的能力。开发人员主要使用C语言编写支持云的幕后软件。如果您想为云开发软件,开发人员需要了解C语言。
5、Go
Go的语法类似于C,和C一样,它也允许开发人员将其编译成无抽象的二进制文件,直接与服务器的CPU或GPU通信。但是Go,也被称为GoLang,包含了C语言中没有的其他特性,比如自动垃圾收集和内存保护。
它也是用于创建 Terraform 的语言。 Red Hat 与 AngularJS 一起使用它来构建其 OpenShift 容器平台。任何希望为 Terraform 等开源项目做出贡献、扩展 OpenShift 容器平台或在源代码级别自定义其 Docker 和 Kubernetes 实现的开发人员都需要了解 Go。
但Go并不仅仅适用于开源项目。
所有主要的云供应商都提供了一个Go SDK来与他们的IaaS api交互,因此您可以使用Go来提供基础设施和自动化基于云的管理任务。此外,开发人员可以使用Javascript转换工具在Go中创建基于浏览器的应用程序。
6、Java
Java长期以来一直处于开发人员列表的顶端,因为它是跨平台和面向对象的。它是一种可靠且实用的语言,可用于创建云原生微服务。Java框架,如Spring Boot和Eclipse MicroProfile,已经标准化和简化了云原生应用的开发。
Java已经被积极地开发了很长时间,因此每种服务器端技术都存在连接器和驱动程序,比如遗留数据库、邮件服务器、文档存储或文件系统驱动程序。这使得Java成为创建可以将企业架构的不同部分粘合在一起的应用程序的理想选择。
许多组织的员工中已经有大量有才华的Java开发人员。有了各大云供应商提供的Java sdk,如果您想在自动化脚本或连续交付管道中使用谷歌cloud或AWS api,就不需要让您的员工学习一门新语言。
7、.NET
20 多年来,Microsoft 的 .NET 平台一直在与 Java 平台进行稳定的竞争。在云方面,.NET 框架与 Java 平台的作用相同,主要区别在于目标用户是 Microsoft 开发人员。由于 .NET 是微软自己的开发平台,因此微软有超过 100 种云服务原生支持 .NET。
与 Java 一样,.NET 是一个经过充分验证的中间层框架,具有连接到每种类型的后端资源的连接器。这使其成为开发将组织基础架构的各个部分粘合在一起的微服务和 RESTful API 的绝佳选择。与 Java 平台支持多种替代语言(包括 Kotlin、Scala 和 Groovy)一样,.NET 框架也支持多种语言,包括 C#、VB.NET、C++ 和 F#。
其他值得注意的语言
PHP、Ruby和Perl在web应用程序的服务器端开发中仍然很受欢迎,但在微服务的开发或基于云的资源的供应方面,它们不如Java或Python那么常用。
任何主流云供应商的官方SDK都不支持Perl,只有AWS为Ruby和PHP提供官方SDK支持。Azure上没有官方的Perl、Ruby或PHP SDK。
IaaS 供应商提供用于集成的 .NET SDK。对于已经使用 .NET 的组织,在云中继续使用 .NET 是有意义的。
8、Kotlin
大多数手持设备都运行安卓系统。对于那些对集成基于云的资源的Android应用程序开发感兴趣的开发人员来说,Kotlin是一个不错的选择。
没有一个主要的云供应商专门为Kotlin创建SDK。但是,它运行在Java虚拟机上,可以访问任何Java SDK API。使用Kotlin创建Android应用程序的组织可以使用相同的开发技能以编程方式管理基于云的资源。
9、Swift
对于 Apple 产品,Swift 之于 iOS 就像 Kotlin 之于 Android。并非所有供应商都提供 Swift SDK。 IBM Watson 为 iOS 开发人员提供了 Swift SDK,AWS 于 2021 年 8 月发布了 Swift SDK 的 alpha 版本。
对于那些没有Swift SDK的平台,开发者可以调用RESTful api来访问基于云的资源,或者在支持的SDK中编写自己的代码,比如Python或Node,然后让他们的Swift应用程序直接调用这些例程。
10、Unity
Unity是最适合开发VR应用程序,使用ML和视觉识别技术,使元宇宙的游戏玩法逼真。作为一个平台,Unity支持多种语言,包括c#, UnityScript和Boo。
IBM 是唯一一家拥有专门用于 Watson 的 Unity 平台的 SDK 的云供应商,尽管您可以期待更多的合作伙伴关系,将 VR、AI、ML 和云的计算处理能力连接到一个单一的产品中。
11、Rust
自从OS项目开始以来,C就一直是Linux的核心编程语言,内核开发社区的许多人认为是时候采用一些新语言了:Rust。
Rust是一种接近金属的编程语言,它的性能和效率可以与c相媲美。特殊的语言结构可以减少与内存管理相关的bug的发生,如果我们的目标是安全地增强运行云的操作系统,这是一个很大的优点。
亚马逊、微软、Dropbox和Discord都曾试用过Rust。谷歌移植了《Rust》的Android版本,亚马逊在2021年12月发布了AWS Rust SDK预览。其他供应商还没有跟上,但是在供应商的不足之处,开源项目已经填补了空白。虽然它可能不是具有其他语言专业知识的成熟组织的最佳选择,但是对Rust的热情继续增长。
来源:techtarget
作者:Darcy DeClute