如果我们把现代人类文明比作一辆汽车,那么软件开发行业就像是汽车的发动机,而编程语言就像是发动机的燃料。那么问题来了,你应该学习哪种编程语言?学习一门新的编程语言可能是一项巨大的时间、精力和脑力的投入,但它可以提高你的软件开发技能,并为你的职业生涯带来好处。为了改进,正如我在另一篇博客中所写:博客网址:https://medium.com/@md.kamaruzzaman/5-reasons-to-learn-a-new-programming-language-in-2020-bfc9a4b9a763一般来说,你应该选择一种对你的职业生涯有帮助的编程语言。此外,您还可以学习一种正在流行的语言。我非常尊重主流编程语言。但在这里,我列出了可以提高您的生产力并使您成为更好的开发人员的现代编程语言。此外,我将涵盖更广泛的领域:系统编程、应用程序开发、网络开发、科学计算。“现代编程语言”一词含糊不清。Python、JavaScript等语言被许多人认为是现代编程语言。但与此同时,他们认为Java是一种古老的编程语言。其实它们都是同时出现的:1995年。大多数主流编程语言都是上个世纪发展起来的,主要是1970年代(如C)、1980年代(如C++)、1990年代(如Java、Python、JavaScript).这些语言并不是为了利用现代软件开发生态系统而设计的。尽管这些语言中的许多都有改进的特性,例如并发性和自调整,但它们还提供向后兼容性,并且不能丢弃旧的、过时的特性。在这一点上,Python很好地划分了Python2和Python3。这些语言通常会提供10种方法来做同一件事,而不管开发者使用起来是否方便。根据StackOverflow开发者调查,大多数主流老牌编程语言占据“可怕语言”类别的头把交椅:我将使用第一款iPhone发布的时间,即2007年6月29日,作为新的和旧编程语言之间的边界时间点。iPhone发布后,一切都变了。在此列表中,我主要考虑2007年后的编程语言。首先,开发现代编程语言是为了充分利用现代计算机硬件(多核CPU、GPU、TPU)、移动设备、大数据集、快速网络、容器和云。此外,大多数现代编程语言更易于使用,主要是通过:干净的代码内置并发支持空指针安全类型推断更简单的功能集低认知负荷混合所有编程范式的良好功能二、清单许多编程语言具有颠覆性,并将永远改变软件行业。其中一些已经成为主流编程语言,而另一些则等待突破。学习这些语言至少作为第二编程语言是明智的。在之前的一篇博文《2020年软件发展趋势的20个预测》中,我预测了2020年现代编程语言的诸多突破:文章网址:https://towardsdatascience.com/20-predictions-about-software-development-trends-in-2020-afb8b110d9a0Rust系统编程语言以C、C++等为主导,虽然它们允许对程序和硬件进行完全控制,但缺乏内存安全性。尽管它们支持并发,但如果不能保证并发安全,用C/C++编写并发程序可能会很有挑战性。其他流行的编程语言是可解释的语言,如Java、Python、Haskell,它们提供安全性但需要大量运行时或虚拟机。像Java这样的语言,由于运行时间大,不适合系统编程。已经有很多尝试将C/C++的特性与Haskell和Java的安全性相结合,但到目前为止,Rust似乎是第一个实现这一目标的生产级编程语言。GraydonHoare最初开发Rust作为衍生产品。他受到研究编程语言Cyclone的启发。Rust是开源的,Mozilla与许多其他公司和社区一起参与语言开发。Rust于2015年首次发布,并迅速引起了各界的关注。在之前的一篇文章中,我深入研究了Rust并论证了为什么使用Rust而不是C++,Java在大数据领域是更好的选择:文章URL:https://towardsdatascience.com/back-to-the-metal-top-3-programming-language-to-develop-big-data-frameworks-in-2019-69a44a36a842主要特点:通过所有权和借用的概念提供内存安全和并发安全。内存安全和并发安全的编译时保证如果程序代码编译,它既是内存安全的又没有数据竞争。这是Rust最吸引人的特性。它还提供ML、Haskell表示。Rust具有不可变数据结构和函数式编程特性,提供函数并发和数据并发。Rust非常快。由于没有运行时,Rust提供了对现代硬件(TPU、GPU、多核CPU)的完全控制。Rust有LLVM支持。人气:自2015年首次亮相以来,Rust一直受到开发者的喜爱,并在StackOverflow开发者调查中连续四年(2016年、2017年、2018年、2019年)被评为最受欢迎的语言:根据GitHubOctoverse,Rust是第二-Dart之后增长最快的语言:流行的编程语言网站PyPl也将Rust排在第18位,并且还在上升:比较它提供的功能集,难怪像微软、亚马逊、谷歌这样的科技巨头最终宣布Rust作为一种长期系统编程语言。在过去5年里,Rust的吸引力每年都在增长:主要用途:系统编程无服务器计算商业应用主要竞争语言:CC++GoSwiftGoGoogle是较大的网络公司之一。在2000年代初期,Google面临两个扩展问题:开发扩展和应用程序扩展。开发扩展意味着他们无法通过增加开发人员来添加更多功能,而应用程序扩展意味着他们无法轻松开发可以扩展到“Google”大小的机器集群的应用程序。2007年左右,谷歌着手创建一种新的“实用”编程语言来解决这两个问题。在RobPike(UTF-8)和KenThompson(UNIX操作系统)中,两位世界上最有才华的软件工程师创造了一种新语言。2012年,谷歌发布了Go编程语言的第一个正式版本。Go是一种系统编程语言,但与Rust不同。它还有一个运行时和垃圾收集器(几兆字节),但与Java或Python不同的是,这个运行时包括生成的代码。最后,Go生成了一个本机二进制代码,可以在计算机中运行而无需额外的依赖项或运行时。主要特点:Go具有一流的并发支持。它不通过线程和锁提供“共享内存”并发性,因为它的编程难度要大得多。相反,它提供基于CSP的消息并发性。Go使用“Goroutines”(轻量级绿色线程)和“Channels”进行消息传递。Go最致命的特点就是简单,它是最简单的系统编程语言,一个初出茅庐的软件开发者可以在几天内写出高效的代码。一些较大的云原生项目(Kubernetes、Docker)是用Go编写的。Go还具有嵌入式垃圾收集器,这意味着开发人员无需像C/C++那样担心内存管理。谷歌在Go上投入了大量资金,因此Go有很多工具支持。为新的Go开发人员提供了一个庞大的工具生态系统。通常,开发人员将20%的时间用于编写新代码,将80%的时间用于维护现有代码。由于其简单性,Go在语言维护领域表现出色。如今,Go在商业应用中得到了广泛的应用。受欢迎程度:自从Go首次问世以来,软件开发社区就一直接受它。在2009年(首次亮相)和2018年,Go被TIOBE指数列入编程语言名人堂名单。难怪Go的成功为Rust这样的新一代编程语言铺平了道路。Go已经是一种主流的编程语言。最近,Go团队宣布了“Go2”的计划,其目的只是为了让语言更稳定。在几乎所有流行的编程语言比较网站上,Go的排名都很高,超过了许多现有的语言。以下是2019年12月的TIOBE指数排名,Go排名第15位:根据Stackoverflow,Go是最受欢迎的10大编程语言之一:根据GitHubOctoverse,Go也是增长最快的10大语言之一:谷歌还显示Go的吸引力在过去五年中不断增长:关键用例:系统编程无服务器计算业务应用程序云原生开发主要竞争语言:CC++RustPythonJavaKotlinJava是企业软件开发中无与伦比的争议之王。近年来,Java被批评为冗长、需要大量样板代码、复杂且容易发生事故。然而,关于Java虚拟机(JVM)的争论却很少。JVM是软件工程的杰作,它提供了经过时间考验的运行时。在之前的一篇文章中详细讨论了JVM的优势:文章网址:https://towardsdatascience.com/programming-language-that-rules-the-data-intensive-big-data-fast-data-frameworks-6cd7d5f754b0多年来,像Scala这样的JVM语言试图解决Java的缺点并希望成为更好的Java,但失败了。终于,Kotlin出现了,寻找更好的Java的旅程似乎结束了。JetBrains(流行的IDEIntelliJ背后的公司)开发了Kotlin,它在JVM上运行,解决了Java的缺点,并提供了许多现代功能。与Scala不同,Kotlin比Java简单得多,并且在JVM中提供了Go或Python风格的开发生产力。Google宣布Kotlin为Android开发的一流语言,并提高了Kotlin在社区中的接受度。同样流行的Java企业框架Spring,自2017年以来也在Spring生态系统中支持Kotlin。主要特点:Kotlin的USP是它的语言设计。我一直认为Kotlin是JVM上的Go/Python,因为它的代码干净简洁。因此,Kotlin非常高效。与许多其他现代语言一样,Kotlin提供空指针安全、类型推断等功能。由于Kotlin在JVM中运行,因此您可以使用现有Java库的庞大生态系统。Kotlin是开发Android应用程序的一流语言,已经超越Java成为开发Android应用程序的第一语言。Kotlin得到JetBrains和开源的支持。因此,Kotlin拥有强大的工具支持。有两个有趣的项目:KotlinNative(将Kotlin编译为本机代码)和Kotlin.js(将Kotlin转换为JavaScript)。如果他们成功了,那么Kotlin就可以在JVM之外使用。Kotlin还提供了一种编写DSL(领域特定语言)的简单方法。人气:自2015年首次发布以来,Kotlin的人气一路飙升。根据StackOverflow,Kotlin是2019年第4大最受欢迎的编程语言:Kotlin也是增长较快的编程语言之一,排名第4:热门编程语言排名网站PyPl将Kotlin列为第12大最受欢迎的编程语言,并且有很高的上升趋势:自从Google宣布Kotlin为开发Android应用程序的一流语言后,Kotlin的受欢迎程度迅速上升,如下图所示:主要用例:企业应用程序Android应用程序开发主要竞争语言:JavaScalaPythonGoTypeScriptJavaScript是一种优秀的语言,但是2015年以前的JavaScript有很多缺点。甚至著名的软件工程师DouglasCrockford也写了一本书《JavaScript: The Good Parts》,并暗示JavaScript有很多不好的地方。由于缺乏模块化和“回调地狱”,开发人员不喜欢维护特别大的JavaScript项目。Google甚至开发了一个将Java代码转换为JavaScript代码(GWT)的平台。许多公司或个人都尝试开发更好的JavaScript,例如CoffeeScript、Flow、ClojureScript,但微软的TypeScript无疑是其中最突出的。由Delphi创始人AndersHejlsberg领导的一组Microsoft工程师创建了TypeScript作为JavaScript的静态类型、模块化超集。在编译期间,TypeScript被编译为JavaScript。自2014年首次发布以来,TypeScript迅速引起社会关注。当时谷歌还计划开发一个静态类型的JavaScript超集。Google对TypeScript印象深刻,以至于他们没有开发一种新语言,而是与Microsoft合作改进TypeScript。Google使用TypeScript作为其SPA框架Angular2+的主要编程语言。此外,流行的SPA框架React提供了对TypeScript的支持。另一个流行的JavaScript框架Vue.js表示他们将使用TypeScript开发新的Vue.js3:此外,node.js的创建者RyanDahl已决定使用TypeScript开发安全的node.js替代品Deno。主要特点:与列表中的Go或Kotlin一样,TypeScript的主要特点是语言设计。凭借其清晰干净的代码,它是更优雅的编程语言之一。就开发人员生产力而言,它与JVM上的Kotlin或Go/Python不相上下。TypeScript是JavaScript最高效的超集。TypeScript是JavaScript的强类型超集。它特别适用于大型项目,被恰当地称为“大规模的JavaScript”。“三大”单页应用程序框架(Angular、React、Vue.js)为TypeScript提供了出色的支持。在Angular中,TypeScript是首选的编程语言。TypeScript在React和Vue.js中越来越受欢迎。两个较大的科技巨头:微软和谷歌正在合作开发TypeScript,它得到了一个充满活力的开源社区的支持。因此,对TypeScript的工具支持是很好的工具之一。由于TypeScript是JavaScript的超集,它可以在存在JavaScript的任何地方运行。TypeScript可以在浏览器、服务器、移动设备、物联网设备和云上运行。受欢迎程度:开发人员喜欢TypeScript优雅的语言设计。在Stackoverflow开发者调查中,它在最受欢迎的语言类别中与Python并列第二:TypeScript是增长最快的网络编程语言之一,在GitHubOctoverse上排名第五:根据GitHub的贡献,TypeScript也进入了Top10(No.7):TypeScript在过去一年中获得了越来越多的关注,这反映在谷歌趋势中:主要用例:WebUI开发服务器端开发主要竞争语言:JavaScriptDartSwiftSteveJobsRejectedSupportJava(andJVM)iniOS因为他认为Java将不再是主要的编程语言。我们现在知道史蒂夫乔布斯对Java的看法是错误的,但iOS仍然不支持Java。相反,Apple选择了Objective-C作为iOS中的主流编程语言。Objective-C是一门很难掌握的语言。而且,它具有现代编程语言所要求的高开发效率。在Apple,ChrisLattner和其他人开发了Swift,这是一种多范式、通用、可编译的编程语言,提供了Objective-C的替代方案。Swift的第一个稳定版本于2014年发布。Swift还支持LLVM编译器工具链(同样由ChrisLattner开发)。Swift与Objective-C代码库互操作良好,并已成为iOS应用程序开发的主要编程语言。主要特点:Swift的致命优势之一是它的语言设计。它以更简单、简洁和干净的语法提供了一个更有效的Objective-C替代方案。Swift还提供了现代编程语言的一个特性:nullsafety。Swift是一种编译语言,与C++一样快。Swift支持LLVM编译器工具链。因此,我们可以在服务器端甚至浏览器编程(使用WebAssembly)中使用Swift。Swift提供自动引用计数(ARC)支持,这限制了内存管理不善。受欢迎程度:与许多其他现代语言一样,开发人员非常喜欢Swift。根据StackOverflow的数据,Swift是第6大最受欢迎的编程语言:2019年,Swift在TIOBE的编程语言排名中上升到第10位。考虑到这门语言只有5年的历史,这是一个相当大的成就:谷歌趋势还表明,Swift的受欢迎程度起初急剧上升,然后在最后几次饱和度中略有下降:主要用例:iOS应用程序开发系统编程客户端开发(通过WebAssembly)主要竞争语言:Objective-CRustGoDartDart也是谷歌发布的一种编程语言。谷歌是网络和Android领域的重要参与者,它在网络和应用程序开发领域开发自己的编程语言也就不足为奇了。Dart是一种支持强类型和面向对象编程的通用编程语言。Dart还可以转换为JavaScript,并且可以在任何运行JavaScript的地方运行(例如Web、移动、服务器)。主要特点:与Go一样,Dart非常注重开发人员的生产力。Dart因其干净、简单、简洁的语法而受到开发人员的喜爱,极大地提高了生产力。Dart还提供强大的类和面向对象的编程。Dart是少数同时支持JIT编译和AOT编译的语言之一。因此,Dart可以针对JavaScript运行时(V8引擎),并且Dart可以编译为快速本机代码(AOT编译)。Flutter是一个跨平台的原生应用程序开发平台,它选择Dart作为其编程语言来开发iOS和Android应用程序。从那时起,Dart变得越来越流行。与Go一样,Dart拥有出色的工具支持,而Flutter拥有庞大的生态系统。Flutter的日益流行只会增加Dart的流行度。热度:根据GithubOctoverse,Dart是2019年增长最快的编程语言,去年它的热度增长了5倍:根据TIOBE,Dart排名第23位,仅用4年时间,它就超越了许多其他编程语言:它也是StackOverflow开发者调查中第12位最受欢迎的编程语言之一:除了Flutter,Dart的受欢迎程度在过去两年也经历了巨大的提升,这在Google中有明显的体现:MainUseCases:ApplicationDevelopment前端开发主要竞争语言:JavaScriptTypeScriptJulia以上列出的编程语言都是大公司开发的,但Julia不是。在技??术计算中,常用的有Python、Matlab等动态语言。这些语言提供易于使用的语法但不适合大规模技术计算,它们使用C/C++库来执行CPU密集型任务。当代码在两种语言之间翻译时,总会有一些性能损失。为了解决这个问题,麻省理工学院的一组研究人员计划从头开始创建一种新语言,利用现代硬件并结合其他语言的最佳部分。他们在麻省理工学院创新实验室完成了这项工作,并发表了以下宣言:Julia是一种动态的高级编程语言,对并发、并行和分布式计算提供一流的支持。Julia的第一个稳定版本于2018年发布,并迅速获得社区和业界的青睐。Julia可以应用于科学计算、人工智能等诸多领域,最终解决“两种语言”的问题。特点:与Rust一样,Julia的主要特点是语言的设计。它试图结合现有编程语言的一些最佳特性,在不牺牲性能的情况下实现高性能和科学计算。到目前为止,它做得很好。Julia是一种可选类型的动态编程语言。因此,Julia易于学习且非常高效。它以多分派编程范式为中心。它内置了对并发、并行和分布式计算的支持。它还为I/O密集型任务提供异步I/O。它非常快,可以用于需要数百万线程的科学计算。受欢迎程度:在很多领域,Julia主要与Python竞争。由于Python是最流行的编程语言之一,因此Julia成为主流还需要几年时间。Julia相对年轻(只有一岁),但在TIOBE指数中仍排在第43位:谷歌趋势也显示出随着时间的推移,程序员对Julia产生了稳定的兴趣。但考虑到Julia背后的功能集和公司数量,如NSF、DARPA、NASA、Intel,Julia的突破只是时间问题。主要用例:科学计算高性能计算数据科学可视化主要竞争语言:PythonMatlab
