采访大卫哥们

2021-03-28 09:10:50

大卫·哥哥负责所有时间最着名,最混杂的esolang的负责:Unlambda。该语言基于滑雪组合器微积分,这是一种用于算法数学分析的超极简主义计算系统,但被认为是不切实际的编码。在UPLIMDA中,一切都是一个占用单个变量的函数,因此没有指示符()是拍摄参数。与滑雪微积分一样,它完全避免了变量和λ指示器,因此被描述为Lambda-unt-lambda。如果这对你完全是新的,这篇文章的下半场是一个很好的介绍。一位成功的数学家哥们也负责在无限远处发挥的语言。他的主要网络存在是他从三十年前的本科的日子的网页,这仍然是令人着迷的诚意,乐观和早期网络的平庸肖像。他还在推特上,带有与黑客的参与者派生的把手'禅。

为了响应关于创建Unlambda的问题,麦德德给了我们一些笔记:

我想我在1999年提出了Unlambda。我在那时候对其他Esolangs很少(而且我仍然不知道他们),也就是说,我知道一群名字,但并没有人和#39 ; T尝试在其中任何一个编程。

我正在阅读一本关于逻辑的书,提到了Hilbert风格的公理(S:(a⇒bəc)⇒(a⇒b)⇒a⇒c; k:aəb⇒a;和我:a⇒a)我同时考虑了证明系统和键入系统之间的咖喱霍华德对应,因此我考虑了这些公理在功能规划方面意味着什么以及我们如何使用它们来重新解释没有兰布斯的λ-calculus:这是我如何提出Unlambda。 ' c'功能是因为当时的呼叫/ cc也很着迷(我猜),特别是因为它在咖喱霍华德函上作为Peirce'法律((a⇒b ⇒a)⇒a)。 ' D'显然是我的错误,我永远不应该包括它,它'我不必要的(我认为可能是,但这是我对归一化的收益的一部分的误解),它使语言更优雅(开另一方面,它使口译员'作业有点复杂,这可能是混淆的编程语言的公平)。

当时,我正在考虑提出另一种混淆的编程语言,有点类似的味道,一切都将以持续的方式写入(无功能),但从未到过它。

我认为Unlambda从各个团队写作编写编译器的一些前端或类似的东西,或者在汇编课程中,因为它可以是一个有趣的测试案例,玩具示例或插图。

我曾经在维基百科有一页,因为Unlambda,但后来决定我没有足够了解。 :-(

»谢谢,当您创建语言时,这是一个伟大的介绍!从那时起,您的工作是数学家,从而在这些想法上建立或以任何特定方式与他们联系起来?

并不真地。在代数几何形状中,我("正式")在代数几何形状中,这与兰姆达微积分相当断开。但我在有很多逻辑中涉及各种数学领域(而且,由于某种原因,最近,很多流行病学......)。

»有没有人在Unlambda上写过的程序,让你感到惊讶(就他们所采取的奇怪方向或者他们能够与之完成的方式)?

在写完语言后,我跑了一个迷你竞赛(在INS中的内部新闻组系统上,在我是学生的内部),在Unlambda上写一个Quine(我提供了Abelson&amp的副本; Sussman"巫师书籍#34;对于谁来说,第一个是写的)。我知道这是可行的,因为我自己写了一个,但我的笨重是笨拙的,我惊讶于其他人能够写真的速度,以及他们可以获得的速度(据我所知,他们有多小491字节,在ftp.madore.org/pub/madore/unlambda/cuan/quine/quine06.unl,或效率如何(在数据表示方面)。

后来,有人能够在Unlambda写一个Unlambda口译员,这也让我感到惊讶,以及一些其他有趣的节目。当然,它' sa bit a作弊,因为他实际做的是将一个翻译器写成一个转换器,将一个转换器用于Ullmbda,然后使用此翻译器转换在该方案的那个子集中写入的Unlumbda解释器(以及翻译成本)进入Ullmbda。

»Unlumbda已被描述为"易于写的,不可能阅读" - 与您的体验有关jibe吗?

是的,相当。一旦您在上一段中描述的翻译,在Unlambda中写出很多东西都会变得相当容易,并且毕竟没有那么令人印象深刻。但如果任何人能够在没有实际运行它们的情况下阅读非琐碎的Unlambda程序,我会留下深刻的印象。

一个特别困难的程序,升到一定程度的名利,这是一个:``r`cl`。*`ci,它打印一个无休止的星号列列表,每个星号列表,每个字符列表都超过前一个(即,它计入一元使用星号):输出是特别令人印象深刻的,但了解它的工作原理肯定是棘手的!我偶然发现了这个程序,或多或少随机尝试了各种各样的用呼叫/核武器,我很难弄清楚它是如何做的事情。请参阅https://stackoverflow.com/questions/30409800/any-history-background-about-the-yin-yang-puze-in-detail和其中的各种评论和翻译的链接。

»考虑到Impact unctmda在宇宙语言上,我很好奇,如果您在创建语言后与其他Esolanger联系。

不是真的,没有。我知道Esolangs.org的存在,但它就在迄今为止。

»除了Unlambda,您'在这篇文章中推出了一些其他Esolang,最符合的esolangs,特别是amicus,介绍(2015年);这是怎么来的,以及如何描述对我们较少的数学算术函数?如果可以在几句话中描述的话,语言的核心思想是什么?

首先,这绝对是愿意为esolang ......我想给出一个正式的超级机器定义,结果表明比我希望(我试图写一些非琐碎的是,我意识到它是非常乏味的!在博客文章中看到注释#4½,而我的一个博客读者决定它很有意思,并给了它一个名字。为什么不?回想起来,它是真实的,它是一个可能有趣的Esolang,但它的出生完全是偶然的。

A"超级算法机" (注意:术语是我的:该概念是可计算性的标准,但通常人们谈论"超级算法[al]函数"对于它们计算的功能,并且留下所做计算的器件,留下unnamed的功能)是一个计算型号,即,它是一种严格强于图灵机的抽象计算机。

基本上,一个额外的机器可以做一个额外的能力的超级算法机器可以做到的所有功能:给定一系列整数,这本身是由[程序用于A]超级机器,机器可以(在单个神奇的步骤中计算如果您愿意)决定序列是否完全由零或在线某处存在非零值;请注意,每个单个单个值的计算必须终止,但是提供了这种情况,机器能够检查所有这些,并决定它们之间是否存在非零值。检查序列中的值本身由超级机器计算(因此它们本身可以使用相同的能力):这使得它可以正确定义一个细微,因为您可以' t允许程序检查自己的行为。但是在它的正确定义后,所讨论的机器非常强大:它不仅可以解决普通图灵机的停止问题,而且可以为普通的停止问题解决的机器停止问题图灵机,""

无论如何,我的博客文章是关于正确定义这个并解释几个等价定义;由于定义有点棘手,我试图给出精确的形式化,并确保我的形式化做到了我所想到的,我想确保如果我们删除了我们得到的超级机器的额外魔法能力(某事相当于普通的图灵机,这就是我意外地发明了Esolang的方式。

(但是,超级机器不是在自己的内容中,与Esolangs相连的任何不仅仅是图灵的机器。人们可以想象各种编程语言,就像有许多图灵等效的编程语言一样。)

一个是我发明了许多用于Transfinite计算机的编程语言(即,能够处理和操纵某些无限序数)。我没有给他们任何特定的名字,并且有一些他们的确切关系是可悲的,甚至没有完全清楚,但它们在这里定义。至少有一些语言的变体应该相当于上述和#34;超级机器"问题中的语言'它应该难以写作,相反,但它们绝对是深度的,因为它们意味着(大概是!)不能在这个宇宙中实际存在的计算机。 (也是,我应该明确说明理论概念,就像一个超级机器/功能,aren' t new和aren' t由于我:他们是"众所周知"概念从1950年开发的更高的可测量和#39; S到1970' S,但是计算性理论家从来没有困扰实际上以编程语言的形式制定它们。)

我提醒的另一件事是,在2012年,我不小心(即,不参加!)在国际联盟比赛中获奖。它是如何发生的,对于所涉及的每个人来说有点令人尴尬:我已经写了一个旨在清晰可读和评论的程序,别人(亚伦格罗切)重复使用了我的计划,使它被滥用并将其提交为进入IOCCC(没有告诉我或告诉法官;这是合法的,因为我把我的计划放在公共领域,但也许有点不诚实);法官决定向有问题的方案颁发奖品,当他被要求解释它是如何工作的,他提到了自己的工作,所以法官(咨询我后)决定让我共同获胜。这就是我如何在没有参与的情况下赢得IOCCC(我猜这让我是独一无二的!),我认为是清楚和写的

我说,在基本语言(0)中是不可能的,为语言(0)本身写解释器;也就是说,没有像A"普遍"采用两个参数的函数,[代码]函数e要执行,并且参数z传递给它,表现类似于e(z);它也是不可能的,更重要的是,用语言写入(0)扩展语言(1),(2)和(3)的解释器。

另一方面,语言(0)中有可能是为了编写我想要打电话的内容"精华翻译"它是关于一个函数(递归原始,因此),它需要三个参数:[代码]函数e要执行,一个参数z传递给它,以及某个"精华的数量" t向解释器给出的时间限制在失败之前执行e(z):基本上,解释器开始执行e(z)的执行步骤(这将限制解释器的主循环),如果执行在规定的时间(小于T步骤)结束,则本质解释器通过返回计算值来结束,否则,本质翻译将以特殊值&#34结束;缺乏汽油" (换句话说:我在你告诉我的时候执行了你的节目,它没有在规定的时间内完成,如果你愿意,你可以再试一次更多的汽油)。汽油解释器,它基本上是Kleene' S谓词,即使写入繁琐,也可以在我的语言(0)中是可编码的,即使是解释更多的语言。富人(1),(2)或(3)。

»你发现(更多主流)功能语言最吸引人的工作吗?所有的Esolang都在功能范式上建立吗?

我不那么多(大多数标准语言:c,perl,java,javascript,偶尔的Python),但我确实享受了存在的分集,同时对那些好的想法感到敬意总是最终被错误的决定所造成的,所以"一种统治它们的一种语言"仍然完全难以捉摸。

功能性编程绝对是自然和吸引数学家的吸引力:首先,因为我们曾经处理了作为一流公民的函数(以及定义将功能作为输入或返回函数的函数作为输出定义,以任意复杂程度)和第二,关于纯粹的功能(即无副作用的)语言,因为数学世界在很大程度上是说,构思不变。所以Haskell特别是一种语言,我的想法我和我认为很多数学家,发现非常令人满意(并且键入系统依赖于许多数学想法)。但是,我不得不说,当我实际试图为实际的东西使用Haskell时,我很失望,因为你经常面对以数学优雅的方式做事的困境或不得不打破效率的优雅' (也许经验丰富的Haskell程序员知道如何避免困境,但是对于像我这样的初学者,这是一种放松的东西)。

»您的网站是' 90s个人网页的迷人回归(完整〜)。虽然它有一些较新的内容从30年后收到您的信息,'维护了一切的外观和无人防护的敏感性,所有内容都是从世俗的方式分享到非常个人:最喜欢的作者,略有不同的蓝色阴影你的眼睛,更加个人的写作像"娇小自传盖和#34;描述孤独和连接作为年轻同性恋者和你个性的长篇描述。这是一个更开放和诚实的网络,你寻找吗?

我的网站的状态主要是由于我缺乏时间和耐心,保持迄今为止的事情:我发现写作曾经很容易,但之后维护它们需要巨大的工作。这就是为什么我现在更愿意以(通常是非常长)博客帖子的形式发布事物,这显然是如此明显没有承诺,他们将在以后更新,实际上是相反的假设。所以我的网站上的其他一切都在泥泞中(以及各种不同的Limbo圈子,因为我改变了多次如何组织和风格我的网页,从未彻底统一过一切)。

另一方面,它'真的,我也非常关心像URL LONGEVITY这样的事情,我很难一旦我发表了一旦发布了他们就会努力打破链接。当我重新阅读我过去的博客条目时,我常常在短时间内破坏了多少个链接,常常烦恼。

»我还有其他esolang,我还没有问过吗?

我不能说。 ;-)我的意思是,我几乎忘记了关于" amicus"如上所述,这是一个事故的东西,所以可能有其他人!