最近在看一本《WEB全栈工程师的自我修养》一书,其中涉及到了npm这个词的意义,非常有意思。
一般人可能以为npm是Node Package Manager的缩写,但实际上不是这样的,npm不是Node Package Manager的首字母缩写,所以不能全大写。npm是“npm is not an acronym”(npm不是一个缩写)这个递归定义的简写。
是不是很绕?呵呵。
递归定义是指一种在定义中引用他自身的定义方法,在程序中引用自己称为递归,因为自身是递归的,所以无法精确地解释出他的真正全称。我们熟知的VISA其实就是一种递归定义,VISA的意义是VISA Internation Service Association,还有PNG,PNG is Not Gif。
再读一遍npm的递归定义“npm is not an acronym”,按理他的缩写应该是ninaa,但是这样就成了acronym(缩写)了,就是错误的,所以只能简称他为npm,我们不知道他是什么,但可以肯定的是,他不是一个缩写。
是不是有点崩溃?这还有一段:
npm可以大写么?
不可以,因为npm不是一个缩写
那npm是什么单词的缩写么?
是“npm不是一个缩写”的简写。