写点什么

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:116280

评论

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

GitHub和 Gitee联合编写最新版20w字Java全栈面试手册,简直无敌!

Java你猿哥

Java java面试 SSM框架 Java面经

Zabbix5.0配置企业微信告警

A-刘晨阳

Linux zabbix 三周年连更

简单的视频格式转换器:MacX Video Converter Pro中文版

真大的脸盆

Mac Mac 软件 视频格式转换 格式转换器

最佳云转码,腾讯云MPS夺得MSU编码器大赛21项第一

科技热闻

DLRover:云上自动扩缩容 DeepRec 分布式训练作业案例分享

AI Infra

程序员 AI 互联网 DLRover

FastAPI入门

Liam

程序员 开发工具 API FastApi API 开发

AutoCAD2024最新版介绍及autocad 2024系统要求

互联网搬砖工作者

前端沙箱利用这些特性实现代码的隔离与限制

没有用户名丶

Solr和Elasticsearch,搜索框架怎么选?

会踢球的程序源

Java

chrome调试技巧(一)

知心宝贝

前端 后端 调试 三周年连更

用友iuap平台一站式服务,助力央国企推进数智化转型

用友BIP

阿里大神整理的Java核心知识点和面试官常问到的知识点,压压惊

会踢球的程序源

Java 面试 求职 java面试 Java构架

Python本地SQL文件对比工具

YUKI0506

Python 文件对比 对比工具 difflib

浪潮海岳低代码平台inBuilder开源社区版正式发布

科技热闻

站群SEO是什么意思?站群SEO怎么做效果才好?

海拥(haiyong.site)

三周年连更

这是你的云-云起实验室

六月的雨在InfoQ

开发者 实验室 三周年连更 云起实验室

国内Google翻译失效的解决方法(MAC/WIN)

互联网搬砖工作者

升级企业数智化底座,构建数智连接全能力

用友BIP

技术大会 用友iuap 用友技术大会

共享电动车生产厂家!共享电单车厂商

共享电单车厂家

共享电动车厂家 共享电单车厂商 智能电动车生产

集简云开放平台是什么?

集简云开放平台

什么是企业数智化的创新加速器?

用友BIP

技术大会 用友iuap 用友BIP 用友技术大会

企业全面数智化转型,国产替代成为安全保障

用友BIP

技术大会 用友iuap 数智化转型 用友BIP 用友技术大会

苹果手机里面的udid怎么查出来

雪奈椰子

BT!GitHub开源阿里Java性能调优百宝书仅3小时,标星竟超过30k

Java你猿哥

Java JVM 性能调优 SSM框架 Java工程师

硬核!万字神文精解高并发高可用系统实战,分布式系统一致性文档

做梦都在改BUG

Java 高可用 高并发 分布式一致性

ChatGPT无需API开发连接第三方系统,让舆情自动监控

集简云开放平台

数据集成 数据集成平台 Chat

「云原生」Elasticsearch + Kibana on k8s 讲解与实战操作

会踢球的程序源

Java elasticsearch Kibana

知你懂你,聪明得简直不像一台车,问界M5智驾版重磅升级鸿蒙3

Geek_2d6073

听说谛听闹退休?感知网络接班啦!

脑极体

感知网络

如何通过Java应用程序在PPT中创建SmartArt图形

在下毛毛雨

Java PowerPoint 添加艺术图形

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