Ore*_*ren 3 side-effects esoteric-languages
作为对这个问题的评论中讨论的一个结果.我想问一下副作用和深奥功能之间的关系.specifficaly:
1)你可以使用ook/brainfuck访问gpu(并导致图形副作用)吗?
2)你能用空格进行系统调用吗?
3)基本上归结为,你能用任何图灵完整的语言引起所有常见的副作用吗?
4)奖金问题:如果有可能,你能提供一个工作示例/代码的链接吗?
bmargulies的评论是关于一般问题的.图灵完成在技术上意味着该语言可用于模拟单拍图灵机.实际上,这意味着您可以在图灵完备语言Y上模拟图灵完备语言X的任何计算.但是,您所谈论的所有事情都不是计算 - 它们是系统接口.要在特定系统中执行特定操作,您需要具有接口.这些语言不提供通用接口; 它们提供了一些系统调用,我们将在下面看到.
让我们用一个弱的比喻.考虑一下航天飞机.航天飞机的每次计算都可以用你的iPhone完成(也许不及时); 但它需要一个特殊用途的系统来实际发射火箭并断开助推器.您可以为iPhone编写一个应用程序,其输出是宇航员的指示,例如"Fire starboard rocket 10秒!" 然后乘坐那个航天飞机.但你不能只是将iPhone插入航天飞机的码头.
所以,正如您所料,所有问题的答案分别是:
whitespace是一种解释型语言,除了向控制台读取和写入字符外,该语言不提供任何系统集成.(它也不会生成传统的汇编代码,您可以根据原始问题轻松地将其集成到C程序中.您需要使用系统调用从C程序运行解释器并将输出返回到您的进程.效率!)语言和解释器是开源的,因此从技术上讲,您可以通过解释器修改语言以支持通用OS调用.
Brainfuck实际上编译,所以从理论上讲,如果你感觉很好,你可以更容易地把它包含在其他程序中.像空格一样,它只支持读写字符.修改Brainfuck以支持完整的系统调用将是有趣的(也许值得一篇论文).
这是编译器的源代码.有它:
希望有所帮助!