作者丨Peter Wayner
翻译丨Vincent
从事主流开发语言的人员有很多,但是除了这些语言,我们也应该了解一些其他的,这样,我们才能根据场景的不同决定采用哪一种。本文中作者为我们列举了9种语言的应用场景。
目前比较流行的开发语言之所以能够被大多数开发人员使用,是因为它们各自有各自的优势。但是除了C#、Java或者Java这些语言外,还有些其它的高级语言在某些时候也会提供很高的价值。下面的9种语言应该出现在每一位程序员的候选清单中。它们可能不是所有场景下的最佳选择,因为它们都是有专用于某一种情况下的。但它们都提供了值得研究和学习的有利方面。可能有一天,其中一种语言被证明是你的项目或老板所需要的。
Java是一门伟大的语言,支持各种主流的平台。但是它现在有点过时了,而且痛点正在被放大。Kotlin的意思是快速的编译,它与Java并存,解决了Java开发者耗时长的问题。Kotkin的特性中需要重点关注的就是它对空值的处理,这个问题每个开发者都会遇到。Kotkin在这一方面取得了巨大的进步,它还可以和现有的Java代码一起使用,而且还可以将代码编译成Java和本地代码。
Erlang的秘密武器就是功能范式。大多数代码都被迫在自己的小世界中运行,这样这些代码就不会对系统其他部分产生影响。这些函数在内部完成所有的工作,在类似于沙箱一样的的小“进程”中进行运行,并且只通过邮件消息相互通信。该模型还简化了运行时代码需要哪些代码确定可以同时运行的过程。这样做就使得并发性非常容易检测,所以运行时进程的开销也会非常小。
如果你正在构建一个实时系统,该系统没有空间给那些已经删掉的数据,比如移动电话交换机的计费系统,那么可以考虑一下Erlang。
谷歌在调查开发语言的过程中,发现这些语言杂乱无章、复杂,而且往往很慢。2009年,谷歌发布了它的解决方案:一种看起来像C语言的静态类型的语言,但它的后台更智能,可以让程序员不必指定类型和处理malloc调用。谷歌使用了和Sun以及苹果公司完全不一样的策略,他们希望Go语言的代码能够“简单到可以一直保存在程序员的脑海中”。
如果你是一家想要吸引谷歌眼球的创业公司,你需要建立一些服务器端业务逻辑,那么Go就是一个很好的起点。
有些程序员不希望指定变量的类型,动态语言可以做到。其他人则喜欢定义变量是否整数、字符串或对象。对他们来说,许多编译语言提供了他们想要的所有支持。还有一些人梦想着精心设计的层次结构,甚至可以说是创造出“代数”的类型。他们设想了各种不同类型的列表和表,它们被组合在一起,以表达复杂的、多层次的数据。它们谈到了多态性、模式匹配原语和数据封装。这仅仅是一个复杂的、高度结构化的世界的开始,他们想要的是类型、元类型和元数据类型。
Type是目前比较受欢迎的开发语言,因为它要求所有的变量都必须定义一个类型,这种做法会让Java程序员感到更加的安全。Type现在之所以这么受欢迎,最重要的原因就是因为Angular,而且Type支持和遗留的Java进行整合。还有一个原因是因为Type是Java的父集。强类型有很多优势,比如可以在早期捕获一些bug,而且可以提高编译的速度。对他们来说,这是OCaml,这是编程语言社区的一项严肃的努力,推广了上面提到的许多想法。有对象支持、自动内存管理和设备可移植性。甚至还有来自苹果应用商店的OCaml应用。
Rust就像是翻新过的C语言版本,但是它有大量的多态类型。Rust发展很快,在Stack Overflow的语言流行排行榜上,以前大概50名左右,今年则跃升至18名。原因就是因为它解决了很多C语言拥有的问题。系统程序员不喜欢依赖垃圾回收机制,他们喜欢自己掌握内存的数量,Rust就会让你有这种感觉。
如果你非常喜欢功能范式,又需要将项目变为面向对象层次结构,而且代码还得简单,你可能会有多个选择。但是如果你有Java的基础,Scala就可以帮助你了。Scala也是基于JVM运行的,与Java相比,它的代码显得更为整洁。Scala的类型机制是强静态的,编译器为了推断类型会做很多工作。在Scala中原始类型和对象类型之间没有区别,因为Scala希望所有的东西都可以从一个ur-object中调用。
Scala提供了函数式语言的许多特性,比如延迟评估、尾递归和不可变变量,但是为了在JVM上面运行,它已经做过修改了。基本的元类型或集合变量,如链表或哈希表,可以是可变的,也可以是不可变的。
如果你必须在数千个处理器集群中处理数据,而且还面临着遗留的Java代码问题,那么Scala是一个很好的解决方案。
20多年来,致力于函数式编程的学者们一直在积极地发展Haskell。它是理想的函数式编程一种更纯粹的表达方式,它有一套很健全的体制去处理输入/输出通道。此外,Haskell的社区也非常活跃。如果你认为你的数据结构会很复杂,而且有很多类型,Haskell将会帮助你的。
软件行业喜欢用Python开发的人非常多,然而,无论Python的优点有多明显,它一直都存在一个让人特别恼火的问题,就是速度问题。Julia的出现就是为了解决这个问题。它引入了Python开发者所崇尚的clean语法,使得代码可以在后台进行编译。它还提供了一个强大的类型推理引擎,可以让代码运行的更快。与Python相比,它的速度明显快很多。如果你的数据量比较大,但是喜欢Python的语法,那么Julia可以是你的下一个学习的语言。