加载失败
讨论围绕一篇认为 Smalltalk 系统浏览器(System Browser)在可观察性与交互式开发上无可匹敌但未必适配现代工程实践的文章展开。评论引用 Pharo、Squeak(开源 Smalltalk 实现)和历史上的 Whisker、F‑script Anywhere、Code Bubbles、Self 等项目来比较不同的浏览/可视化范式,并提出把包列表改为树/列视图、引入项目视图或空间化界面等改进建议。核心张力在于 Smalltalk 的 image/无文件模型与现代以文件/Git 为中心的协作流程不一致,且传统四栏浏览在大系统上出现导航与屏幕空间的痛点。讨论同时触及 Smalltalk 的影响力(对后世 IDE 的启发)与其在工业界的流行度差异,以及多种复现与移植的尝试。
评论普遍赞赏 Smalltalk 浏览器带来的交互式可观察性:基于 image 的运行时环境使得能在 Inspector、Workspace、Finder、Debugger 等窗口中即时查看与修改对象与方法,而不是依赖文件系统。许多人强调“没有文件”的组织模型如何让对象与行为成为一等公民,从而方便调试和逆向工程,举例包括 Pharo、Squeak 和 F‑script Anywhere 的体验。系统浏览器与多种可扩展视图(包括 senders/implementors 导航)一起构成一种“开放书籍”的开发方式,这也是其长期被认为优秀的原因。评论也指出这些理念对后来 IDE(如 Eclipse 的某些代码浏览器)产生过明确影响。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
多位评论者分享了把 Smalltalk 工具思想带到其他生态的具体项目和实现:有人基于 Pharo 界面为 Common Lisp 写了 icl(web REPL/inspector),Squeak 有历史项目 Whisker,研究/原型如 Code Bubbles 与 Self 的桌面演示也被反复引用。还有人尝试为 IntelliJ 写扩展以复制浏览器体验,或用 SmallJS、Dolphin Smalltalk 等实现更项目化或文件化的替代方案以适配现代工程流。这些实例表明 Smalltalk 的交互式浏览和可视化导航思想可移植且已有部分落地,但每种移植在集成方式、文件兼容性与可扩展性上存在差异。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8] [来源9]
显著的批评集中在四栏(System Browser)固定布局在大规模系统上的不便:例如评论提到 Pharo 的 package 列可达 900+ package,使得平面列表难以滚动与定位;方法级小编辑器常导致大量窗口爆炸,限制了对方法周边上下文的整体把握。为解决这些痛点,评论提出把 package 改为树状或类似 macOS Finder 的 Column 视图、提供显式的 project 视图(Dolphin Smalltalk 的做法)、或采用 outliner/按需视图切换来平衡方法级与文件级的可读性。评论里也用 Java IDE 的项目/文件视图与标签式工作流对比,强调 Smalltalk 需兼顾“方法优先”与“类文件画布”的阅读体验。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
讨论扩展到更激进的浏览范式:有人把代码浏览比作分形,建议引入空间化记忆(method of loci)、panning desktop(Self 的无限桌面)或视觉气泡式界面(Code Bubbles)来保留长期上下文。评论还回忆纸质打印作为一种天然的“空间浏览器”,并把 Literate Programming 提为增强可读性的可选路径。总体观点认为传统树状/窗格视图难以承载复杂系统的多维语义,鼓励尝试更视觉化或空间化的界面以保存空间记忆与长期上下文。
评论在 Smalltalk 是否“已死”上存在分歧:一些人认为 Smalltalk 在行业里不流行、招聘少,称其“过时”;反对意见则指出 Smalltalk 在学术界与研究工具链中持续活跃,且许多现代 IDE 与语言设计理念源自 Smalltalk。评论具体将不流行归因于生态与工程实践的不匹配(例如许多实现使用 image 快照而非基于 Git 的文件存储),这使得 Smalltalk 在协作与现代工程流程中处于劣势。尽管如此,Pharo、Squeak、HPI 等研究/教学项目仍在使用并发表论文,说明其影响力仍然存在但形态不同于主流语言生态。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7]
System Browser / 四栏浏览器 (four-pane browser): Smalltalk 典型的代码浏览器布局,通常由 package/class/method 列表与方法源码编辑器四个区域组成,用于在运行时直接浏览、编辑和导航对象与方法。
image(Smalltalk image): Smalltalk 的工作单元:整个运行时堆和代码的快照(binary image),包含对象、类和运行状态,與基于文件的代码存储与 Git 工作流不同。
Inspector / Workspace: Smalltalk 常见的交互式工具:Inspector 用于检查并操作运行时对象的槽(fields),Workspace 是临时执行/测试代码片段的编辑器,可直接在运行时执行修改。
senders / implementors: Smalltalk 的代码导航概念:senders 指发送(调用)某消息/方法的位置(callers),implementors 指实现该消息/方法的类或方法位置(implementations),用于跨处引用追踪。