gpt4 book ai didi

read-eval-print-loop - 正确使用 REPL 进行开发

转载 作者:行者123 更新时间:2023-12-04 15:11:30 24 4
gpt4 key购买 nike

我一直想知道如何正确使用 REPL 来编写可重用代码,而不是一次性实验。对 REPL 开发风格的各种优势有强烈的看法,我想在实践中检查一下,但我不明白预期的工作流程是什么。

假设我在 REPL 中打开现有模块(+样本/测试数据),并以交互方式创建新功能/修复错误。取得了巨大的成功——它现在按预期使 foobar 实现了 frobnicates!但现在呢?我应该如何将更改和添加恢复到我的模块和版本控制中?

将所有 REPL 状态转储到文件仅适用于初始创建,不适用于修改或添加现有代码(因此,几乎所有开发) - 它需要保留诸如拆分模块、注释等的内容。从 REPL 复制粘贴每个文件中相关点的历史记录似乎是一项繁琐的工作,而且很容易出错。如何确保修改后的函数具有我在 REPL 中的确切最终版本,并且我没有忘记一些?

推荐的最佳做法是什么?

恕我直言,这个问题与语言无关,但如果不是,让我们假设 Haskell 或 Python,因为 Lisp 是它自己的世界,我对它还不够熟悉。

最佳答案

REPL 不是为持久代码开发而设计的。 REPL 的主要用途是:

  • 确定代码和解释器行为的小测试。
  • 新用户的学习工具。
  • 临时场景的交互式执行环境。

  • 有一些异常(exception),例如微软基于 ROM 的解释性 BASIC 的 LOAD 和 SAVE 操作的行编辑器,在 1970 年代末和 1980 年代初流行。然而,这确实是早期微型计算机提供的一个组件,这些微型计算机不具备更高级的基于文件系统的开发环境所需的存储、容量和操作系统功能。

    另一个异常(exception)是各种操作系统命令 shell REPL 环境(例如 bash)的已保存历史记录和别名功能。在这种情况下,解释性语言虽然很重要,但对于管理文件系统和执行系统二进制文件来说是次要的。在这些环境中用户代码的可重用性是针对平台的管理和日常操作。

    为了使用高级的持久性编程概念,例如模块化和版本控制,建议使用解释器工具集提供的基于文件系统的编程工具。大多数开发语言都有单元测试框架,例如 Haskell 的 HUnit 和 Python 的 unittest,允许在应用程序开发过程中执行组件级测试和操作检查。

    话虽如此,只要使用正确的语言和实现,就有可能打破这种范式并创建一个 REPL 环境,该环境可以从用户提供的小代码示例中构建更大、更复杂的东西。

    关于read-eval-print-loop - 正确使用 REPL 进行开发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22423624/

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