关键的要点
- Elixir已进入趋势报告的创新者采用阶段。它是运行在Erlang虚拟机上的一种函数式、并发的通用编程语言。
- 我们看到人们对基础设施或特定于云的语言、dsl和sdk(如Ballerina和Pulumi)的兴趣和创新有所增加。
- 我们相信Rust已经从革新者阶段过渡到早期采用者阶段,这主要是由于它在基础设施和网络数据平面空间(例如,Habitat和Linkerd 2.0)中的应用。
- Python继续受到人们的欢迎,这主要归功于它在数据科学和教学中的作用。
- 由于iOS作为移动应用程序运行时的流行,iOS的开发已经向早期主流发展。虽然在JVM趋势报告中单独跟踪了Kotlin,但在Android应用程序开发方面,他也看到了类似的早期主流趋势。
- 对于.net,我们看到很多人对.net Core很感兴趣,而随着.net Core 3的到来,我们希望这种情况能够继续下去。
2019年及以后的编程语言趋势是什么?本报告旨在帮助技术领导者做出中长期的技术投资决策,并帮助个别开发人员识别流行的编程语言,并选择将他们宝贵的时间和资源投入到哪些新的编程语言学习和技能开发方面。
该报告总结了InfoQ编辑团队目前是如何看待编程语言领域中技术的采用和新兴趋势的,而不包括单独报告的Java / JVM和JavaScript / Web开发。这是一篇观点文章,由我们的编辑(他们本身也是活跃的软件工程师)与我们进行广泛的内部讨论,对外部公共调查结果的审查,以及对内部或私有调查和分析结果的审查形成。各种编辑谈话的摘录可以在下面找到。
InfoQ和QCon都关注我们认为属于革新者、早期采用者和早期主流阶段的主题。我们试图做的是找出符合杰弗里·摩尔(Geoffrey Moore)所说的“早期市场”的想法,在这个市场里,“客户基础是由技术爱好者和有远见的人组成的,他们要么想抓住机会,要么想解决迫在眉睫的问题。”我们还在寻找可能“跨越鸿沟”、被更广泛采纳的想法。值得指出的是,在这种情况下,技术在采用曲线上的确切位置可能不同。例如,Rust目前可能在旧金山湾区的公司中被广泛采用,但在其他地方可能不太被广泛采用。
自从我们发布了2018年内部编程趋势报告以来,发生了显著的变化,包括增加了几种语言,如Python、Ruby和PHP,这些语言虽然很流行,但我们并没有公开跟踪采用曲线。尽管与这些语言相关的技术和因素正在内部讨论,我们现在已经纠正了它们在趋势图上的缺失。
移动中的编程语言:Elixir、Rust和Swift
Elixir——一种函数式、并发的、通用编程语言——已经进入了创新者采用阶段的趋势报告。Elixir构建在Erlang之上(我们将其归入早期采用者类别),并运行在Erlang虚拟机上。Elixir和Erlang共享用于构建分布式容错应用程序的相同抽象。
我们认为,Rust已经从创新者转变为早期采用者,这主要是由于它在基础设施和网络数据平面空间(例如,Habitat和Linkerd 2.0)中的应用。这种语言也逐渐成为WebAssembly的天然合作伙伴,帮助提高人们的认识。此外,我们注意到Facebook选择使用Rust实现其Libra加密货币。
由于iOS作为移动应用程序运行时的流行,iOS的开发已经向早期主流发展。虽然我们没有在这个趋势类别中跟踪Kotlin,但是InfoQ Java和JVM趋势报告发现Kotlin越来越受欢迎,因为它现在是开发Android应用程序的默认语言。
基础设施的语言:芭蕾舞女,普鲁米,黑暗(Ballerina, Pulumi, Dark)
我们看到人们对基础设施/云目标语言、dsl以及类似Ballerina和Pulumi这样的sdk的兴趣越来越浓厚。我们也在追踪Dark,它目前处于内测阶段,所以还没有进入图表。这类技术目前正牢牢地扎根于创新者采用阶段,但我们正在密切关注这一阶段,并将于11月在旧金山的QCon上推出一个专门讨论“基础设施语言”的专题。
以下是我们2018年下半年的内部主题图。2019年的版本在文章的顶部。
2018年的编程语言
.net 2019年第三季度
对于。net,我们看到很多人对。net Core很感兴趣,而随着。net Core 3的到来,我们希望这种情况能够继续下去。我们把。net Core在图上分成了2x和3x两个分支,因为它们在采用上是不同的。关于。net语言,我们期待c# 8能很快被采用。我们继续对f#感兴趣,但是我们认为,f#的复杂性和缺乏来自微软的强大支持意味着它不太可能得到更广泛的采用。
我们有ASP。网芯早在多数。在这一点上,我们相信大多数新的web工作是在ASP上完成的。NET核心,但不一定是。NET核心。一些现有的应用程序正在被移植,但大多数不会。WCF在企业中仍然非常重要,但是MS在。net Core中并不能很好地支持它。我们已经把Visual Basic移到了落后的地方,并且在这一点上,我们真的把它看作是一种业余爱好者的语言。
以下是一系列经过简单编辑和汇总的内容,摘自InfoQ几个编辑团队的内部对话,为我们推荐的采用图的定位提供了更多的上下文环境。
Timisoara技术大学计算机与自动化学院助理教授Abel Avram和InfoQ编辑:
JetBrains发布了他们的2019年开发者生态系统状态,调查了7000名开发者,得出了以下结论:
- Java——最流行的初级编程语言
- JavaScript -使用最多的整体编程语言
- Go——最有前途的编程语言
- Python是被研究最多的语言
Go最初在2017年的市场份额是8%,现在已经达到了18%。此外,大多数开发人员(13%)选择Go作为他们希望采用或迁移的语言。
StackOverflow今年曾这样评价Python:“Python是增长最快的主要编程语言,在我们的调查中再次跻身编程语言的行列,今年超过了Java,成为第二受欢迎的语言(仅次于Rust)。”
Arthur Casals,在人工智能/多智能体系统领域工作的计算机科学研究员:
从我最近看到/读到的情况来看,Rust似乎正在加快采用它的速度。尽管如此,它仍然是(某种程度上)小众的,被视为“c++的替代品”。然而,随着可用库数量的增加和主要参与者的采用,我认为这是“早期采用者”的一个好选择。
Elixir似乎获得了一些势头,尤其是在巴西——事实上,这种语言的创造者是巴西人,至少有一个新的独角兽(Movile)正在公开使用它(与其他流行的公司,如Quero,在教育)。
我最近看到了一些关于Elixir的讨论——特别是在Quero的一个专家讲述了他们如何从一开始就采用Elixir的故事之后,等等。还有一个来自于的工程师的很好的用例,他们最近写了关于使用Rust和Elixir结合起来为1100万并发用户提供后端支持的文章。这是一个涉及两种语言和广泛使用的应用程序的真实场景,这无疑增加了它们的发展势头。
Dylan Schiemann, SitePen的首席执行官和Dojo的联合创始人:
Rust还处于早期的采用者阶段,根据我的经验,它的采用者正在增加,这在很大程度上是由于WebAssembly和Servo。
虽然Go已经有一段时间很有趣,但我仍然会将其认作是早期采用者。例如,语言的生命周期比框架要慢得多,我真的不认为Go已经成为主流。类似地,Elixir和Elm将被视为早期采用者。
在我看来,Pony 是一个语言,我很少听到提及,并在这个时候仍然是一个革新者。
由于Swift是iOS应用程序的默认入口点,因此它很可能已经成为主流。
对于基于云的ide, CodeSandbox和StackBlitz在过去一年中获得了极大的流行,因为它们具有令人印象深刻的基于浏览器的编辑特性集,以及与本地开发工具的集成。
在停滞了几年之后,Dart似乎在很大程度上由于Flutter而复苏。
Charles Humble, InfoQ主编:
我想把Swift变成早期的主流——在我看来,这种趋势还在继续,而且我认为,从WWDC上的一些公告来看——明显是Swift的UIKit——我们正在进入苹果平台的“Swift时代”。
我认为我们也可以将服务器端Swift移植到早期采用者。这是传闻,但与一些接近的人,他们告诉我这是看到稳定增长,有很多好东西,推动了swift-nio的开源,这反过来又增加了一些服务器端框架的性能了。
去年,Rust 肯定有所增长,我想把它从创新者变成早期采用者。他们很擅长将其定位为Wasm的合作伙伴,我认为这很有帮助。
我不确定Go;它仍在增长,但我感觉它还没有达到大众接受的程度;可能会有争议,但我还是想让它尽早被采用。
我听说了一些Elixir,但我认为它仍然是创新者;它仍然是非常小众的。
我们也应该把Python放在这里,可能在早期的大多数。它的受欢迎程度还在持续增长,这主要是由它在数据科学家中的受欢迎程度推动的,我认为我们需要更多地讨论它。
我不认为Pony可能会超越创新者;这是一个耻辱。我喜欢它的语言,虽然我发现它的类型系统相当复杂,而且我确实认为它是一件令人印象深刻的作品,但是它的社区仍然非常小。我会把它从追踪器上拿下来。
最后,我听到了更多关于Dark的消息,尽管它还处于内测阶段。我发现在更广泛的基础设施语言环境中这很有趣。
Werner Schuster, Wolfram的软件管道工:
关于Swift:目前还处于早期阶段,但是Swift对于TensorFlow (S4TF)的支持可能会成为Swift的一大卖点,并成为Python的潜在竞争对手(至少在该领域)。
这里有一个非常全面和有趣的文件,关于为什么是Swift而不是其他语言。Chris Lattner现在在TensorFlow工作;和克里斯是他的老把戏,创造国税局在各地(MLIR)
S4TF的名字有点无聊,而且隐藏了所有有趣的部分(广告,等等)。
关于Python:我对Python的走向很感兴趣;很明显,作为大量数据科学/ML原生图书馆选择的黏合剂语言,它已经获得了巨大的收益——这是Ruby在10年前没有发现的,这是它的损失。
另一方面,Python对其运行时的任何形式的现代化都表现出了明显的抵制(有人记得Unladen Swallow吗?)
我想Jython也死了。我上次访问这个网站时,它已经有好几年没有更新了,而且离Python 3.x还差得很远。
基础架构语言:似乎出现了一种将语言(一些新的语言)耦合到部署的新趋势。
- Pulumi & co - Typescript
- Ballerina
- Unison Language—由ex-Scala/Haskell开发的一种新的函数式语言,但是很好地摆脱了单子;现在还为时过早
- Dark Language ——还没有公开
我很好奇所有这些会去哪里;可能是昙花一现,也可能是15年后不可或缺的语言特性的第一步(比如子例程成为语言特性时)。
我们可能看一个新的,没有阻碍的Wasm未来(浏览器和服务器端WASI等等)以及新发现的升值的本地(vm,容器,serverless)减少JVM /字节码的吸引力,允许每个人都只使用本地版本的语言(规范化近几十年一直在开发版本)。需要说明的是,我上面所说的都与JVM原生语言无关,比如Clojure、Scala或Kotlin等。
Ben Evans, New Relic公司的首席工程师和JVM技术架构师:
Elixir里有少量的东西。我不是一个特别的爱好者——它是一个足够好的语言,但是除非你需要BEAM VM的实际能力(容错,大规模分布的简单事物),否则它似乎不会增加很多。
大多数语言的爱好者似乎喜欢它,因为它是“新的闪亮”,并且/或者他们对Java过敏(通常基于对已经过时10年的>平台的看法),但是……我还没有看到任何在JVM技术中不容易实现的引人注目的功能(尽管可能会有更多的繁文缛节)——而且JVM与库的集成要更好、更广泛。
Dustin Schultz:首席软件工程师、Pluralsight作者和技术布道者
在过去的几年里,我看到Python有了很大的发展。正如其他人所指出的,我认为这主要是由于数据科学、教授it学校/大学以及弗拉斯克(vs Django)这样的轻量级框架。
我并不反对Python(实际上我喜欢编写它),但是我认为它的流行并不代表企业用例的使用。我很少看到用Python编写的大型分布式企业应用程序仍然使用Python。它们可能一开始使用Python,但最终会因为性能的原因切换到其他语言。
查尔斯·汉博:
就核心框架而言,自2012年以来,它似乎有了一些渐进式的改进——我认为很多工作都集中在。net核心上。我认为。net Core已经从创新者变成了早期采用者。我在想,我们是否应该在。net Core 3发布后将其拆分,或许。net Core 3将在innovator中回归,而。net Core 2将在较早的采用者中回归。
同样地,我认为c#应该转向早期的主流——老实说,我不确定为什么不是。
我认为f#正在沿着类似于JVM上的Clojure的道路前进——在我看来,这是一门可爱的语言,但我没有看到它扩展到当前大小之外的迹象。同样,我也没有看到使用量大幅下降。
Jonathan Allen,毕马威的软件架构师,InfoQ的首席.net编辑:
与社区交流,F#有两个问题:
- 它没有来自微软的强大支持
- 领导层致力于以易用性为代价追求c#的兼容性
- 它在不断地变得越来越复杂,这正是计算机科学家所喜欢的。但是,实际上教授f#的培训师主要关注那些需要脚本语言的非程序员。因此,额外的复杂性使他们的工作更加困难。
我也认为c# 8很快就会被早期采用者所接受。自从……以来,人们一直要求可为空的引用类型。嗯。net 1。
讨论的其他公开的研究和调查包括: "The RedMonk Programming Language Rankings: June 2019" 和I"The Top Programming Languages 2019."
请告诉我们您在过去12个月中使用了哪些编程语言,或者您打算使用哪些编程语言。填写调查表。
原文:https://www.infoq.com/articles/programming-language-trends-2019
本文:https://pub.intelligentx.net/programming-languages-infoq-trends-report-october-2019
讨论:请加入知识星球【首席架构师圈】或者飞聊小组【首席架构师智库】
最新内容
- 1 day 12 hours ago
- 1 day 12 hours ago
- 1 day 12 hours ago
- 1 day 12 hours ago
- 1 day 19 hours ago
- 2 days 17 hours ago
- 1 week 4 days ago
- 1 week 4 days ago
- 1 week 4 days ago
- 1 week 4 days ago