几周前,作者需要类似电子表格形状的东西,行数约 1e4 或 1e5 。作者考虑了三种选择:字面电子表格、sqlite 加一些额外功能、Mathematica 笔记本。作者之前未认真使用过 Mathematica ,但印象还不错,下载后玩了一下,总体印象非常积极,除了一个让他震惊的核心问题,即 Mathematica 在电子表格的核心功能上完全失败,显示状态不一致,保存和重新加载笔记本会改变显示状态,使用 Dynamic 也不能使其一致工作,感觉很脆弱不确定,不放心用其处理数据。
讨论
- 有人回复称自己 90 年代用过 Mathematica ,现在认为这是思维模型的差异,将笔记本视为带有历史的 REPL ,回到单元格就像使用 REPL 历史,单元格中的值会根据当前 REPL 状态保持,除非特意改变,这种行为在很多情况下不理想,但有助于理解笔记本的用途和局限性。
- 有人提到 Julia 的 Pluto 笔记本是完全反应式且可完全重现的,是一个选择。
- 有人推荐 Decker ,它既不是笔记本也不是电子表格,有两者的一些特点,数据生态系统较基础,但提供基本功能,如多种数据编码、表格数据类型、查询语言和绘图库等,目前用户多关注互动故事和游戏,也可用于个人数据库和小规模数据分析。
- 有人提出在经典“完全惰性”笔记本和“完全更新”电子表格评估风格之间的中间步骤是在 UI 中标注“过时单元格”,即使是近似标注也有价值,不知有哪些笔记本 UI 这样做。
- 有人询问具体问题和显示状态的含义,以及用 1e5 行数据进行的操作,有人举例说明 Mathematica 笔记本的这种行为是有意的,大多数笔记本技术不像电子表格那样是“反应式”的,Marimo 是反应式笔记本,有人对其进行讨论,相关项目尝试捕捉更多依赖但难免失败,检测所有内存读写是有趣的研究项目。
- 有人介绍在 Mathematica 中犯错后的处理方法,它不是电子表格,
Dynamic是用于在 UI 线程中懒评估表达式的工具,使用起来较费力。 - 有人表示从未听说有人将 Mathematica 用作电子表格。
- 有人认为作者有两个问题,一是对数据表进行计算,二是典型编程笔记本的命令式性质,在 Python 数据生态系统中可分别用 Pandas 或 Ibis 处理,一般用笔记本时要定期重新运行以保证可重现性,笔记本适合原型设计和学习新 API ,之后可将代码复制到脚本中重构。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。