命名时一个很头痛的问题,如果是for循环内部的变量,叫i,j,k就行,再多一点就不好取名字了,诸如temp,test,XX_new等各种名字都会冒出来了。

缩写

KMP: Knuth–Morris–Pratt string-searching algorithm

Donald Knuth: 高德纳,1938年出生,经典巨著《计算机程序设计的艺术》(TAOCP)的作者,托更大王,97年第一卷出版,总共7卷现在还没写到第5卷(有生之年系列)。 James Hiram Morris:曾任CMU的CS院长 Vaughan Pratt:高德纳的同事 KMP算法就是以每个人的姓,取首字母命名而成,命名顺序按照字母顺序(赵钱孙算法?)

RSA:Rivest-Shamir-Adleman cryptosystem 参见

很多时候名字不会起,直接用人名——欧拉函数,欧拉公式,欧拉方程,欧拉定理,牛顿第一定律,牛顿第二定律,牛顿第三定律,谢顿第一定理等(好像混进去了什么奇怪的东西

递归命名

在计算方面,黑客社区(特别是麻省理工学院)的早期传统是选择首字母缩略词和缩写词,
这些缩写词和幽默词可以幽默地引用自己或其他缩写词。

  • cURL — Curl URL Request Library

  • GNU — GNU's Not Unix

  • gRPC — grpc Remote Procedure Calls
  • PHP — PHP: Hypertext Preprocessor (from "Personal Home Page Tools)(PHP是最好的语言)
  • RPM — RPM Package Manager (originally "Red Hat Package Manager")
  • YAML — YAML Ain't Markup Language (initially "Yet Another Markup Language")
  • Wine — Wine Is Not an Emulator

Bing 这个笑话曾经承包了我一个下午的笑点

Bing可以被理解为包括但不限于以下内容的缩写:

  • Bing Is Not Good

  • Bing Is Near Google

  • Bing Is Not Google

  • Bill It's No Good

Redis — Remote Dictionary Server

这个命名中规中矩,甚至算不上递归命名但是默认端口号的由来6379却特别有意思

6379是手机上的MERZ(未成年人不要去搜这个词)

Programming lanuage

C :C语言之所以命名为C,是因为 C语言源自Ken Thompson发明的B语言)(不要问我有没有A语言),而 B语言则源自BCPL语言,是不是和循环变量命名有点像,那为啥就要用i,j,k来命名呢,这是来源于数学惯例用a,b,c来表示常量,i,j,k来表示累加过程中数列的下标,x,y,z来表示方程的未知数,具体可以追溯到笛卡尔。

作者:wuxinliulei

链接:https://www.zhihu.com/question/22826568/answer/65915408

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

C语言的原型ALGOL 60语言。(也称为A语言)

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。

1970年,美国贝尔实验室的Ken ThompsonBCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。

而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE等人在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

最早的C语言编译器使用B语言写的。
也可以说:
C 语言诞生的基本过程就是 Ken Thomson 不满意 BCPL,于是设计了 B 语言,并且用 BCPL 为 B 语言写了一个编译器,然后从这个编译器开始自举写新的 B 语言编译器。

贝尔实验室的众人在 PDP-7 上用 B 语言写了各种各样的东西后又不满意 B 语言了,于是 1971 年 DMR 开始在新买的 PDP-11 上用 B 给 B 写扩展,称之为 NB (new B,此处省略吐槽若干),扩展着扩展着离 B 的画风越来越远了,就取了一个新名字变成了一门新语言—— C 语言。

1973 年夏天他们用手头的编译器和语言给 PDP-11 重写了一个 Unix Kernel。C 语言大约就是这个时期成型的。

Java : 最初的java被称为oak,以gosling办公室外的一棵橡树命名,后来由于商标版权问题,改名为java,灵感
来自于印尼爪哇岛的咖啡。

JavaScript: JavaScript和Java的唯一联系就是名称的前四个字母相同

Python: python直译就是蟒蛇,命名灵感来自于一个剧团

Scala:scala直译就是螺旋,这点在其logo中也体现的很明显

2003 年,一个叫 Martin Odersky 的醉汉看见了好时瑞森花生酱杯的广告,展示了某个人的花生酱倒入另一个人的巧克力的场景,他忽然有了个点子,创造了 Scala,一种结合了面向对象和函数式编程的语言。这同时激怒了两个阵营的忠实信徒,他们立刻宣布要发动圣战烧死异教徒。

https://www.oschina.net/news/41233/brief-incomplete-and-mostly-wrong/?p=6 (原版译文出处已经404)

重名的悲剧

Hadoop Yarn vs Javascript yarn

Hadoop Yarn: YARN(Yet Another Resource Negotiator), Hadoop集群的管理系统

yarn(a javascript package tool): 升级版的npm

Blink(Web Engine)) vs Blink(a branch of Apache Flink)

yet another 和 next generation一样也是一个在命名时经常被使用的词缀。

其他

sbt

SBT在这里不是指sad but true,当项目初建时,是"Simple Build Tool",过了一段时间,SBT又有了"Scala Build Tools"的含义

Nowadays we just call sbt “sbt”, and to reinforce that the name is no longer an initialism we always write it in all lowercase letters. However, we are cool with 酢豚 (subuta) as a nickname.

​ ——https://www.scala-sbt.org/1.x/docs/Faq.html

我用的时候倒是一点也没体会到"Simple Build Tool"和"Scala Build Tools"的含义。在我看来,SBT是SB tools的缩写,先是展现其难用的特点,让你觉得自己是个SB,然后你用上一阵子,发现这东西真是个SB

ng

这不是个完整的命名,这是一个命名后缀,啥都可以用,比如flume-ng

ng到底是个啥意思呢,"No Good" - Perhaps?!!!,老实地用数字来标识版本不好吗,按这个画风新出的版本叫ng-ng还是nng不会数3

/usr

这是linux系统中的一个目录名称,你以为它是“user"的缩写,乃义务,其实是Unix Software Resource