写点什么

老而不死的三种编程语言

  • 2019-10-30
  • 本文字数:4380 字

    阅读完需:约 14 分钟

老而不死的三种编程语言

导读:


在软件世界中,铁打的二进制,流水的语言。从计算机诞生至今,不知诞生了多少门编程语言。译者查了一下 Wikipedia,好家伙,名单上足足有几百种!但并不是所有的语言都能长期占据 Top 10。今天我们来讨论长期霸榜的三种编程语言:Java、JavaScript 和 C,因为经常有人们说这三种语言已经死了,即使没死也是快要死了。然而事实究竟如何呢?实际上,这几门语言就像胡杨一样,特别是 C 语言,简直就是编程语言界的胡杨:胡杨生而千年不死,死而千年不倒,倒而千年不腐……


正文:


最近,我仔细研究了当某种编程语言、工具或趋势被宣布“死亡”时,它到底意味着什么。我认为,从技术行业的不同方面来谈论死亡,似乎既是个人作为开发者的身份和价值观的信号,也是对特定事物现实的准确描述。


为了关注这些争论和对话在实践中是如何发挥作用的,我决定研究一下三种编程语言,每一种语言都被人们描述为已经死亡或即将死亡。我的发现可能并不会让你感到惊讶,但它仍然突出了这一点:即个人或社区对一种语言的不同意见反映了他们作为软件工程师的需求与挑战。

Java 死了吗?

就生存、繁荣或死亡而言,最大的争论之一就是 Java 。之所以如此,原因有很多。最大的一个简单事实就是它被广泛使用。由于有如此多的开发人员出于各种各样的原因使用这种语言,因此在开发者社区发现如此多样化的意见,也就不足为奇了。


另一个原因就是,Java 作为一种编程语言,已经非常成熟。无论它是在衰退还是在消亡,都仍然是一个备受争议的话题,但肯定不能说它正以任何显著的速度出现或增长。


Java 现在是行业主流的一部分。你可能会认为,它有望能支撑下去。但是,当你考虑到这是一个不仅仅包含变革和创新的行业,而是一个依赖于其价值的行业时,你就会开始发现 Java 占据有点奇怪的空间已经有一段时间了。

为什么人们认为 Java 已经死了?

这几年来,Java 一直正在衰落。如果你去看一下 TIOBE 指数,就会发现,在这十年的中后期,它已经下降了几个百分点。例如,从 2016 年 5 月到 2017 年 5 月,该语言下降了 6%——这表明它正在被其他编程语言所取代。


Java 衰落的另一个原因是 Kotlin 的崛起。尽管长期以来,Java 一直是 Android 开发的定义语言,但近年来,随着 Kotlin 被更广泛地采用,它的地位受到了冲击。正如 Medium 的 2018 年的这篇博文所指出的那样:用 Java 开始一个新的 Android 项目并不一定是个好主意。


Java 的威胁,不仅来自 Kotlin,也来自 Scala。Scala 是另一种基于 JVM(Java 虚拟机)的编程语言。它既支持面向对象编程,也支持函数式编程,与 Java 相比,它具有许多性能优势,并且被广泛用于从机器学习到应用程序开发的各种用例中。

Java 没有死掉的原因

尽管 TIOBE 指数显示,Java 是一门正在衰落的语言,但它仍然稳居榜首。从 2016 年到 2017 年间,这个数字可能会大幅下降,但最近下降速度有所放缓:在 2018 年 10 月到 2019 年 10 月之间,它只下降了 0.92%。


从这个角度来看,那些认为 Java “已死”或“快死了”的观点,实在很奇怪。从事实上来说,Java 是地球上使用最广泛的编程语言。当你考虑到所有其他一切因素时,庞大的社区意味着更多的支持,一个由框架、库和其他工具组成的广泛生态系统(注意,Spring Boot 的增长是对微服务革命的回应)。所以,尽管 Java 的年龄看起来像是反对它的一个标志,但这也是为什么它仍然有很多生命力的原因。


在更基本的层面上,Java 是无处不在的,它被广泛应用于各种应用程序中。只要 Java 开发的应用程序还在使用,那么,我们就可以说,Java 仍然是有生命力的。这也意味着,Java 开发人员的需求还会持续很长一段时间。

结论:Java 究竟是死的还是活的?

Java 是非常活跃的,而且活得很好。但也有一点需要注意的是,归根结底,它并不是一种能够帮助你以创造性或创新的方式来解决问题的语言。它可以让你构建事物并启动项目,但它可以说是一个坚实的基础,你需要在这个基础上积累更多的专业知识,才能成为一名真正成功的工程师。

JavaScript 死了吗?

尽管 Java 可能是世界上使用最广泛的编程语言,但 JavaScript 是另一种无处不在的语言,它引发了各种各样的观点和争论。


其中原因之一是,有些人非常讨厌 JavaScript。人们对 Java 的一致看法是,它很好;但对 JavaScript 来说,情况就不是那么稳定了。


这很大程度上是因为 JavaScript 的发展。在很长一段时间里,它在 Web 开发领域一直处于 PHP 之后的位置,因为它是如此的不稳定,于是开发人员对它的态度有些轻蔑,好像它不是一种“真正的语言”一样。


不过,随着时间的推移,这种情况发生了变化,这在很大程度上要归功于 HTML5 和改进的 ES6 标准,但仍然有许多怪癖是开发人员所不喜欢的。特别是,如果你已习惯 Java 或 C 的话,那么 JavaScript 就不是什么好对付的东西。与那些语言不同,JavaScript 是一种解释性的编程语言,而不是编译的编程语言。


那么,为什么人们会认为 JavaScript 已经死了呢?

为什么人们认为 JavaScript 已经死了?

人们为什么会认为 JavaScript 已经死了,这里面有很多原因。一方面,模板、开箱即用的 CMS 和电子商务解决方案的兴起,意味着使用 JavaScript 进行“传统”的 Web 开发将变得不那么重要。从本质上讲,这种想法认为,进入的门槛更低,这意味着使用 JavaScript 进行 Web 开发的人将会更少。


另一方面,人们将 WebAssembly 的出现视为敲响了 JavaScript 的丧钟。WebAssembly(简称 Wasm)是“基于堆栈的虚拟机的二进制指令格式”(来自该项目的网站),这意味着代码可以被编译成可由浏览器读取的二进制格式。这意味着你可以将高级语言(如 Rust 等)带到浏览器中。那么,在某种程度上,你可能会认为 WebAssembly 将导致语言的发展,而这些语言在目前看来是非常小众的。

JavaScript 没有死掉的原因

首先,让我们反驳上面的观点:首先,开箱即用的解决方案永远也不会取代 Web 开发人员。有人需要构建这些产品,即使组织选择使用它们,JavaScript 仍然是定制和重塑专用解决方案的语言,它非常有价值。


虽然开始一个 Web 项目并运行的门槛可能越来越低,但它肯定不会扼杀 JavaScript。你甚至可能会争辩道,随着人们开始学习网络的一些基本元素,网络资源也在不断增长。


关于 WebAssembly 的问题是:这对 JavaScript 来说,是一个稍微严重的威胁,但重要的是要记住,WebAssembly 从来就不是为了简单地模仿现有的 JavaScript 用例而设计的。正如这篇有用的文章所解释的那样:


“……它们解决了两个不同的问题:JavaScript 为 Web 和 DOM 添加了基本的交互性;而 WebAssembly 增加的是在 Web 上拥有健壮的图形引擎的能力。WebAssembly 并不能解决与 JavaScript 所面临的相同问题,因为它不了解 DOM。除非解决这一问题,否则它不可能取代 JavaScript。”


WebAssembly 甚至可以重新唤起人们对 JavaScript 的信心。通过解决许多开发人员抱怨的一些问题,这意味着,这门语言可以用于更适合用它来解决的问题。


但除此之外,还要有很多其他的原因,使得 JavaScript 离“死亡”还早。React 越来越受欢迎,Node.js 也是如此,尤其是 Node.js 影响很大,因为它将 JavaScript 的功能从浏览器扩展到了服务器。

结论:JavaScript 究竟是死的还是活的?

无论人们多么讨厌 JavaScript,它仍然非常活跃,活得好好的。虽然有如此广泛的工具生态系统,它的使用方式可能也会改变,但这种语言将会留下来,并且有着光明的未来。

C 死了吗?

C 是最古老的编程语言之一(它即将迎来 50 岁生日)。C 是这样一种语言,帮助我们构建了今天所知的软件世界的基础,包括几乎所有的操作系统。但是,尽管它是技术版图的基本组成部分,但仍然有人抱怨说,C 已经不能胜任这项工作了……

为什么人们认为 C 已经死了?

如果你想了解关于人们对 C 的不同意见,你可能比 TechCrunch 上的这篇文章做得更糟。工程师 Jon Evans 解释道,“C 已经不再适合 C 所构建的这个世界了。”


“C 已经变成一个怪物。它为用户提供了太多的火炮,结果是他们搬起石头砸自己的脚。丰富的经验告诉我们,要编写大量没有安全漏洞的 C 代码是非常困难的,几乎是不可能的。”


安全方面的担忧也反映在其他地方,一位作者认为,“没有人在创造新的不安全语言。不能说这是因为 C 和 C++ 是完美的,这不合理;即使是最坚定的拥趸也知道,它们也有很多缺点。人们之所以不去创造新的不安全语言,是因为没有这方面的需求。未来是安全的语言。”


而 Rust 的兴起增加了这些担忧:有些人认为,对于更现代、更安全和更易用的底层系统编程来说,Rust 可能是 C 和 C++ 的替代品。

C 没有死掉的原因

也许,C 之所以没有死掉的最明显的原因是,它对我们今天所用的如此之多的软件来说,都是不可或缺的。我们谈论的不仅仅是标准的遗留系统;C 语言在操作系统内部,允许我们与软件和机器进行交互。


经常有人反对 C 语言的一个常见理由是,Web 正在接管一切,就好像软件总体上正在提升抽象级别,这使得机器级别的语言几乎是多余的一样。除了那种愚蠢的说法(即网络是建立在什么基础之上)之外,随着物联网和嵌入式计算的快速发展,这只会让 C 语言变得更加重要。


让我们再看看 TIOBE 指数:C 排在第二位,与 2018 年 10 月的位置相同。就像 Java 一样,尽管谣言满天飞,它还是保持着自己的地位。此外,与 Java 不同的是,C 语言的评级实际上在过去一年中有所上升。可以肯定是,这一数字并不大,只有 0.82%,但它可靠的表现表明,它离死亡还很远。

结论:C 究竟是死的还是活的?

C 活得很滋润呢。当然,它已经很老了,但它隐藏在我们现有软件的基础设施中实在太多了,以至于人们不能简单地将其丢弃。


这并不是说 C 语言没有缺陷。从安全性和可访问性的角度来看,我们可能会看到像 Rust 这样的语言逐渐流行开来,以应对 C 语言带来的一些挑战。


但同样需要考虑的一点是,对于那些希望深入了解编程的人来说,C 语言到底有多重要。即使它不一定具有广泛的用例,但它可以让开发人员和工程师深入了解代码在软件栈的不同级别上是如何工作的,这意味着 C 语言将永远是一种需要关注的语言。

结论:在作出判断之前,听取人们对编程语言的多种观点

从所有这些得出的明显结论是,人们不应该再如此固执己见。但我并不认为这样是正确的做法:人们应该继续坚持己见,保持争论。


势利和排斥是没有立足之地的,但任何人如果对某物的价值有看法的话,他当然有表达出来的自由。它可以帮助其他人以一种不可能通过文档或更典型的学习内容的方式来理解语言。重要的是,我们要以批判的眼光来看待观点:这个人想表达的是什么?他们的背景是什么?他们想干什么?


毕竟,有些事情远比争论什么东西是死还是活重要得多:构建伟大的软件,我们可以为成为其中一员而自豪。


作者介绍:


Richard Gall,Packt Hub 的联合编辑。对政治、技术文化以及软件和商业如何相互改变感兴趣。


原文链接:


3 programming languages some people think are dead but definitely aren’t


2019-10-30 11:5733346

评论 4 条评论

发布
用户头像
少了一种语言,那就是python,你说的三种语言里,只有C比它老,你看看现在python是不是大热,就知道,老而不死,不是很正常的吗,倒是有些什么VB啊之类的,年纪轻轻就。。。
2019-11-09 13:12
回复
用户头像
js可能会被ts取代吧
2019-11-04 08:45
回复
会同时存在,ts是超集,健壮性强,但是开发效率不高。小型应用js几行代码搞定的那种,ts至少得double一下。
2019-11-07 11:30
回复
用户头像
这些老不死的语言,我看很可能是老当益壮啊……
2019-10-30 18:06
回复
没有更多了
发现更多内容

从互联网“后来者”到“引领者”:这场IPv6大会上,我读懂了中国式创新

脑极体

程序员常用的工具软件推荐

程序员小呆

Java c++ 程序员 架构师 Go 语言

会声会影和剪映在音频处理功能上的比较

懒得勤快

惊了!网易架构大牛熬夜手敲千页网络协议笔记,竟在Github上标星百万!

Java 架构 面试 程序人生 编程语言

Qcon 免费报名 | 融云「实时通信技术专场」议题抢鲜看

融云 RongCloud

开发者 通信云 场景化

网易云信 NERTC 高清画质体验之 H.265的工程实践 | 体验共享技术专题

网易云信

Java 测试 音视频 视频

J2PaaS 低代码平台,正式发布开源版!

J2PaaS低代码平台

低代码 零代码 低代码开发 低代码开发平台 无代码平台

极客架构营2期模块5作业

Ping

2022年最新Java小白学习路线总结,从零基础跟着学习不掉队(PDF+视频分享篇)

Java 编程 程序员 计算机 java面试

为什么网络 I/O 会被阻塞?

编程 架构 操作系统 计算机

保持高效学习的 7 个方法

Phoenix

学习方法

Python代码阅读(第36篇):列表偏移

Felix

Python 编程 Code Programing 阅读代码

JS的深浅复制,原来如此!

华为云开发者联盟

js 序列化 深复制 浅复制

我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer

Java 编程 程序员 架构

EMQ X VS RabbitMQ:两大消息服务器 MQTT 性能对比全解(下)

EMQ映云科技

RabbitMQ 物联网 IoT mqtt emq

网络安全产品之堡垒机应用于金融行业案例讲解

行云管家

云计算 网络安全 等保 堡垒机

这还不够全?阿里P8架构师耗时八年时间才整理出来这“Java核心知识PDF(Java高岗)

Java 程序员 架构 面试 后端

理论+实例,带你掌握Linux的页目录和页表

华为云开发者联盟

Linux 内存管理 寄存器 页目录 页表

马萨卡!阿里大佬珍之若宝的最强高并发pdf,竟然被上传GitHub开源

Java 架构 面试 编程语言

阿里P8手抄本惨遭泄露,并出现病毒式传播,致28人斩获大厂offer

收到请回复

Java 面试 阿里 大厂Offer

堡垒机提供的运维报表有什么用?怎么简单解释?

行云管家

运维 堡垒机 IT运维

英特尔举办第十四届物联网峰会,携手中国生态伙伴迈向融合边缘新时代

科技新消息

GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

Java 架构 面试 程序人生 编程语言

相约 DTCC 2021 | Tapdata 受邀分享:如何打造面向 TP 业务的数据平台架构

tapdata

2021金九银十阿里Java岗7轮技术面经历,险幸上岸

Java 程序员 架构 面试 计算机

手把手带你做LiteOS的树莓派移植

华为云开发者联盟

树莓派 系统 LiteOS arm 树莓派移植

Zookeeper 集群部署的那些事儿

牧小农

zookeeper

Android 资源溢出崩溃轻松解

字节跳动终端技术

字节跳动 移动开发 Mars 火山引擎 MARS-APMPlus

Java集合核心内容之葵花宝面,搞定90%以上的技术面!建议收藏

程序员小呆

Java 程序员 架构师

【直播回顾】5步实现精细化用户触达,助力业务增长

极光JIGUANG

消息推送 用户触达

老而不死的三种编程语言_语言 & 开发_Richard Gall_InfoQ精选文章