【IT168 编译】在上文《企业和程序员如何选择合适的编程语言?》中,笔者解析了选择一种编程语言会付出哪些成本,以及依据哪些标准来选择编程语言。本文中,笔者将结合多种使用情境,解析这种情境下哪个语言才是非常好的的编程语言。
Java
提起Java,C#程序员就有些坐不住了,网上有很多评论称:“C#比Java更优秀,CLI也比JVM更灵活。”但其实,Java在程序员和企业之间的人气非常高,TIOBE就是一个很好的证明。Java在企业间的高人气同时也带动了Java在高校中的学习和传授。
对企业来说,平台的改变并不止意味着代码库的改变,而是要寻找到一套技术、业务、法规等等的解决方案。所以,相较于其他编程语言,Java拥有更多的库和产品,甚至有企业会根据自己的业务需求来定制开发Java平台。
Kotlin
如果你想要寻找一种Java的替代语言,那么一定非Kotlin莫属。Kotlin编程语言旨在要比Java更安全、有效率、易于使用,与Java完全兼容。Kotlin由著名的软件公司JetBrains,前几日谷歌宣布Kotlin成为Android开发的第一语言,随后,Kotlin就强势挺进TIOBE编程语言的前50。
C++
虽然LinuxLinus Torvalds曾炮轰C++一无是处,但是在大多数程序员看来,C++的诞生是对C的一次成功改进。如果你的企业在考虑选择一种性能良好且与硬件相接近的语言,那么C++就是一个不错的选择。
与Java类似的语言相比,C++的优势在于历史悠久,其代码更全、性能较好。C++的众多程序员致力于优化编译器,不只使用编译器来编写代码,同时还开发新的技术来改进编译器。
当然,C++也有很多历史遗留的缺点,例如很多功能并不能使用C++标准方法。
理论学术界适用的编程语言
理论学习界应用编程语言最好的一个例子就是人工智能。Python对于人工智能多个领域的支持大受欢迎,例如机器学习库—scikit-learn和 TensorFlow,自然语言处理—NLTK。除此之外,Python还支持科学计算—SciPy,以及数学需求—NumPy。
当然Python也有很多不足之处,作为一种解释型语言虽然Python的语言性能还可以,但是与C++相比还有差距。还有一个问题是目前Python还没有一个标准简单的部署方法,这也意味着它的复杂性特别高。另外,2008年发布的第3版的迁移问题还没解决,第3版本与前一版本的不兼容,导致内存中迁移时间很长。
Julia
Julia是一种用于满足高性能科学计算需求的编程语言,当然它也可以用于普通的网页开发。如果是短时间内使用,它更像是一个性能更高的Python,但实际上它还具有其它技术优势,如对并发和并行的良好支持,直接调用C、Fortran、Python代码的能力。由于社区的优势,Julia通常是和Python一起使用。
其它语言
除了上述语言,还有一些小众的编程语言被应用于学术或行业的某部分。
R语言是一种广泛用于统计和数据分析的编程语言,针对这一领域,R语言有很多有用功能,如文档格式。另外,其库在数据分析专业领域的可用性很高。
MATLAB既是语言也是计算环境,这也意味着它可以容易的被非程序员使用。它被广泛应用于工业和学术界的技术计算。MATLAB有一个著名的竞争对手是 Wolfram Mathematica,一个计算知识引擎。
R和MATLAB都属于技术性的编程语言,大多数情况下都不是被程序员所使用,而是被科学家和行业专家用于研究开发。
并发可靠的软件
与并发相关的所有问题会影响到所有软件,例如对共享资源的协调访问就是一个会影响所有软件的问题。大多数编程语言都足够解决大部分的问题,所以很多人开始着力对网站开发和数据库访问做工作。当你真正的对并发性有强烈要求时,功能性编程语言会是好的选择。
Erlang
Erlang创始人Robert Virding曾表示:“Any sufficiently complicated concurrent program in another language contains an ad hoc informally-specified bug-ridden slow implementation of half of Erlang.”
当你的应用程序有如下要求时:分布式、容错、可靠和并发,那么就可以选择Erlang。Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。
Erlang的优势在于它的这个生态系统都以上面的目标来开发的,例如它在组织的流程和监督上有很多有趣的小心机。Erlang不仅是编程语言,也是一个runtime系统,其中包含了一些即用型的组件,如分布式数据库。对于代码质量和程序执行也有相应的工具来监测。
总而言之,Erlang是一个经过测试的语言和平台,用于创建可靠和并发的应用程序。
Elixir
Erlang是专为企业设计的,它在技术上可能比较完善,但是它在效果上就没有那么明显。所以,为了解决这个问题,JoséValim创造了Elixir,一种建立在Erlang平台之上的语言。Elixir增加了对可扩展性的支持。习惯于Ruby或Python的程序员可以将Elixir视为Erlang。
Elixir现在越来越受欢迎,被Pinterest和Moz等公司使用,但是用户群体还不是特别大。
Go
Google是一家急需开发并发应用程序的公司,所以它开发Go语言也就不足为奇了。Go最开始是程序员对C++和Java语言改进的实验,发展到现在,Go语言已经不只是一种演变,它是程序员对语言的重新想象,还带来了一些额外的好处。
Go语言可以扩展到大型系统、没有IDE也可正常使用,在网络和并发性也极具生产力。除了一些成熟的设计之外,Go还有一些特色的并发功能,如大名鼎鼎的 goroutines。
几乎所有的程序员都不喜欢C++的复杂性,所以这也成为了Go招降C或类C程序员的一大法宝。
系统软件
C++因其支持大型应用程序的特点,如面向对象编程,被广泛应用于系统编程。
Rust
Rust是Mozilla开发的注重安全、性能和并发性的编程语言。创建这个新语言的目的是为了解决一个顽疾:软件的演进速度大大低于硬件的演进,软件在语言级别上无法真正利用多核计算带来的性能提升。根据StackOverlow对开发人员的调查,Rust是颇受欢迎的编程语言。
Rust对于并发、内存安全和大规模应用程序有极大的支持。例如,不能有空指针,否则可能引起C或C ++中内存相关的错误,它的类和性能与C ++相似。但它的受欢迎程度和应用还无法与C和C++比肩,目前比较重要的软件用户可能就是Tor。
游戏开发
游戏开发看起来是和系统编程是正交事件,建立游戏引擎软件对于简化游戏开发有极大的好处。游戏开发有一个强需求那就是生产力,这对其它行业来说可能是基本需求,但是对游戏行业来说就是催命符。这就注定了游戏开发是一个严重依赖于特定库、游戏引擎、SDK和工具的行业。
C++
游戏行业使用最广泛的语言就是C++,因为它是生产力和性能的结合体,同时也是资深程序员分布最多的编程语言,C++制作的最典型示例就是DirectX技术和虚幻引擎。
C#
如果你不要求非常好的性能,或者说你对开发和跨平台的支持更在意,那么C#就是一个很好的选择。最初,微软创建了XNA,使得游戏开发在Windows和Xbox上更易于访问,但后来被跨平台MonoGame所取代。现在C#是游戏引擎Unity使用的首选语言。
通过上面基于应用场景的非常好的编程语言解析,相信大家对于非常好的编程语言有了更深的了解。如果,大家对于在应用场景下编程语言的应用有更多的看法,欢迎在下方留言评论。之后,笔者会在下一篇文章中为大家做更多应用场景的编程语言的解析。