首页 > 编程语言 >编程语言的重生

编程语言的重生

时间:2023-07-30 23:05:28浏览次数:41  
标签:社区 语言 编程语言 用户 Perl Fortran 重生


有些语言在技术迭代过程中被逐渐淘汰,而有些语言则以另一种形式“向死而生”。

那么,编程语言的“陨落”意味着什么呢?在我们近一步讨论之前,会对此进行解释。

编程语言可以用来编写计算机应用程序,和其它人类语言或文化一样备受潮流影响。所以,某种语言“陨落”并非无人问津,只是不再“热门”了。一般来讲,一门语言出现超过25年热度便会下降!
一、古老语言的向死而生

很多古老编程语言已不复存在或正在以另一种形式存活于世…原因五花八门…

1.被“后代”吃掉

虽然 Algol 语言已死,但是,它的“后代”仍存活于世,只是与原始版本不像了而已。Algol 的死亡很好地诠释了语言消亡的方式之一——被后代“吃掉”,然后“夺走”整个用户群。

“Algol 语言家族”包含 Perl 和 Delphi 这样的“远亲”,后逐渐演变出 C、C++、Visual BASIC 和 Java 等语言。

这些流行语言很久以前就“蚕食”掉了整个 Algol 开发者社区,尤其是较早出现的 C 语言,它非常受欢迎,使程序员不得不放弃使用 Algol。

2.用户和社区不多

而有些语言从未被用户真正关注过。FLOW-MATIC 由格蕾丝·霍珀创造,但从未被广泛使用过。许多语言消亡的原因也都是如此:用户极少、社区不多。

而 FLOW-MATIC 也已经转化成 COBOL。所以,它的小用户社区已变成COBOL 用户社区。这就是很多种语言消亡的原因:引入另一种语言,使社区变成新语言社区。

例如,C 语言用 BCPL 命名,使 BCPL 用户(极少)变成了 C 的用户。但是,BCPL 是由 Martin Richards 编写,并不是 C 语言。

归根结底,还是用户的流失削弱了语言。随着最后几个日常用户的弃用或寻找到其它种类的语言,它们就会逐渐“陨落”,变得越来越弱,直到基本灭亡,然后,完全消失。

3.社区里的信息

你在编程社区里发布信息之前需要使其具有连续性。糟糕的信息会吸引到你不想要的用户,也会排除掉那些想要关注你的用户。所以,改变社区里语言的内容是最危险的。这可能导致社区用户的逃离。你可以做出微小的改变,但在发布之前一定要权衡利弊。
二、什么能够加强一门语言的热度?

实践证明,某种语言的小众用户群能够强化特定语言在人们心目中的地位。R 语言很适合做统计,在相关社区中拥有不可撼动的地位,Java 则是通用语言…

自此以后,一切语言都转变成为了各式各样的小众语言。Python 擅长数学、科学和人工智能编程,而 Ruby 擅长处理动态的 Web 应用程序。JavaScript 则应用于浏览器编程。Fortran 曾经是通用的,而如今则应用于高等数学之中。

C 语言在操作系统和驱动程序中已退居次要位置。因此,它现在被排除在通用编程语言之外。而伴随着语言逐渐趋向于小众化,你必须避免它们成为真正的通用语言。
三、刨根问底:我们能从古老编程语言中学到什么?

你不禁会感觉到疑惑,究竟能从那些古老的编程语言中学到些什么?下面分别带你认识一下 4 种古老的编程语言 Fortran、Perl、LISP 和 COBOL。

1.Fortran(1956)

从头说起吧!一种语言一旦流行起来,便很少会彻底“消亡”,但往往会发生“变异”;例如,Fortran 的 2008 版本与原始版本差异巨大。

一直以来,Fortran 在科学界和数学界一直备受欢迎,现在依然是超级计算机的主要编程语言,比 C 语言快得多。因此,开发人员也一直在推动 Fortran 不断向前发展。

2.Perl(1987)

Perl 是一种功能丰富的计算机编程语言。最初是为文本处理而开发,现在用于各种任务,包括:系统管理,Web 开发,网络编程,GUI 开发等。

Perl 5 版本与 Perl 1、Perl 2 极其不同,甚至不该将它们视为同种语言。Perl 5 作为独立的语言已被分离出来,Perl 6 (现在被称为 Raku)也做出了大规模的更新。

从 Perl 5 到 Perl 6 更新花费了数年,而 Perl 6 作为一种新型语言正不断向前发展。

3.LISP(1958)

LISP则是一种通用的高级计算机编程语言,长期以来垄断着人工智能领域。另一种古老的语言是 LISP,它的很多“后代”语言主要包括:Guile、Scheme、Clojure 和 Racket。

在大多数情况下,当人们谈及 LISP 语言时,并不是指具体的、原始的LISP。与Perl 1 一样,LISP 的后代发生了重大变化,但它们仍是相似的语言。

这使得学习新的 LISP 语言并不难。因为它们彼此之间有很多共同点,你能够快速流畅地共享更大的开发者社区。

4.COBOL

COBOL 是一种被专用于商业的通用语言,又被称为企业管理语言、数据处理语言,是最早出现的高级编程语言之一,也是世界上第一个商用编程语言。数百万行的 COBOL 维持了大量银行基础设施的正常运行。

虽然这种语言十分小众,也并不存在多少 COBOL 程序员,但是它已经存在了几十年,基本上没有任何改变。为摆脱 COBOL,程序员经常将其翻译成另一种语言(基本上是 Java)实现。
四、好与坏:如何评价编程语言?

那么,你到底如何评价一门古老语言究竟是好还是坏呢?

Fortran 语言曾红过半边天,它的“生死”取决于功能。与 Fortran 不同,LISP 则凭借灵活性的优点逐渐被发展起来。

问题来了,编程语言的功能是否决定了语言的好坏呢?这其实得具体情况具体分析。

如果你问 Fortran 用户:“你需要语言变得更容易编程吗?”他们会说:“我不在乎!”而 LISP 用户也不会把语言的具体功能放在首要位置。BASH 用户需要的是兼容性、稳定性和易用性并希望它能够轻松排除 bug。

也许 Ruby 或 Python 当前的用户更关心语言的功能而不是表现力;也许用户最初是由于部署方式而选择了 PHP。而专业的 Laravel 用户可能需要语言更简洁、更具表现力,并愿意为此牺牲兼容性和可用性。
五、迭代速度:决定语言的发展方向

Python 在迭代过程中进行了极其缓慢和认真的更改,使其具备了出色的向后兼容性。而 Ruby 并没有向用户过多宣传向后兼容性,因此迭代速度快。

由于迭代速度有所不同,Python 赢得了 20 年后才需要运行程序的数学/科学社区,而 Ruby 则赢得了网络开发者社区,标准需要每 5 年改变一次。

顺便说一句,这并不意味着“Ruby 对而 Python 错”。这用事实阐述了使小众用户群变得更强大的另一种方式:“接受语言在某方面表现得好而在另一方面表现得不好,那么,你就可以击败在两方面都不出色的通用语言。”

有没有一种语言可以兼顾迭代速度与功能呢?这并非不可能。但它最终将不得不与迭代较快和较慢的后代竞争。

例如,Perl 就是如此。很久以前,Perl 是唯一的一种脚本语言。对于总结大块文本文件来说十分好用。但是现在,它要与 Ruby 和 Python 同时竞争。Ruby 占领了网络开发这个利基市场,而 Perl 终将失去这个市场。
六、写在最后:如何让编程语言屹立百年不倒

日历页随风飘扬,回首向来萧瑟处,编程语言已如耄耋老人般走过近 70 年的沧桑岁月。

自 1956 年美国计算机科学家约翰·巴克斯带领团队开发出世界上第一个高级编程语言 FORTRAN 开始,潘多拉魔盒就已被打开,也随之揭开了与计算机对话的神秘面纱。

虽然现在的编程语言五花八门、功能各异,那些古老的编程语言也并没有被世人遗忘,反倒是经过岁月的洗礼,变得愈发厚重。如今,编程语言和框架也被软件开发人员和商业人士津津乐道。

你可以读到美国著名程序员保罗·格雷厄姆(Paul Graham)对古老语言的高谈阔论。他认为:“古老语言的痕迹 100 年后仍将以可识别的形式与我们同在。”

人们常说:“一门语言要想在一百年后仍然可用,就需要具备良好的性能。”而我们更想知道,100 年后,哪些语言依然能够存在并且可用。

那么,你如何使编程语言能够“存活”百年,使其成为时代的纪念碑呢?在如此漫长的 100 年岁月里,人们会一直需要你提供的语言吗?

这需要你并不能只关注语言的特性和语法,更需要关注开发者社区。这对于 Java、Fortran、Ruby 或其它热门语言来说都是如此。

具体来讲,为保证一门语言的可持续性,你需要对社区中的开发者做出承诺,巩固它在程序员心目中的地位,如,特定的新功能是好还是坏?


标签:社区,语言,编程语言,用户,Perl,Fortran,重生
From: https://blog.51cto.com/teayear/6903599

相关文章

  • 需求前十的编程语言——唯独钟爱Python
    在过去的17个月(2022年1月至2023年5月)时间里,DevJobsScanner通过分析超1400万个开发人员职位,并从中筛选了有明确编程语言需求的职位,得出了在2023年需求量最大的8种语言。目前市场中需求最高的前八位语言分别是:1、JavaScript/TypeScript和以往一样,Javascript仍然......
  • 关于 ABAP 这门编程语言的编译器和解释器
    大家都知道ABAP是第四代高级语言。但我们有多少人能确定ABAP报表是如何执行的?它有编译器还是解释器,还是两者兼有?其实答案是:在某种程度上,它两者都有。详细说明一下:在ABAP程序执行之前,ABAP编译器必须将其翻译成一种中间语言。这种形式的程序,即以这种中间形式的程序被称为ABAP负载......
  • 重生之我是图论
    djstl:遍历到的点的ans一定是从小到大的   实际应用:修改建图,魔改算法之类次小生成树:最小生成树+枚举剩余边+树上倍增查max笛卡尔树:最大值所管辖的区间,看到“max{}”“对 排序”时可能会选择使用。bfs一般使用前提,边权全部相同dfs找欧拉路径记得倒叙输出(先继续dfs在输......
  • 用代码玩转迷你图:手把手教你用编程语言打造简洁易读的数据图表!
    前言迷你图(MiniChart)最早起源于流程图和组织架构图中的一种简化图形,用于表示一个大型数据集合中的趋势和变化。随着数据可视化技术的发展,迷你图也被广泛应用在各种类型的数据图表中,例如折线图、柱形图、散点图等。迷你图通常具有小巧、简洁、直观的特点,能够在有限的空间内有效地展......
  • 编程语言比拼之Java VS C++
    学Java还是C++?Java和C++都是非常受欢迎的编程语言,各有各的优势和适用场景。以下是对它们的简要比较:性能:C++通常被认为是一种更高效的编程语言,适用于对性能要求较高的应用程序,如游戏开发、嵌入式系统和高频交易等。C++具有更接近底层的控制能力,允许开发人员直接管理内存和硬件资源,以......
  • 关键词:合作博弈 纳什谈判 微网 能源系统 编程语言:matlab 主题:
    关键词:合作博弈纳什谈判微网能源系统编程语言:matlab主题:基于纳什谈判理论的风–光–氢多主体能源系统合作运行方法主要内容:以可再生能源制氢为特征的能源系统将是今后能源互联网建设的重要方向之一。该文针对风–光–氢多主体能源系统的合作运行展开研究。首先,考虑主体间的......
  • 关键词:储能容量优化 储能配置 微网 编程语言:matlab 主
    关键词:储能容量优化储能配置微网编程语言:matlab主题:基于混合整数规划方法的微网电池储能容量优化配置主要内容:本代码目的为实现微电网内电池容量的优化配置,目标函数为配置过程中整体的运行成本最小或者经济效益最大化,约束条件则包括相应的运行约束以及能量平衡约束等等,最后将......
  • 图形化编程教学视频(以scratch为编程语言)
    新版少儿编程scratch3.0从入门到精通系列教程p1:课前准备p2:电脑里的海洋馆p3:钢琴少年p4:索罗变身p5:航海王路飞p6:蟠桃盛宴p7:消灭蚊子p8:模拟家用电器p9:欢乐体育课p10:我要去火星p11:五官拼拼乐p12:影子分身术......
  • IDEA Plugin 开发编程语言
    参考:https://plugins.jetbrains.com/docs/intellij/custom-language-support-tutorial.html外部环境注意事项软件IDEACommunityEditionSourceFile插件Grammar-Kit\PsiViewer项目设置增加并设置项目SDK为IntelliJPluginSDKBNF注意事项Grammar-Kit能够独立调试BNF......
  • 20230707-编程语言的变量覆盖
    实现一个特性时,发现自定义的变量position覆盖了类的属性Position,近期发现始终存在的一个难以复现的窗口还原 BUG可能被因此修复了。也曾Debug过,但没能复现。问题的解决就是这样,只要你还惦记着,问题总会被解决。对于大小写不敏感度编程语言,尤其要注意大小写,所以我和我的朋......