进入新的十年,各行各业都在进行盘点与展望。SegmentFault作为面向开发者社区和科技行业的垂直媒体,一直关注行业的发展和相关趋势。近期,陆续整理了各大平台和社区对于技术领域的预测和盘点。今天继续给大家粗略翻译一下(原文地址在文末,粗略翻译仅供大家初步理解,建议阅读英文原文)O'Reilly'sprogramming语言发展观-《Where programming languages are headed in 2020》。盘点和分析由数字编程专家整理,包括很多他们对一些经典编程语言和新兴编程语言的思考,以及基于行业的分析。Python今年Python最大的新闻是Python之父GuidovanRossum正式退休,并将Python交给了Python指导委员会。迄今为止,本次权力交接并未出现“阵痛”,正如《Python Crash Course》的作者埃里克·马特斯所认为的那样,这很正常,因为“圭多仍将在社区中长期维持自己的角色””此外,对Python2.7的支持将于2020年结束,这可能会让那些坚持使用Python2.7的人生活困难。无论如何,Python仍然是数据科学的首选语言。对于Matthes来说,Python令人兴奋的方面之一是“各种有趣和重要的项目都来自一个长期有意识地建设的社区。”Python指导委员会成员和CPython核心开发人员CarolWilling也庆祝了Binder服务等项目,该服务促进了可重复研究在JupyterNotebooks中创建可执行环境,尤其是当它们超出最初目标时。她指出,“去年许多Python会议的教学研讨会和教程中广泛使用了活页夹。”Willing还大声疾呼CircuitPython和Muprojects,问道:“谁不喜欢硬件、闪烁的LED、传感器,Mu的用户友好型e对成人和儿童来说不是很好吗?ditor?”Java今年对Java来说主要是好消息。BenEvans解释说:“再一次,关于Java消亡的谣言是平台批评者的一厢情愿。“但这并非一帆风顺。正如我们去年指出的那样,Java11于2018年9月发布并带来了许多新功能,其中包括许多在使用容器方面具有明显优势的重要功能。但是,根据JetBrains的一项调查,这个新版本的推出并没有导致广泛采用,超过80%的开发人员仍在使用Java8。Evans想知道:“这是否意味着人们不像我们所知道的那样在容器中运行Java?或者人们只是没有意识到在容器中使用Java11的好处?“尽管采用速度缓慢,但Java的六个月发布节奏仍在继续发展——Java12于2019年3月发布,Java13于9月发布。根据TrishaGee的说法,它真正开始显示其价值:每个版本都是小但可预测。虽然它们并不都有令人兴奋的新语言变化,但您可以看到该语言正在稳步向前发展。此外,它支持这种预览功能的想法,我认为我们切换表达式工作得很好-开发人员必须尝试该功能并根据感觉提供真实的反馈,而不是抽象的概念反馈想法。在Java13中,switch表达式的语法略有改进更改,这是可能的,因为它是一个预览功能,并且有没有固定的设置。另一个惊喜发生在2019年,当时Oracle将JavaSE迁移到基于订阅的模型。然而,正如《Learning Java》的合著者MarcAsLoy指出的那样,“随着对OpenJDK的热情高涨,整个Javacommnity正面临一个“不幸”的变化。”对于刚刚到来的2020年,埃文斯建议2020年可以继续关注2019年的发展趋势:我们将如何处理ProjectValhalla的生产版本?提供模式匹配和代数数据类型(ProjectAmber)增量会不会策略有效吗?Quarkus会兑现其早期粉丝的承诺和信念吗?2020年会是Kotlin在Android领域实现重大飞跃的一大步吗?这是激动人心的时刻,我们正在过渡到新事物,而且很多Kotlin谷歌在2019年5月宣布Kotlin现在是Android应用程序开发者的首选语言,这表明该语言已经被广泛采用。虽然很多Android开发者还没有完全迁移到Kotlin,但是迁移大家都知道它提供的好处。《Head First Kotlin》作者Dawn和DavidGriffiths分享了Kotlin崛起背后的一些原因:作为一种由IDE公司创建的语言,Kotlin拥有良好的工具支持水平也就不足为奇了。一种用于代码契约的实验性DSL,使开发人员能够提供有关代码行为方式的保证。你的函数有副作用吗?是否保证返回非空值?代码契约允许您做出这些承诺,编译器可以使用它们来放宽编译时检查。现在,不同Kotlin平台之间的壁垒也正在被打破。“expect”/“actual”限定符使开发人员更容易编写跨Java/Native/JS环境兼容的代码。序列化支持意味着更容易将JSON数据转换为Kotlin对象,反之亦然。希望看到Kotlin持续惊人的增长——而不仅仅是在Android中。JetBrains开发者倡导团队负责人HadiHariri指出Kotlin/Everywhere的成功,让人们在Android、谷歌云平台和多平台开发中学习Kotlin的基础知识和最佳实践,并以数据为例:“来自5月至11月,我们成功地吸引了86个国家/地区的30,000人。KotlinConf在2019年连续第三年售罄,与会者超过1,700人。这尤其表明开发人员对Go语言的兴趣和采用正在增长。”当Gophers回顾2019年时,他们可能会想起尝试提案的故事。Go开发人员兼作者JonBodner解释说:关于Go最常见的抱怨之一是错误处理过于冗长。因此,在6月初,Go核心开发人员建议添加一个名为try的新内置函数。GitHub问题现已开放以讨论此新功能。一个月内,有近800条评论,其中大部分是负面的。反对新特性的人认为这种变化使代码过于“神奇”并且模糊了逻辑流程。在审查反馈后,Go团队将提案标记为完成并于7月16日关闭。这个过程值得注意的不是功能的失败,而是,正如博德纳所描述的那样,“过程发生的方式:一个功能是提出后,讨论受到尊重,但很多人觉得这种变化不符合Go的风格。最后,管理语言的人决定尊重大多数人的意见。这就是开发人员谈论社区时的意思。2020年应该会明确Go的合约规范,即泛型提案。根据Bodner的说法,“Go似乎对泛型采取了一种与其他语言略有不同的方法,但这种方法非常适合Go的习语。”希望它将保持Go的一贯风格,同时添加开发人员认为在其他语言中有用的功能.Rust我们采访了《Programming Rust》的合著者JimBlandy,了解他对Rust在2019年进展的看法观点发生了怎样的变化。去年,他指出,“Rust长期以来一直以一种或另一种形式支持异步编程,但异步函数为这种代码提供了语法,这是一个重大的改进。他改进Rust语法的希望实现了吗?是的,最终:Brandy解释说async/await语法直到2019年11月7日发布的1.39版本才变得稳定。不过,他对Rust在2020年对Rust意味着什么寄予厚望:“将异步集成到语言中可以让借用检查器了解你在做什么,因此异步代码看起来像惯用的Rust。”Rust社区也对WebAssembly感到兴奋,它今年成为C/FFI的理论替代品,适用于需要便携式、高性能模块的生态系统。正如Rust专家NathanStocks指出的那样:“你也可以使用轻量级沙箱!”印象最深的是“有多少理论被成功地原型化和证明了”。之前,我看到的WebAssembly纯粹是作为一个编译Target来在浏览器中运行非JS语言的代码。能够从任何语言使用webassembly除了浏览器令人不寒而栗。Swift去年Swift中发生的最大事件是SwiftUI的发布,这是Apple用于在所有Apple设备上设计用户界面的最新框架,以及TensorFlow的Swift版本。正如TimirahJames所解释的那样,SwiftUI的声明性特性引起了开发人员的广泛关注,并被认为是UIKit的未来继承者。至于TensorFlow的Swift,Buttfield-Addison称其为“Swift的基本新用途”。“Swift一直是一种出色的应用程序开发和系统编程语言,也是一种用于Web和后端开发的新兴语言,但现在,有了SwiftforTensorFlow,它也是一个强大的ML框架,”他解释道。原因如下:SwiftforTensorFlow由包括Swift的原始创建者ChrisLattner在内的团队开发,并提供(或将在完成后提供)机器学习和数值计算所需的一切。最令人惊讶的是,Swift的底层编译器框架和设计为具有自动可微分函数的可微分编程提供了一流的支持。完全语言可微分的编程将实现以前不可能的事情:最好的例子是在构建神经网络时能够使用标准编程调试器逐步完成反向传播和调试派生类。SwiftforTensorFlow还为Swift提供完整的Python支持,使数据科学家能够将他们需要的有用且熟悉的Python框架与干净的Swift代码混合搭配。展望未来,James和Buttfield-Addison都很高兴看到Swift的新方向,James指出“Swift已经在移动社区之外的不同社区和技术栈中得到快速采用,尤其是在无服务器领域,”Buttfield-Addison大声疾呼“像Kitura这样令人惊叹的Web开发框架,以及各种用于特殊领域的令人惊叹的框架……比如SwiftPlot,它是Python中无处不在的Matplotlib的Swift原生版本。”未来是什么样的?变化是不可避免的,随着编程语言继续倾向于针对云、微服务、大数据和机器学习的新趋势进行优化,每种语言及其生态系统将继续以自己独特的方式进行调整。有些语言可能会在2020年有大的发布,比如C++20会在今年夏天发布,Scala3.0预计会在2020年底发布。但很显然,即使是最小的变化也会在程序员的思维中引起巨大的波澜日常生活。
