写点什么

2020 年热门编程语言的发展方向

  • 2020-02-16
  • 本文字数:4096 字

    阅读完需:约 13 分钟

2020年热门编程语言的发展方向

时间行至 2020 年,对于编程语言的未来发展,很多人会更多的期待。因此,我们向多位编程专家征询了他们对热门编程语言的看法。

Python

今年 Python 最大的新闻是,其创造者和“终身仁慈独裁者(BDFL)”Guido van Rossum退休了,将 Python 交给了Python指导委员会(Python Steering Council)。到目前为止,权力转移还算顺利,正如《Python 编程从入门到实践》(Python Crash Course)的作者 Eric Matthes 所认为的那样,这并不足以为奇,因为“长久以来,Guido 一直都能在他自己和在社区中的角色之间保持平衡。”2020 年也将终止对Python 2.7的支持,这很可能会让其反对者感到头疼。同时,Python仍然是数据科学的首选语言


对于 Matthes 而言,Python 令人兴奋的一个方面是“在一个长期以来刻意构建其多样性的社区中,出现了各种有趣而关键的项目。”Python 指导委员会的成员、CPython 的核心开发人员Carol Willing也对这些项目表示了赞赏,比如 Binder 服务,它通过我们的 Jupyter Notebooks 创建一个可执行的环境来促进可重复的研究,尤其是当它们超出最初的目标时。她指出,Binder“去年被广泛用于许多 Python 会议的教学研讨班和教程”,Willing 还对 CircuitPython 和 Mu 项目大声疾呼,问到:“谁不喜欢硬件、闪烁的 LED、传感器,使用 Mu,一个老少咸宜、用户友好的编辑器?”

Java

这主要是 Java 方面的好消息。Java Champion Ben Evans解释道,“关于 Java 消亡的谣言再一次被证明不过是平台批评者的一厢情愿而已。”但这也并非一帆风顺。正如我们去年所注意到的那样,2018 年 9 月发布的Java 11带来了大量的新特性,其中许多特性为容器的使用提供了显著且明显的优势。然而,JetBrains的调查显示,这个最新版本并没有被广泛采用,超过 80%的开发人员仍然使用 Java 8。Evans 想知道,“这是否意味着人们并没有像我们所说的那样在容器中运行 Java 呢?还是人们根本不知道 Java 11 在容器方面的优势呢?”


尽管采用速度很慢,但 Java每六个月发布一次的节奏一直在不断延续:Java 12 于 2019 年 3 月发布,Java 13 于 9 月发布。据Java Champion Trisha Gee所说,它已经开始显示出它的价值了:


每个版本都很小,但都是可预测的。尽管它们并没有令人兴奋的新语言变化,但我们可以看到该语言正在稳步向前发展。此外,它还支持了预览特性的想法,我认为正如我们所看到的那样,它对 switch 表达式非常有效,开发人员应该尝试该特性,并根据使用的情况给出真正的反馈,而不是对抽象的概念性的想法进行反馈。作为回应,对 switch 表达式的语法进行了少量地更改,这是有可能的,因为它是 Java 13 中的一个预览特性,而不是一成不变的。现在,计划将这个更新后的语法作为一个可用于生产的特性在 JDK 14 中发布。


当甲骨文将 Java SE 迁移到基于订阅的模式时,2019 年又带来了另一个惊喜。但是,正如《Learning Java,第五版》(现已发布的早期版本)的合著者 Marc Loy 所指出的那样,“整个 Java 社区对OpenJDK的热情越来越高,它已经开始着手处理这个不幸的变化了。”


至于来年,Evans 建议 2020 年需关注 2019 年的趋势发展:


Project Valhalla的生产版本还有多久才能发布?提供模式匹配和代数数据类型(Project Amber)的增量策略是否有效?Quarkus能兑现它的承诺并支撑早期粉丝的信念吗?2020 年会成为 Kotlin 超越 Android 成为重要排头兵的一年吗?这是一个令人兴奋的时刻,我们正处于向新事物过渡的阶段,而且还有很多事情可以做。

Kotlin

谷歌在 2019 年 5 月宣布,Kotlin 现在是Android应用程序开发人员的首选语言,这促进了该语言的广泛采用。尽管许多 Android 开发人员仍处于向 Kotlin 迁移的过程中,但那些已经过渡过来的人都知道它能提供的好处了。《Head First Kotlin》的作者 Dawn 和 David Griffiths 分享了 Kotlin 崛起背后的几个原因:


对于由 IDE 公司创建的语言,Kotlin 能拥有良好的工具支持也就不足为奇了。用于代码契约的实验性 DSL 使开发人员能够为代码的行为方式提供保证。你的函数有副作用吗?它是否能保证返回一个非空值?代码契约允许我们做出这些承诺,而编译器可以使用它们来放宽编译时检查。

现在,不同 Kotlin 平台之间的屏障也正在被打破。“expect”/”actual”限定符使开发人员可以更轻松地编写跨 Java/Native/JS 环境的兼容代码。现在,序列化支持意味着可以更容易地将 JSON 数据转换为 Kotlin 对象,反之亦然。


希望 Kotlin 能继续保持其惊人高速增长,而不仅仅是在 Android 上。JetBrains 的开发者权益团队负责人Hadi Hariri指出 Kotlin/Everywhere(一系列社区主导的活动,在这些活动中,我们可以在 Android、谷歌云平台和多平台开发中学习 Kotlin 的基本知识和最佳实践)的成功,就是最好的证明:“从 5 月到 11 月,我们已经成功地覆盖了 86 个国家的近 30000 人。2019 年,KotlinConf连续三年售罄,吸引了 1700 多名与会者。这尤其表明,人们对这门语言的兴趣和接受程度正在增长。”

Go

当 Go 程序员(Gopher)回顾 2019 年时,他们很可能会记得“try”提案的传奇故事。Go 的开发者兼作者 Jon Bodner 解释道:


对于 Go 最常见的抱怨之一是错误处理过于冗长。因此在 6 月初,Go 的核心开发人员们提议添加一个新的内置函数try并发布了一个GitHub issue来讨论这个新特性。不到一个月,就有近 800 条评论,其中大多数都是否定的。反对这一新特性的人认为,这一变化使代码变得太“魔法”,并使逻辑流程变得模糊了。在审查了反馈之后,Go 团队将提案标记为关闭,并于 7 月 16 日拒绝掉了该提案。


在这个过程中值得注意的不是这个特性的失败,而是,正如 Bodner 所描述的那样,“过程的发生方式:提出一个特性,讨论也是受到尊重的,但是许多人觉得这个变更与 Go 的风格不一致。最后,掌管语言的人决定尊重大多数人的意见。这就是开发者所说的社区。”


2020 年,Go 的契约规范(也就是众所周知的泛型提案)应该会更加清晰。Bodner 说,“看起来 Go 将使用一种与其他语言略有不同的方法来实现泛型,但是这种方法非常适合 Go 的习惯用法。”它将有望使 Go 在添加泛型特性(开发人员在其他语言中发现泛型非常有用)的同时,仍能保持其惯用的风格。

Rust

我们采访了《Programming Rust》的合著者Jim Blandy,以了解他对 Rust 的发展看法在 2019 年发生了怎么的变化。去年,他指出,“Rust 长期以来一直以这样或那样的形式支持异步编程,但是异步函数为这种代码提供了一种语法,这是对 Rust 之前语法的重大改进。”他对 Rust 语法进行改进的愿望实现了吗?是的,最终:Blandy 解释到 async/await 语法直到 2019 年 11 月 7 日发布的 1.39 版才趋于稳定。“最初,我们希望 async/await 语法可以成为 Rust 2018 版的一部分,但它需要花费更长的时间才能把事情做好。”尽管如此,他仍然对 async 在 2020 年对 Rust 的意义寄予厚望:“将 async 集成到语言中,可以让借用检查器(borrow checker)了解我们在做什么,因此异步代码看起来就像是惯用的 Rust。”正如 Blandy 所指出的那样,Rust 生态系统正在迅速采取行动,以利用该语言的新表现力。


Rust 社区对 WebAssembly 也很感兴趣,今年 WebAssembly 成为了 C/FFI 的理论替代品 ,可用在需要具有可移植的、高性能的模块的生态系统中。正如 Rust 专家Nathan Stocks所说:“我么也可以使用轻量级的沙箱!”令 Stocks 印象最深的是“该理论已经被原型化并被成功地证明了”


以前,我曾把 WebAssembly 纯粹视为一个编译目标,以便在浏览器中运行非 JS 语言的代码。添加这种可以从浏览器之外的任何语言中使用 Web 程序集的能力是令人不寒而栗的。

Swift

Swift 去年最大的事件是SwiftUISwift for TensorFlow的发布。SwiftUI 是苹果公司的最新框架,可用于在所有苹果设备上设计用户界面,Swift for TensorFlow 是一个将谷歌 TensorFlow 框架和 Swift 集成在一起的深度学习和可微分编程(differentiable programming )平台。正如Timirah James所解释的那样,SwiftUI“已经凭借其声明式的特性在开发者中获得了很大的吸引力(理应如此),并且已经被视为是未来 UIKit 的潜在继任者。”至于 Swift for TensorFlow,Paris Buttfield-Addison 称之为“Swift 的一个全新用途。”他解释道,“Swift 一直是一种优秀的应用程序开发和系统编程语言,也是一种很有前途的 Web 和后端开发语言,但现在,可以使用 Swift for TensorFlow 了,并且它还是一个功能强大的 ML 框架。”原因如下:


Swift for TensorFlow 有一个开发团队,其中包括 Swift 的创始人 Chris Lattner,并且它可以为我们提供(或将在完成后提供)机器学习和数值计算所需的一切。最令人惊讶的是,它对带有自动微分(automatic differentiation)的可微分编程(differentiable programming)提供了完全一流的支持,这是由 Swift 的底层编译器框架和设计来实现的。

全语言可微分编程将使之前不可能的事情成为可能:一个很好的例子是,当我们构建神经网络时,可以使用标准的编程调试器逐步进行反向传播并调试派生类。

Swift for TensorFlow 还为 Swift 提供了完整的 Python 支持,使数据科学家可以将他们所需要的有用且熟悉的 Python 框架与简洁而富有表现力的 Swift 代码进行混合和匹配。


展望未来,看到 Swift 选择的新方向,James 和 Buttfield Addison 都感到很兴奋,James 指出“ 在不同的社区和除移动领域之外的其他技术栈中,特别是在无服务器领域中,Swift 的采用非常迅速”,Buttfield Addison 称之为“令人惊叹的 Web 开发框架,比如Kitura,以及各种针对细分领域的惊人的框架,比如SwiftPlot,它是 Python 中无处不在的 Matplotlib 的 Swift 原生版本。”

未来是什么?

变化是不可避免的,并且随着编程语言继续向云、微服务、大数据和机器学习中的新趋势优化倾斜,每种语言及其生态系统都将以其独特的方式继续适应。某些语言可能会在 2020 年发布大版本(C++ 20 将于今年夏天发布,Scala 3 有望在 2020 年底发布)。但有一点很清楚,即使是最小的变更也可能会在程序员的日常生活中引起轩然大波。


原文链接:


https://www.oreilly.com/radar/where-programming-languages-are-headed-in-2020/


2020-02-16 12:116183

评论

发布
暂无评论
发现更多内容

NineData,领先的多云数据管理平台

NineData

数据库 数据复制 数据备份 多云管理 SQL开发

网易互娱数据成本优化治理实践

网易数帆

数据中台 数据仓库 数据治理 12 月 PK 榜

乐观锁思想在JAVA中的实现——CAS

JAVA旭阳

Java Java并发

大数据培训学习的技术基础有哪些

小谷哥

Wallys/DR9074E-Qualcomm Atheros QCN9074(QCN9024)/ 4x4 MU-MIMO Dual Band Wireless Module

Cindy-wallys

QCN9074 QCN9024

域内用户Hash获取方式总结

网络安全学海

黑客 网络安全 信息安全 渗透测试 漏洞挖掘

挤破脑袋要进阿里、腾讯的java程序员,去B站不香吗?

钟奕礼

Java 程序员 java面试 java编程

收到7个offer,用同一个技术套路了多位面试官

钟奕礼

Java java程序员 java面试 java编程

react源码分析:组件的创建和更新

flyzz177

React

react源码分析:深度理解React.Context

flyzz177

React

Industrial wifi6 Wireless AP/DR AP6018 S AIPQ6010 2T2R 2.4G&5G high power Radio AP

Cindy-wallys

IPQ6010 high power 2.4G&5G

【iOS逆向与安全】iOS插件开发光速入门

小陈

前端培训学习后程序员有什么好的方向吗

小谷哥

如何通过Java将Word转换为PDF

Geek_249eec

Java PDF word

cookie sessionStorage localStorage区别(详解)

达摩

缓存 Web Cookie LocalStorage sessionStorage

react源码分析:实现react时间分片

flyzz177

React

SAP MM 使用两个STO实现免关税跨国公司间转储(III)

SAP虾客

Java 编程入门第一课:HelloWorld

千锋IT教育

SAP IDoc状态70 - This IDoc is saved as the original of an edited document.

SAP虾客

模块一作业

程序员小张

「架构实战营」

一步登顶还是步步维艰?Java资深架构师撰下的“阿里P7成神之路”

钟奕礼

Java 程序员 java面试 java编程

SAP MM 采购订单的Document Flow

SAP虾客

含泪复盘!项目踩坑回炉改造血泪史(附芯片PCB/原理图)

华秋PCB

PCB PCB设计

参加前端培训之后能做什么?

小谷哥

大数据培训程序员就业前景如何

小谷哥

26个月89场Java岗面试,0至3年程序员的入职门槛到底是什么?

钟奕礼

Java 程序员 java面试 java编程

面试官:两个JVM的面试题就能证明,你连拿15K都不配

钟奕礼

Java 程序员 java面试 java编程

java程序员培训零基础怎么学

小谷哥

世界杯“无障碍字幕直播间”火了,背后有啥火山语音的黑科技?

科技热闻

借助云的力量,重塑企业的现在和未来|re:Invent 2022 Adam Selipsky 主题演讲精华全收录

亚马逊云科技 (Amazon Web Services)

亚马逊云科技

MegPeak——让你更懂你的处理器

MegEngineBot

深度学习 开源 处理器 MegEngine MegPeak

2020年热门编程语言的发展方向_编程语言_Amanda Quinn_InfoQ精选文章