[翻译] Emacs改变了我的人生 (发生在Emacs和Ruby之间的故事)

转自:http://ruby-china.org/topics/2262


得益于 @fly2never的分享, 我看到一个有关松本行宏先生当年如何使用Emacs, 以及如何使用Emacs实现Ruby的PPT演示稿, 其中讲了许多我原先不知道的, 发生在Emacs和Ruby之间的故事.

原文链接:http://www.slideshare.net/yukihiro_matz/how-emacs-changed-my-life

我相信不是每个人都愿意去读英文. 我就毛遂自荐, 为大家翻译了, 之所以做这件事情, 我想主要是PPT的内容引起了我强烈的共鸣的缘故吧. 虽然使用Emacs(以及Ruby)的层次和水平我和Matz相差比天高, 不过, 这并无法阻止我发自内心的喜欢Ruby, 喜欢Emacs.

事实上, 我在给Ruby新人的公开信就有提到, 我的Ruby编程之路, 是始于Emacs的学习与使用. 而且在我个人身上, 真真切切的发生了一件和Matz非常相似的事情. 那就是: 在使用Emacs之前, 接触过很多IDE, 也曾是Borland的忠实粉丝, 但是很多年, 我一直对编程提不起兴趣或无法坚持, 主要原因, 应该是我像电影里演的那样, 那些黑客的那种噼里啪啦如行云流水一般的感觉. 真正的改变, 发生在使用Emacs以后, 找到了一种久违的写字的感觉. 我使用org-mode记笔记, 以及GTD整理我的思绪, 并乐此不疲的折腾再折腾, 说白了就是为了这种传说中的feeling. 随心所欲的feeling, 自由的feeling.

我承认也许Emacs只是碰巧在我人生试图发生改变的时候, 碰巧发生在了我的面前, 但不可否认的是, Emacs最为个人未来编程生涯的一个起点, 而且显而易见, 现在我每天做的每件事情, 几乎都跟它有关(离不开它), 从这个意义上来说, Emacs对我个人而言, 正如matz那样, 一个新的开始, 而现在看起来, 也是一段美好的回忆.

下面正文开始:


Emacs改变了我的人生 原著: Yukihiro Matsumoto(松本行宏), 翻译: zw963

在1980年.

我开始编程...

(出现了一个夏普计算器的图像)

400 steps (应该是那个计算器的型号, 表示那时候计算机还很初级.)


到了1988年.

在一台SUN-3型计算机上, 我遇到了Emacs.

同学们之间相互分享这个东西.

我也尝试着使用它.

但是我无法真正使用它.

因为Emacs在系统内被禁止使用的.

因为它占用了太多的宝贵内存. (现在绝大多数的程序员应该无法想象当年节省1kb内存对于一个程序来说多么重要)

但是我们可以自由下载, 因为它是自由软件.

我下载了Emacs源码.

开始研究...

Emacs是我使用过的地一个Lisp解释器.

从Emacs中, 我了解到很多很多有关语言的实现.

embedding integers in pointers (如何在指针的低位嵌入目标类型)

(使用Mark and Sweep的方式来处理垃圾收集问题)

C 和 Lisp 之间的调用约定.

我实实在在的懂得了Lisp如何工作.

我沉迷于Lisp对象, 以及如何通过C来实现Lisp.


这一年, 我开始使用Sparc工作站.

我终于开始使用Eamcs.

Emacs变成了我的一部分.

我可以随心所欲的改变任何不喜欢的地方.

Emacs的所有东西都是完全可配置的.

Emacs, 让我实现了作为一个程序员可以实现的所有一切.

我可以随心所欲的换绑任意按键.

离开Emacs, 我不想写任何东西.

包括程序, 文档还有Mail.

所以我写了我自己的Mail Lisp客户端.

它叫做cmail. 在Emacs下使用.

这是我写的第一个(不算太小的)Emacs-Lisp 程序.

我每天都在使用它.


到了1993年. (地球人都知道, 1993年发生了什么)

我开始了Ruby解释器的开发.

受到Emacs解释器的影响.

Integers are coded in tagged points (还是不明白, 整数被硬编码为tagged指针?)

我使用了简单的mark以及垃圾收集机制.

我使用了类似于Lisp的对象模型.

并借鉴了Smalltalk一切都是对象的理念.

在语法上, 我借鉴了Algol, Ada, Eiffel.

但是, 作为一个沉溺于Emacs的瘾君子, 我还需要一个用于编写Ruby代码的mode.

首先, 自动缩进必要的.

在1993年, 还没有针对Ruby这类语法(以end作为结束)的自动缩进模式.

所以, 我尝试写了一个ruby-mode.el

基本上就是处理emacs lisp正则表达式之类的概念.

整整花了我一个星期...

用尽各种办法, 我愣是给实现了代码自动缩进功能.

现在回想起来, 如果(当时)我无法让ruby-mode开始工作.

现在Ruby的语法也许会被改变.

也许会变的更像C一些.

或者和其他脚本语言更相似.

如果那样做了, 我想Ruby一定没有现在这么受欢迎.


总结

Emacs教会了我自由软件精神.

Emacs教会了我如何读代码.

Emacs教我领略了Lisp的威力.

Emacs教会了我如何实现一个语言核心.

Emacs教会了我如何实现垃圾收集.

Emacs帮助我编码和调试.

Emacs帮助我写, 编辑文本, 邮件, 文档等等.

Emacs使我成为一个高效的程序员.

Emacs使我成为了一个hacker.

Emacs改变了我的生活.

永远...

感谢Emacs.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值