注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

My Unix World

不要迷恋Unix,Unix只是计算世界很小的一部分!

 
 
 

日志

 
 

【原创】对Emacs的思考  

2008-11-18 23:38:00|  分类: L-Emacs |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
1,与Vi的比较
Emacs的磅礴大气,不是vi所能理解的,Emacs不算什么,lisp也不算什么,但他们所蕴含的思想,甚至超过了经典的unix设计理念所能理解的范围!unix设计思想是伟大的,但世界上没有唯一的真理,真理都有一定的适用范围。vi忠实的体现了unix设计思想,做编辑器,而且是一款最优秀的编辑器,把编辑功能几乎发挥到了一种极致。vi与unix紧密融合,严格遵守unix规范,是unix绝对不可或缺的一个单元。可以想象,如果一台unix机器没有vi,那是一种怎样恐怖的场景。
严格说来,Emacs甚至根本不是严格意义上的编辑器。它的本质是一个Lisp的运行环境。某种程度上,它是一款操作系统;运行在unix上,它更像是一个虚拟机;但是它却与系统如此紧密的集成,虽然用严格的单一功能原则看来,它不如vi中规中距,但是,至少,她能够与系统融洽相处,并且大大的扩展了系统的功能。确实没错,Emacs有些不太unix,但是,她很Emacs!Firefox也很Emacs,如果把各种unix工具看做unix内核的插件,Unix也很Emacs!看Emacs是不是很unix,要看Emacs的插件是不是很Unix,看Firefox的插件是不是很Unix,这样看问题,更合理一些。
另外一点,这种动态快捷键绑定,也是一种奇妙的东西,从另一个视角理解操作系统。
另一个问题,仍然是编辑器与Shell的关系问题,这是一个非常值得思考的问题。
上面有些调侃,只是需要记住,Emacs就是Emacs,可以用Unix的视角去观察,但要真正理解Emacs,还需要用Emacs的思想去理解他。
Emacs与Windows是两类东西,Firefox也不Windows,而是Emacs风格。
可以这样理解,Unix是Unix,Emacs是Emacs,他们属于相互独立的两个系统,没有什么必然的联系。Windows下也可以很好的Emacs,没有任何问题,Mac OS下也可以很好的Emacs,也没有任何问题。如果有问题,那是因为Emacs在设计的时候,误以为世界上只有Unix一种操作系统,导致了灵活性不够!这是Emacs的设计缺陷。

2,Emacs是什么

Emacs把自己定位为编辑器,无疑是一个错误的定位。在Unix上,最优秀的程序编辑器非Vim莫属了。它与*nix的天然集成,使得它具备Emacs无法比拟的优势。
Emacs本质上是什么,从它设计的角度,它是一个Lisp的运行环境,是一个Lisp的虚拟机。而从应用的视角看,它是一个文本的人机交互界面。更确切一点,它是一套基于字符的人类代理系统,它作为人类的代理,与机器进行交互和沟通,它体现的是人类的思考方式,代表的是人的感情和痛痒。另一方面,Shell则代表机器,可以把它看做机器的一个封装器,对人类提供一个代表这台机器的一个接口,Shell这个外壳,是机器的外壳。
Vi是什么?Vi是Shell环境中的一个组成部分,尽管它提供了人性化的设计,但它不能囊括与人沟通的一切,它只能老老实实的做unix系列系统上最优秀的程序编辑器。
Emacs是人类与机器沟通中,相互妥协的产物。以人类的特征,人类喜好图形而不喜欢文字,而机器正好相反。如果有一天机器足够发达,完全可以照顾到人类的这种特征,那么Emacs会因此而淡出历史舞台。但是,现在远远不能,至少在目前,字符还是人类与机器沟通最有效的方式,也是最恰当的方式。而代表人类与机器沟通的所有方式中,Emacs提供的解决方案无异是最具参考价值的。
在现在的机器中,有三大系统,分别是Shell,Emacs,X-Window,它们是三种不同的设计理念而设计出来的人机交互系统。
Shell是一种最朴素的哲学,它只是把机器进行简单的封装,但并没有包装,把机器的所有内容一五一十的和盘托出。它是控制机器最强大的系统。因为在shell之上,可以设计无数应用。Emacs和X在某种程度上必须依靠shell的支持才能运行起来。而如果想真正了解系统,Shell是永远无法越过的一个关口。因为Shell本身就是一个外壳,一道门口。Shell绝对不会在乎人的感觉,不会在乎用户的键盘输入是否方便有效,不会在乎它黑咚咚的界面是否吓走一大批可能对它感兴趣的人。Shelll所在乎的,只是怎样把系统封装一下,让外面的世界不必关心里面的细节,同时,让里面的系统所有的功能都发挥出来。它强调的,就是Unix设计思想所强调的那些内容,例如KISS,etc。
Emacs不是最好的人类代理系统,它并不完美,但是,它是一个起点。可以预测,在未来,在emacs的带领下,将迎来人机交互系统的繁荣局面。
Emacs从对编辑器优化的愿望发展而来,从一开始他就注重用户按键的方便、快捷键的统一,用户文本编辑的效率,这些人性化的东西,它关注的核心点是人,是人怎麽编辑文本更方便有效,而丝毫没有考虑是不是把机器的性能最大发挥。站在Emacs设计的视角,机器、操作系统、Shell只是Emacs运行的支撑平台或者服务平台,他们提供的是一种机器服务。它的上层采用Lisp灵活扩展方式,也是完全基于更好服务于用户的思想,而丝毫没有考虑到机器怎么怎么样,所以,很多人说它违背Unix的设计思想,其实是没有错的。正是基于这种思想,使得它从一个以人为本的编辑器,变成了一个代理人类的愿望与机器进行交互的平台。站在Emacs之上,完全可以忽略机器的技术的那些方面,用户只要关心自己的应用自己的利益就已经足够了。这就是Emacs的全部。
其中涉及到一个重要的问题是Emacs与系统的紧密融合和有效交互。从这个视角看,Emacs还不是很独立,它在很大程度上还依赖于系统,还受到系统的束缚,还在灵魂里有着根深蒂固的Unix影子。这里的问题,其本质是机器代理(Shell)与人类代理(Emacs和X)的辨证关系与定位。在目前,这个问题还没有引起足够的重视,社区的争论还把焦点放在vi和Emacs作为编辑器的好坏上,但是,随着时间的推移,机器性能的快速提升,这个问题将会引起越来越多的人的重视。一个让人沮丧的预言,在若干年后可能会成为现实---Shell将被无情抛弃,而Unix设计哲学也将在一定程度遭到质疑。就像,我们喜欢汇编,喜欢二进制的机器指令,但今天已经见不到有谁在用机器指令开发程序了。从Shell到Emacs,这是历史的车轮,可是,确实痴迷技术留恋Shell的你我永远的痛。难以想象伟大的unix遭到挑战,那是一种怎样的场景和心情。
X-window。尽管我们很心痛,却已经有人在进行这个工作了,这就是X,大牛们高瞻远瞩,在机器还跟蜗牛赛跑的时候,他们已经在设计一个基于图形界面的人机交互环境了。X与Emacs从相同的出发点启程,都是从人的视角出发,但是走了不同的路线。它的野心太庞大了,试图让机器用图形的方式与人类沟通。这几乎不可能。X采取了妥协的方案,它与Shell有效兼容,互为补充,它与Shell整合在一起,提升了沟通的效率。而Windows则像一个白痴,一心想用图形囊括一切,当它发现这不可能实现时,它用谎言用垄断用污蔑误导一切来试图证明自己的正确。X以自己的方式挑战Shell和Emacs联盟,因为他们属于字符沟通方式,而X是图形化的。图形化有两种,一种是对Shell的图形化,这是一个白痴的想法,强迫机器用它不擅长的方式进行思考,甚至白痴的把图形支持放到内核中。另一种是对Emacs的图形化,代表是X。
X和Emacs都是以人为出发点,X坚持人类的声音,而Emacs在当前采取了恰如其分的妥协,而取得了一个很好的均衡。
Shell、X、Emacs代表了三种主要的人机交互理念,它包括对机器,对操作系统,对计算机系统的思考,更包括对人机关系的思考。
另一问题是内核,或者说操作系统。操作系统是什么?从人机交互的视角看,操作系统是硬件的封装器,它在裸机之上提供一台逻辑的计算机,方便程序的使用。这仅仅是从人机交互的视角看。当然,从操作系统本身看,又是另一个结论了。
关于Lisp:Emacs路线建立在字符解析的基础上,Lisp就是后台。X到目前为止,似乎没有找到一个有效的理论体系以支撑它的人性化。但这并不代表没有,未来还长,谁也说不好。
文本人机交互界面系统。基于字符的人类代理系统,代表人类与机器交互,与之相反,shell代表机器,提供一个与人沟通的接口。微软想走基于图形的人机交互,但现在的技术达不到真正的无障碍实用。
3,结论
于是有一个问题,怎么对各个程序分类,比如,各个程序应该在哪个平台上运行更合理。比如,Lex在emacs运行合理一些,关于与用户相关而与系统没有丝毫关系的一切软件,比较适合与X整合,与Emacs整合,而与系统相关的程序,在shell的支持下运行更合理。还有一堆工具属于lib工具,比如Sed。
对于三者的关系,仍然需要思考。这些远不是结论,而已一个抛砖引玉的起点,未来的路还很长,未来的争论,会更激烈。
  评论这张
 
阅读(391)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017