专栏首页王金龙的专栏编程语言中那些有趣的命名

编程语言中那些有趣的命名

      学习NodeJS的时候,一定会用到其包管理器npm。npm的字面意思是node package manager,实际的含义也是这样,但是npm真正的英文名却是“npm is not an acronym”,意思是“npm不是一个缩写”,所以如果要问npm是什么单词的缩写,那么回答就是“‘npm是不是一个缩写’的缩写”。

这种计算机科学中的“饶舌”现象叫作递归缩写。

递归缩写(Recursive acronym)即递归首字缩写,是一种在全称中递归引用它自己的缩写。

      在计算机领域,使用递归缩写是黑客社区中的一个较早的传统,后来又有一些牛人把自己开发的产品或者技术使用了这种方式来命名,不得不说,牛人们不仅技术牛,开起玩笑来也是充满了geek气息。

      最早的递归缩写命名的实例应该是1977年或1978年出现的TINT编辑器,其命名为“TINT Is Not TECO”(TINT不是文字编辑器和修正器),它是一个MagicSix的编辑器。这又启发了麻省理工大学的两个Lisp Machine 编辑器的命名,一个叫做 EINE (“EINE Is Not Emacs“,EINE不是 Emacs),另一个是 ZWEI (“ZWEI Was EINE Initially”,ZWEI一开始是EINE)。熟悉Linux的童鞋一定对GNU不陌生, Richard Stallman的 GNU (GNU’s not UNIX,GNU不是UNIX)同样也是如此的幽默。如npm、GNU一样,许多递归缩写包括否定语,通常用来指出这个缩写指代的事物 a 不是与另一个事物 b 相类似(但事实上,这个事物 a 通常与 b 非常相似甚至是 b 的衍生品)。

      还有一些有趣的例子:

Linux:Linux Is Not UniX,这就有点像GNU了,但是是否属实就有待考证了。

PHP:原名Personal Home Page,刚开始是Rasmus Lerdorf为了维护个人网页而开发的,后来功能强大了,改名为PHP: Hypertext Preprocessor,相应地含义也变成了超文本预处理器。

RPM:RPM Package Manager,原名是Red Hat Package Manager,一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。与Dpkg类似。

Wine:Wine Is Not an Emulator,是一个能够在多种 POSIX-compliant 操作系统(诸如 Linux,Mac OSX 及 BSD 等)上运行 Windows 应用的兼容层。关于Wine的真正含义,有人对“Wine Is Not an Emulator”的说法表示质疑,认为”非模拟器“的解释不过是一种娱乐性的说法,Wine的真实意思应当是是Windows Environment的缩写,即WinE。

PNG:PNG’s Not GIF,一种图像文件存储格式,其设计目的是试图替代GIF和TIFF文件格式,同时增加一些GIF文件格式所不具备的特性。PNG的名称来源于“可移植网络图形格式(Portable Network Graphic Format,PNG)”,

EMACS — EMACS Makes A Computer Slow,其自我调侃的意味就太明显了,大概也是对自己集成的强大的功能洋洋得意吧。

了解这些东西,一方面在学习困倦的时候稍稍调节一下,另一方面也是体会计算机大牛们那种geek幽默,枯燥的计算机世界需要程序员们去创造快乐。

原文链接:编程语言中那些有趣的命名

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 详解Java8的日期和时间API

    在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间;在JDK1.1的时候又引入了功能更强大的java.util.Calendar,...

    王金龙
  • HTTP状态码及其含义

            开发Web项目的时候,因为环境搭建和配置的原因,经常会出现部署失败的情况;搭建这个博客的时候,也因为php-admin缺少某些库的原因,导致出现...

    王金龙
  • Kafka系列2:深入理解Kafka生产者

    上篇聊了Kafka概况,包含了Kafka的基本概念、设计原理,以及设计核心。本篇单独聊聊Kafka的生产者,包括如下内容:

    王金龙
  • Spring Boot 中的同一个 Bug,竟然把我坑了两次!

    真是郁闷,不过这事又一次提醒我解决问题还是要根治,不能囫囵吞枣,否则相同的问题可能会以不同的形式出现,每次都得花时间去搞。刨根问底,一步到位,再遇到类似问题就可...

    江南一点雨
  • 国内外流行的Linux发行版

    近年来,Linux 开始获得越来越多的关注,那你知道国内外流行的 Linux 版本都有哪些吗?本文中整理了五大 Linux 发行版,他们分别是 RedHat、S...

    张戈
  • Chrome断点JS寻找淘宝签名sign

    写了这篇文章淘宝sign加密算法 之后,很多人问我Chrome断点调试怎么做,今天会尽量详细聊聊。如果你用使用过Pycharm的断点,会更好理解。

    小歪
  • 电子合同将取代纸质合同吗?

    近年来,在互联网技术加持之下,电子合同应用势如破竹,签约高效率、实现低成本等优势使电子合同成为众多企事业单位改善签约与管理的选择。

    契约锁电子合同
  • C# 从零开始写 SharpDx 应用 初始化dx修改颜色

    本文来告诉大家如何在上一篇博客创建的窗口里面使用 Sharpdx 初始化,然后设置窗口颜色。

    林德熙
  • Spring Cloud 是怎么运行的?

    在之前的文章中给大家介绍了Spring Boot的基本运行原理,收到了很多读者朋友们关于目前比较流行的微服务框架Spring Cloud的问题反馈。因此,在这篇...

    纯洁的微笑
  • Metal入门教程(八)Metal与OpenGL ES交互

    UIImage是我们常用的图像类,可以转成CVPixelBufferRef,表示存储在内存的图像数据; id<MTLTexture> 是Metal的纹理,表示...

    落影

扫码关注云+社区

领取腾讯云代金券