AICon上海|与字节、阿里、腾讯等企业共同探索Agent 时代的落地应用 了解详情
写点什么

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

评论

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

小程序容器可以发挥的价值

Geek_99967b

小程序 小程序容器

AI金榜题名时,MLPerf榜单的份量究竟有多重?

脑极体

【刷题记录】1. 两数之和

WangNing

7月月更

如何组织一场实战攻防演练

穿过生命散发芬芳

攻防演练 7月月更

国内低代码开发平台靠谱的都有哪些?

AIRIOT

低代码 物联网 低代码,项目开发

华为云ModelArts文本分类–外卖评论

逝缘~

深度学习 华为云 7月月更

从 1.5 开始搭建一个微服务框架——调用链追踪 traceId

悟空聊架构

日志 链路追踪 traceId 悟空聊架构 7月月更

刷个算法,结果第一题就蚌埠住了~~

为自己带盐

算法 力扣 7月月更

python 函数二三事

AIWeker

Python python小知识 7月月更

7000+字图文并茂解带你深入理解java锁升级的每个细节

华为云开发者联盟

Java 开发 华为云

【愚公系列】2022年7月 Go教学课程 004-Go代码注释

愚公搬代码

7月月更

systemd-resolved 开启 debug 日志

程序员与厨子

ubuntu 运维 DNS systemd-resolved

XaaS 陷阱:万物皆服务(可能)并不是IT真正需要的东西

雨果

云服务 xaas DaaS 本地服务

使用 RepositoryProvider简化父子组件的传值

岛上码农

flutter ios 安卓 移动端开发 7月月更

如何开发引入小程序插件

Geek_99967b

小程序插件

中文版Postman?功能真心强大!

Liam

Java 开发者工具 Postman 后端开发 程序员进阶

不要再手动批量替换了,使用python AST模块批量替换

阿呆

Python AST 批量替换

场景化面试:关于分布式锁的十问十答

面试官问

分布式锁

微服务链路风险分析

阿泽🧸

7月月更 链路风险分析

Java方向~~0基础小白如何快速脱离0offer的苦海!

KEY.L

7月月更

详细页返回列表保留原来滚动条所在位置

小恺

7月月更

集合处理的利器

技术小生

java8 7月月更

让开发效率飞速提升的跨端方案

Geek_99967b

小程序 跨端 小程序容器

MMAP

北洋

Andriod 7月月更

牛客java选择题每日打卡Day7

京与旧铺

7月月更

分布式算法入门之 Paxos 算法

宇宙之一粟

Basic paxos 7月月更

开创人工智能产业新未来!7月8日昇思生态论坛与你相约广州

科技热闻

一文读懂简单查询代价估算

华为云开发者联盟

数据库 后端 查询引擎

Ubuntu 20.04 安装 Chisel

贾献华

7月月更

Spring你牛个啥,我承认刚才说话我声音有点大

zxhtom

7月月更

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