约翰麦卡锡对*色情编程*的意思是什么?

lus*_*oog 24 lisp history terminology

在Lisp的历史中,麦卡锡写道:

翻译的出乎意料的外表倾向于冻结语言的形式,并且一些决定对于"递归函数......"而言相当轻松,后来证明是不幸的.这些包括用于条件表达式的COND表示法,其导致不必要的括号深度,并且使用数字零来表示空列表NIL和真值false.除了鼓励色情编程外,对地址0进行特殊解释也给后来的所有实施带来了困难.

他在说什么?

Try*_*ler 20

...零表示空列表...

因为0==()自1958年以来一直是色情的表情符号.

现在你知道了.


Ósc*_*pez 18

事实上,太多的实施细节在更高层次泄漏,即显示太多

  • 这似乎有道理:使用*亲密知识*的代码. (16认同)

Cri*_*low 9

最初的Fortran III规范文档是1958年冬季发布的技术论文,描述了Fortran II语言的一些非常明确的补充,包括......内联汇编.

PDF就在这里

以下是对"增加"的诱人描述:

摘自I.,Ziller,1958年Fortran II的补充

一些禁忌代码是

使用未发布的Fortran III进行色情编程

神秘的是,Fortran-III 从未向公众发布(见第5节),但在有限的时间内传播,然后悄然消失.

  • 这到底和这个问题有什么关系呢?这甚至不是同一种编程语言! (3认同)

Bas*_*tch 6

也许这是他谈论空引用的方式:十亿美元的错误(T. Hoare).


Vse*_*kin 6

我认为它是关于混合数值和逻辑值,这仍然可以在流行的结构中看到,可能起源于Fortran,就像while (1).有许多"聪明的"C算法,它依赖于这样的事实:0是假的,而其他每个值都不是.

这同样适用于API调用,例如在POSIX或Linux内核中,其中一些在失败时返回0,而一些在-1(有一个经验法则,何时应用哪个,但它只是民间传说,所以经常是破碎).考虑到事实,在麦卡锡的时代,那些东西还没有发展,你甚至可以看到他的"预言"力量.