当前位置:C++技术网 > 资讯 > 斯托曼:JavaScript 不适合 GNU Emacs 的罪魁祸首并非语言本身!

斯托曼:JavaScript 不适合 GNU Emacs 的罪魁祸首并非语言本身!

更新时间:2022-12-20 15:33:27浏览次数:7+次

  本文是自由软件之父 理查德·马修·斯托曼(Richard M. Stallman,本文简称 RMS )在 EmacsConf 2022 大会上发表的主题演讲,他认为 Emacs 应该摒弃繁复的、非必要的流程,简化、明确、细化所有功能,他还提到,JavaScript 真正不适合 GNU Emacs 的根本原因在于,人们使用它的方式,而非语言本身,罪魁祸首则是浏览器厂商。
 
  这句玩笑话被誉为 Emacs 的真实写照,一个让现代计算机科学鼻祖 Donald Knuth 都觉得复杂的工具。
 
JavaScript 不适合 GNU Emacs 的罪魁祸首并非语言本身
 
  Emacs 是著名的集成开发环境和文本编辑器,在美国许多高校中,Emacs 是许多老教授的心头好。但由于它的功能实在太过于丰富且深入,导致在行业内有一个玩笑:“用了 10 年的 Emacs,仍不敢说自己已经熟练运用了……”
 
  的确,无论是过去还是现在,Emacs 使用起来总是给人一种“手忙脚乱”的感觉。对于一款工具而言,即使其能力十分完备,也很容易因为操作太过繁复而“劝退”使用者,除了功能以外,如何提升开发者的使用体验也非常重要。
 
  12 月 4 日,自由软件基金会 (FSF) 和 GNU 项目创始人 RMS 以线上形式在 EmacsConf 2022 大会发表了演讲。演讲主题为《What I'd like to see in Emacs》,提出了改进 Emacs 的方法。
 
  珍惜软件自由,捍卫软件自由
 
  RMS 表示,GNU Emacs 是 GNU 操作系统的一部分,而 GNU 操作系统的目标不仅是要在技术层面和使用层面做得好,它的主要目的,甚至可以说是总体目的,是给大众自由使用软件的自由,并且帮助他们珍惜和捍卫这份自由。
 
  他认为,如 GNU 这样的软件包,他作为一个提供便利的程序,很多时候不仅仅是为了提供软件的有用性,更应该通过提供有用的工具,为整体的道德和社会目标做出贡献。正是通过 GNU Emacs,RMS 了解到如软件许可证和如何捍卫自由。
 
  在谈到 GNU Emacs 的编程语言时,RMS 表示不希望有 Emacs Lisp 以外的扩展语言。因为 Emacs Lisp 是其一直支持的 Lisp 的变体,它是随着 Emacs 的发展而发展的。而最不应该支持的语言,RMS 则认为是 JavaScript。
 
  这不是语言本身的问题,RMS表示,自己并不了解 JavaScript,只是听说它相当笨拙,设计得不好,但这不是他认为不应该支持 JavaScript 的原因。RMS 认为,JavaScript 真正不适合 GNU Emacs 的根本原因在于,人们使用它的方式。大多数情况下,Web 服务器会将 JavaScript 编写的程序不知不觉地发送到用户的机器上,用户根本不知道它在里面做了什么事情,用户基于对网站的信任而进行访问,却会被神不知鬼不觉地窥探,甚至这些窥探的动作通常不会是出于好意,这是非常严重的问题。
 
  RMS 表示,这个问题并非来自语言本身,“罪魁祸首”其实是现代浏览器厂商。在默认的情况下,会拉入发送到他们的 JavaScript 代码,并运行它来做任何事情。他认为这些举动是违背了 RMS 一直倡导和追求的“自由”,并且认为,让 Emacs 不支持 JavaScript 的原因,也是来自于捍卫自由的一种方式。
 
  Emacs 还有很多可以改进的地方
 
  Emacs 应该捍卫你的自由,也应该帮助和引导你捍卫自由,它应该阻止你因为非必要的选择而妥协,引导你跳过那些不怀好意的浏览器和选项,在其他软件或机器上运行。
 
  因此,为了能够让 Emacs 更准确地帮助大家捍卫软件自由,RMS 认为应该更新《Emacs Lisp 编程简介》,以涵盖 Emacs 的变化,如词法绑定。最初,Emacs Lisp 曾经完全是动态范围,就像一些最早的 Lisp 解释器一样。这是一个变化,应该有一个仔细的文档或说明来更新介绍。
 
  其次,需要让用户更容易理解 Emacs 的功能,不要为了玩文字游戏和随意给包起名字,包的名字应该帮助你记住这个包是做什么的,省略纯粹的文字游戏,坚持使用人们会记住的名字。
 
  另外,RMS 希望在 Emacs 中使用所见即所得的方式编辑格式化的文档(就像使用 LibreOffice)。这将是一个很大的优化,但它可以由许多中等规模的项目来组成。如果现在开始着手一点点地做,那么在若干年后,我们就会有一些绝对惊人的东西。
 
  还有,维护层面的模块化很重要,可以减少用户去了解 Emacs 的维护细则,随着不断为 Emacs 增加更多设施,模块化是一种有回报的投资。
 
  除此之外,RMS 还希望回到由浏览器决定网页如何呈现的情况。减少浏览器的功能,允许由网页提供者控制外观。我们应该保护自己、保护我们的用户不受影响。
 
  摈弃繁复的、非必要的流程,简化、明确、细化所有功能,这是 RMS 给 Emacs 的改进建议。工具的意义不是在于“秀操作”,而是真正解决用户问题,帮助用户达成目的,帮助人们争取、捍卫自己的权利。正如过去的用户们还拥有自由控制浏览器布局的权利,如今由于浏览器的复杂性的爆发增长,已经失去了这种权利。如果要以牺牲、妥协人们权利去换取服务商提供的功能,难道不是一种倒退吗?