相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?


相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?

文章插图
 
2022年 Stack Overflow开发者调查结果已经正式公布 。每当这个时候,开发者们都有一肚子的话要吐槽或表扬,开发者 Adam Gordon Bell 也不外如是 。Bell 最关注的是最受欢迎和最不招人待见的编程语言 。我们先简单看下调查结果:
 
  • 最受欢迎的高人气编程语言(2022):
 
Rust,Typescript,Python/ target=_blank class=infotextkey>Python,Go,C#,Kotlin,JAVAScript
 
  • 最不受待见的高人气编程语言(2022)
Ruby,C++,Java,php,C
 
为什么有的语言受欢迎、有的被讨厌 
在上一次开发者调查报告时,Bell 提到当人们喜爱一种新的编程语言时,大家或多或少会抱有些许偏见,即认为新语言应该拿来开发新项目、旧语言则用于开发旧项目 。但这明显忽略了另一个现实:语言工具本身也在不断改进 。因此,Bell 写了一篇文章来论述了自己的观点,并将编程语言被喜欢的原因归结到了工具性发展上 。
 
以 Go 和 Rust 为例,业界关于两者的争论从未停止,但两种语言的开发者工具在体验上非常相似:它们都非常现代,无论是测试、模糊测试、打包还是校验,它们都能提供相应的最佳工具标准包 。Bell 认为,Go 和 Rust 跟不受待见榜单中那些语言的最大区别,并不在于语法细节,而是工具选项和生态系统 。正是如此,二者才能双双进入最受喜爱语言名单 。
 
Bell 认为,随着时间的推移,编程语言的工具和开发者体验正在改善,但这种改善在新语言中体现得更加明显 。总体来说,在创新成果出现之后,新语言会更快采用并加以标准化,最终提供超越老牌语言的效果 。随着这类增量的积累,曾经的王牌语言就会显得陈旧而腐朽 。
相比高人气的 Rust、Go,为何 Java、C 在工具层面进展缓慢?

文章插图
 
“为什么不能交个朋友?”
 
网友 “crashorbit”指出了实际开发中存在的问题 。“大多数从事系统工作的人都是短期的承包商,他们不了解问题所在,并且在交付了一个测试不佳的系统后很快就离开了 。可能忽略了版本控制、自动化测试、文档更新、发布工程和预期的系统开发生命周期的其余部分 。”
 
crashorbit 表示,中层管理者不懂系统工程,高级管理人员更感兴趣的是“完成”事情,而不是拥有可持续的系统工程实践 。“坦率地说,我们很难区分一个设计良好的信息系统和一个基本可以工作但‘大风一吹’就会失败的系统 。”
 
每年从事“软件工作”的人数都以几个百分点的速度增长 。他们中的大多数人在非常垂直的环境中工作,经常在自己的桌面上编写电子表格或杂乱无章的应用程序 。一些人编写的“脚本”只是做简单的事情 。或者使用他们不理解的“机器学习”工具产生具有误导性的结果 。
 
“我们以这种方式创造即时遗产 。没有模块化、没有修订控制、没有部署策略,也没有灾难恢复计划 。开发人员早已不在,更不用说系统工程师了 。这就是我所说的‘传统阻力’的意思,这就是这个行业如此缓慢的原因 。” crashorbit 表示 。
 
开发者“fuddlesworth”表示自己所在的公司就已经被 React 16 “困住”,因为整个公司的核心 UI 组件都在使用 Enzyme 进行测试,一旦转变就要改动成千上万个测试 。“我们不能再根据 React 来更新任何组件了,所以没有 bug 修复、新特性、性能改进等等 。”
 
开发者“alexiooo98”则认为,更好的工具当然非常受欢迎,但仅凭这个并不能完全解释为什么有些语言受到喜爱,而有些则令人恐惧 。比如,(现代)PHP 有很好的工具,但令人恐惧 。Python 的包管理器环境非常混乱,然而 Python 很受欢迎 。
 
下面是 Bell 文中关于编程语言发展差异的详细描述,我们进行了翻译并做了不改变原意的些许修改 。请注意,下文中提到的创新跟语言的语法或语义无关 。
 
标准库 
我不确定这到底是好事还是坏事,但扩展标准库确实让开发者无需安装任何第三方库,就能直接享受到 PHP、Python 和 Go 的大量现成功能 。它们大部分都带有 json、http 客户端和服务器,甚至包括数据库访问机制 。


推荐阅读