知识卡片
无处不在的扩展点与不安全的插件是同一设计的两面
内容
Eclipse为每个插件开放对输入和显示的底层控制权,插件可自由选择自己的模型、视图、控制器,因此能做到Emacs做不到的深度功能(如语义级重构);代价是插件开发不安全,一个有bug的插件足以让整个IDE崩溃或死锁,且插件接口复杂,写插件更像开发独立应用而非写一段脚本。Emacs用解释型Lisp把用户代码和底层实现隔在安全边界内,换来更弱的插件权限但更强的鲁棒性。
参考来源
- 位置:《架构之美》第11章《GNU Emacs:滋长的特性是其优势》11.4.1节《Eclipse》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0241.xhtml)
- 结论依据:原文明确"Eclipse为每个插件提供了对其输入和显示的底层控制",也指出"Eclipse插件开发是不安全的,这是Emacs Lisp代码所具备的。一个充满bug的插件很容易导致Eclipse崩溃或死锁",两者构成同一架构选择的一体两面。
- 原始内容:因为Eclipse为每个插件提供了对其输入和显示的底层控制,插件可以根据自己的目的自由地选择模型、视图、控制器层……Eclipse插件开发是不安全的,这是Emacs Lisp代码所具备的。一个充满bug的插件很容易导致Eclipse崩溃或死锁。