【编者按】步入 21 世纪 20 年代,我们向编程专家征求了他们对知名编程语言,以及近些年快速发展的编程语言的看法。
作者 | Zan McQuade,Amanda Quinn
译者 | 明明如月,责编 | 夕颜
出品 | CSDN(ID:CSDNnews)
以下为译文:
今年关于 Python 最大的新闻是其创始人,被戏称为“仁慈的终生独裁者”的 Guido van Rossum 宣布退休了。他将 Python 交到了 Python 指导委员会手中。在《Python编程-从入门到实践》的作者 Eric Matthes 看来,这是一场无痛的权利移交,不足为奇。他说 “长期以来,Guido 一直保持着自己的姿态以及他在社区中的角色”。2020 年,Python 2.7 也将终止支持,这可能会让那些坚持使用 Python 2.7 的用户感到头疼。与此同时,Python 仍然是数据科学的首选语言。
对于 Matthes 来说,Python 的一个令人兴奋的方面是"各种有趣的和重要的项目都来自于这个社区,该社区有意识地向多样性的方向发展"。Python 指导委员会成员、 CPython 核心开发人员 Carol Willing 也赞扬了这些项目,如 Binder 服务,该服务通过在你的 Jupyter Notebooks 上创建一个可执行的环境,来促进可重复研究,尤其是当它们超出了最初的目标时。她说“ Binder 去年在许多 Python 会议上被广泛提及。” Willing 还为 CircuitPython 和 Mu 项目大声疾呼,问道“谁不喜欢硬件啊,闪耀的 LED 灯,传感器,还有谁不喜欢用 Mu 这个老少皆宜,用户友好的编辑器啊?”
Java 方面基本都是好消息。“Java Champion” 荣誉获得者 Ben Evans 说:“再一次,Java 灭亡的谣言被证实了只不过是 Java 平台诋毁者一厢情愿的想法而已。” 但是 Java 的发展也不是一帆风顺的。正如我们去年所指出的,2018 年 9 月发布的 Java 11 带来了一系列新特性,其中包含了在使用容器方面具有明显优势的新特性。然而,这个最新版本并没有得到广泛应用,根据 JetBrains 的调查,超过 80% 的开发者仍然在使用 java 8。Evans 想知道,“这是否意味着人们并没有以我们期待的方式在容器中运行 Java?还是他们根本不知道 11 个在容器方面的优势? ”
尽管 Java 的应用的数量增速缓慢,2019 年 3 月 Java 12 也随着 Java 每 6 个月的发布一个大版本的节奏到来,Java 13 也紧随其后,在 12 月发布。[Java Champion 荣誉获得者 Trisha Gee 表示,它真的开始显现出了它的价值:
虽然每个版本都很小,但是都是可以预测的。虽然并非所有都是令人兴奋的新变化,但是你可以看到语言在稳步地向前发展。此外,它还实现了预览功能的想法,我认为这在 switch 表达式方面效果非常好ー开发人员有必要去尝试这个功能,并根据使用的感觉给出真实的反馈,而不是给出对抽象概念的反馈。作为回应,Java 13 对 switch 表达式的语法做了一个小小的改变,因为它是一个预览特性,改动就会相对更容易。现在,这个新语法已经被计划放到 JDK 14 的预生产环境中。
2019 年,当 Oracle 将 Java SE 转换为基于订阅的模型时,带来了另一个惊喜。《Learning Java》 第五版的合著者 Marc Loy 指出“Java 社区已经带着对 OpenJDK 的热情来处理这个不幸的变化。”
Evans 表示,2020 年将是验证 2019 年 Java 发展趋势的一年:
我们离 Valhalla 项目发布正式版还有多远?交付模式匹配和代数数据类型(Amber 项目)的增量策略是否能够获得回报? 2020 年, Kotlin 能否在 Android 之外再占用一席之地?这些都是非常令人兴奋的时刻。我们正在向新的事物过渡,还有很多事正在发生。
谷歌在 2019 年 5 月宣布,Kotlin 现已成为 Android 应用程序开发者的首选语言,这提高了 Kotlin 的使用程度。尽管许多 Android 开发者仍然处于转移到 Kotlin 的过程中,但那些已经转型的人深知 Kotlin 的优势。《 Head First Kotlin 》的作者道恩(Dawn)和大卫•格里菲思(David Griffiths) 分享了 Kotlin 崛起的几个原因:
对于一个由 IDE 公司创建的语言,Kotlin 的工具支持非常棒也不足为奇。用于代码契约的实验性 DSL (Domain-Specific Language,领域特定语言)使开发人员能够为代码的行为方式提供保证。你的方法有副作用吗?是否能够保证方法返回非空值?代码契约允许您做出这些承诺,编译器可以使用它们来放松编译时检查。
不同的 Kotlin 平台屏障正在被打破。“ expect” / “ actual” 限定符允许开发人员更容易地编写跨 Java / Native / JS 环境兼容的代码。对序列化支持意味着现在将 JSON 数据转换为 Kotlin 对象更加容易,反之亦然。
预计 Kotlin 不仅仅是在 Android 上,还会在其他平台上继续保持加快增长。JetBrains 首席布道师 Hadi Hariri 指出,人们可以在很多社区上学习使用 Kotlin 开发 Android 、 谷歌云平台和其他平台开发的最佳实战。他证实了:“从 5 月到 11 月,KotlinConf 已经获得了了 86 个国家的 3万多人次的访问量。在 2019 年,KotlinConf 连续三年售罄,有超过 1700 名参加者。这表明,人们对这门语言的兴趣和接受程度正在增长。”
当 Go 语言开发者们回顾 2019 年时,他们会记起 try 语句提案的传奇故事。
开发者兼作家 Jon Bodner 解释道:
关于 Go 最常见的抱怨之一就是错误处理过于冗长。因此,在六月初,Go 核心开发人员提议添加一个新的内置函数,称为 try。一个 GitHub 的问题引发了这个新特性的讨论。一个月之内,就有将近 800 条评论,其中大部分是负面的。那些反对新特性的人认为,这种改变使代码变得太“神奇” ,模糊了逻辑流。在审查了反馈意见后,Go 团队在 7 月 16 日将该提案标记为关闭和拒绝。
正如 Bodner 描述的那样,值得关注的并不是这个功能的否决,而是“这个过程发生的方式:提出了一个新功能,讨论得到了充分的尊重,但是很多人认为这个功能和 Go 的风格不一致。最后,掌管语言的人决定尊重大多数人的意见。这就是开发者所谓的社区的意义”。
2020 年 Go 的语言的合约规范,也就是众所周知的泛型提案将更加清晰。“看起来 Go 将使用一种和其他编程语言不同的方式来实现泛型,但是这种方式非常符合 Go 的编程风格”。Go 将添加对开发人员有用的特性的同时保持自己的风格。
我们联系了《Rust 编程》的合著者 Jim Blandy ,想看看他对 Rust 发展的看法。去年,他指出“ Rust 一直支持通过多种方式实现异步编程,但是通过异步函数为这类代码提供语法支持,是 Rust 之前的重大改进。” 他对 Rust 语法改进的期盼实现了吗?是的,实现了。Blandy 解释道,异步(async)和等待 (await)的语法在 2019 年7 月发布的 1.39 版本才变得稳定起来。
最初,他希望异步(async)和等待 (await)的语法能够出现在 Rust 2018 年的版本中,但是好事多磨,当时没有如常所愿。“将异步(async) 整合到语言中,让借用检查器理解你的行为,让异步编码更符合 Rust 的风格。” Blandy 还指出:Rust 生态系统正在迅速采取行动,利用好该语言的新表达能力。
Rust 社区也对 WebAssembly 感到兴奋,它今年在理论上取代了 C/FFI ,成为需要便携、高性能模块的生态系统的替代品。正如 Rust 专家 Nathan Stocks 指出的那样,“你也可以得到轻量级沙箱了! ” 给斯托克留下最深刻印象的是 “这个理论有多少已经原型化并被成功地证明了。”
我以前认为 WebAssembly 只是一个在浏览器中运行非 JS 语言代码的编译目标。此外任何语言的 web 汇编具有可以在浏览器之外运行的能力,令人难以置信。
去年 Swift 最大的新闻是 SwiftUI 的发布,这是苹果为所有苹果设备设计用户界面的最新框架,还有 Swift for TensorFlow,这是一个集成了 Google 的 TensorFlow 框架和 Swift 的深度学习和可分类编程的平台。正如 Timirah James 解释的那样,SwiftUI “已经在对开发者产生了很大的吸引力 ,它的声明性质已经被视为 UIKit 未来的潜在继承者。” 至于 Swift for TensorFlow,Paris Buttfield-Addison 称之为“ Swift 的全新用法”。他解释说,“ Swift 一直是一种很棒的应用程序开发和系统编程语言,也是一种很有前途的 web 和后端开发语言,但现在,随着 Swift for TensorFlow 的出现,它也成为了一种强大的机器学习框架。” 原因如下:
Swift for TensorFlow 是由一个包含 Swift 的缔造者克里斯·拉特纳 (Chris Lattner) 在内的团队开发 ,该团队为机器学习和数值计算提供 (或者将提供) 所需的一切。最令人惊讶的是,它完全支持使用自动微分语言的可微分式编程,这是由 Swift 的底层编译器框架和设计实现的。
完整的语言可微分式编程将使以前不可能的事情成为可能:最好的例子是,在构建神经网络时,能够使用标准的编程调试器来进行反向传播和调试导数。
Swift for TensorFlow 也为 Swift 带来了完整的 Python 支持,允许数据科学家混用和搭配他们熟悉的 Python 框架,以及清晰易懂的 Swift 代码。
展望未来,James 和 Buttfield-Addison 都很高兴看到了 Swift 的新方向,James 指出 “ 除不同的社区和移动设备之外,特别是在 serverless 领域 Swift 得到了快速应用” ,Buttfield-Addison 称“令人惊叹的 web 开发框架,比如 Kitura,以及各种令人惊叹的小众框架... 比如 SwiftPlot,它是 Python 非常普及的 Matplotlib 库的 Swift 原生版本。”
变化是不可避免的。随着编程语言继续倾向于针对云,微服务,大数据和机器学习中的新趋势进行优化,每种语言及其生态系统将继续以自己独特的方式去适应这个趋势。到 2020 年,一些编程语言的重大发布即将到来:C++ 20 将在今年夏天发布, Scala 3.0 预计将在 2020 年底发布。但有一点可以确定的是,即使是编程语言的极小改变,也可能给程序的日常生活带来巨大的变化。
原文链接:
https://www.oreilly.com/radar/where-programming-languages-are-headed-in-2020/
本文为CSDN翻译文章,转载请注明出处。