gpt4 book ai didi

programming-languages - 我应该如何管理新语言设计中的副作用?

转载 作者:行者123 更新时间:2023-12-04 14:53:14 26 4
gpt4 key购买 nike

所以我目前正在研究一种新的编程语言。受并发编程和 Haskell 思想的启发,该语言的主要目标之一是管理副作用。或多或少,每个模块都需要指定它允许的副作用。所以,如果我在做游戏,图形模块就没有能力做 IO。输入模块将无法绘制到屏幕上。人工智能模块需要完全纯净。游戏的脚本和插件可以访问非常有限的 IO 子集来读取配置文件。等等。

然而,什么构成副作用并不明确。我正在寻找关于我可能想用我的语言考虑的主题的任何想法或建议。以下是我目前的想法。

一些副作用是明显的。无论是打印到用户控制台还是发射导弹,任何读取或写入用户拥有的文件或与外部硬件交互的操作都是副作用。

其他更微妙,这些是我真正感兴趣的。这些可能是获取随机数、获取系统时间、休眠线程、实现软件事务内存,甚至是非常基本的事情,例如分配内存。

与其他为控制副作用而构建的语言不同(看看你的 Haskell),我想将我的语言设计为务实和实用的。对副作用的限制应该有两个目的:

  • 帮助分离关注点。 (没有一个模块可以做所有事情)。
  • 对应用程序中的每个模块进行沙箱处理。 (任何模块都可以用作插件)

  • 考虑到这一点,我应该如何处理“伪”副作用,如我上面提到的随机数和 sleep ?还有什么我可能错过的?我可以通过哪些方式将内存使用和时间作为资源进行管理?

    最佳答案

    如何描述和控制效果的问题目前占据了编程语言中一些最优秀的科学头脑,包括像 Greg Morrisett 这样的人。哈佛大学的。据我所知,该领域最雄心勃勃的开创性工作是 David Gifford 和 Pierre Jouvelot 在 1987 年开始使用 FX 编程语言完成的。language definition在线,但您可以通过阅读他们的1991 POPL paper 来更深入地了解这些想法。 .

    关于programming-languages - 我应该如何管理新语言设计中的副作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/803167/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com