【译文】我的懒惰而轻率的编程语言分类
有时,我也会像其他人一样,在一个电脑爱好者在线社区里发帖。在轻描淡写地谈论编程语言时,有时可以根据语言的表面或非表面特征将它们归为一类。这是从关于 Perl、PHP、Python、JavaScript 和 Ruby 等 “P 语言 “的共同特征的笑话开始的,但你也可以对其他语言进行分类。
这种分类并不代表最终的结论,也不能被不加批判地接受。在这里,我主要是想让它从我的脑海中消失,如果它能引发一场对话,那也不错。
P 语言
Perl、PHP、Python、Ruby、Javascript(最后两个有一个荣誉的 “P”)都是收集垃圾的 “脚本 ” 语言,让你在网络环境中快速完成任务。它们往往从一开始就很合理,但在边缘处却变得特立独行。很多时候,大量的标准库都是对 C 标准库、系统调用或其他平台库的封装。
C 语言
一位智者曾说过:”C++ 规范是编译器供应商的监管俘虏”。由于 “未定义行为 undefined behavior “做了大量荒谬的事情(比如从一个无限循环的结尾跑到下一个函数中),C 语言开发人员为了节省时间,把它缩写为 “UB”,同时威胁你说,他们可能会把你程序的结构部分也变成 UB。
此外,C 语言还有很多名字很好听的标准库函数,如 printf
、strcpy
和 gets
,它们可以控制你的程序计数器和内存的任意输入。有一些函数取代或淘汰了这些函数,但那些老掉牙的函数却不得不永远存在。例如,C++ 增加了访问 std::vector
和 std::array
的安全方法,但为了不破坏大家都在使用的不安全版本,将它们命名为 at
而不是 operator[]
。
J 语言
Java 和 C#,这些语言都有单独的编译步骤,编译成非本地字节码,需要某种单独的可执行文件才能运行。它们都信奉 “名词王国 “的 “面向对象 “理念,倾向于在代码库中使用大量的固定模式,因此很难找到真正执行任务的代码。他们还都非常喜欢 UTF-16。
SQL
SQL
G 语言
Golang、Rust、Crystal(我的最爱),这些语言在追求 J 语言安全性的同时,也像 C 语言一样以本地字节码为目标,并愿意对 C 语言和 J 语言的语法进行修改(即使 Rust 和 Crystal 不会对类型系统进行大幅修改)。
R 语言
Erlang 和 Elixir 是其中的佼佼者。它们具有 J 语言编译为字节码的步骤,但不是在对象上调用方法,而是在轻量级进程中传递消息,而且还可以使用函数式编程的东西。Elixir 非常努力地为 P 语言人员提供了通往这些语言的匝道,但它的边缘并不那么 “idiosyncratic”,而是一种全新的东西。
F 语言
Haskell、Ocaml 和其他语言,在这些语言中,概念的名称类似于 “applicative functor”,变量的名称类似于 v
和 m
。
结论
计算机
本文文字及图片出自 A lazy and flippant classification of programming languages
你也许感兴趣的:
- 【程序员搞笑图片】数据类型简明指导
- 33 种编程语言的 UUIDv7 实现
- 【外评】Rust,你错了
- 【外评】为什么人们对 Go 1.23 的迭代器设计感到愤怒?
- 华为自研编程语言“仓颉”来了!鸿蒙应用开发新语言,性能优于 Java、Go、Swift
- 【外评】JavaScript 变得很好
- 【外评】华为发布自己的编程语言 “仓颉”
- VBScript 废弃:时间表和后续步骤
- 【外评】BASIC 编程语言 60 岁了
- 【外评】为什么 ALGOL 是一种重要的编程语言?
这种分类并不代表最终的结论,也不能被不加批判地接受。