⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 00000014.htm

📁 一份很好的linux入门资料
💻 HTM
字号:
<HTML><HEAD>  <TITLE>BBS水木清华站∶精华区</TITLE></HEAD><BODY><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER>发信人:&nbsp;KONG&nbsp;(霍犀子),&nbsp;信区:&nbsp;Linux&nbsp;<BR>标&nbsp;&nbsp;题:&nbsp;Re:&nbsp;[编程]&nbsp;程式设计工具杂谈&nbsp;<BR>发信站:&nbsp;BBS&nbsp;水木清华站&nbsp;(Thu&nbsp;Dec&nbsp;11&nbsp;05:11:49&nbsp;1997)&nbsp;<BR>&nbsp;<BR>花两个月看懂Emacs&nbsp;Lisp&nbsp;Reference&nbsp;Manual知道怎么编LISP程序了,&nbsp;<BR>你就什么也不愁了.那个Manual写得还是很有意思的.&nbsp;<BR>&nbsp;<BR>【&nbsp;在&nbsp;fuse&nbsp;(保险丝)&nbsp;的大作中提到:&nbsp;】&nbsp;<BR>∶<I>&nbsp;我想调试我的BBS系统,可我进了emacs差点连退都没退出去,&nbsp;</I><BR>∶<I>&nbsp;我有看那个Tutorial,&nbsp;上来先教人光标移动,吓得大跳&nbsp;</I><BR>∶<I>&nbsp;这位大侠,教教我如何用emacs调程序吧!&nbsp;</I><BR>∶<I>&nbsp;(或者哪里有一些好的资料?)&nbsp;</I><BR>∶<I>&nbsp;多谢了&nbsp;</I><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Emacs是第一个人工生命&nbsp;<BR>&nbsp;<BR>Emacs看起来像是一个其貌不扬的普通编辑器,但实际上却是个真正意义上&nbsp;<BR>的IDE(Integrated&nbsp;Developing&nbsp;Environment),和Borland,Microsoft的&nbsp;<BR>东西不同,Emacs对用户和程序员区别不大,也就是用户即程序员,程序员&nbsp;<BR>即用户.这一点是这样实现的:Emacs有一个C编的硬核,像其它C语言编的&nbsp;<BR>程序一样,这个硬核是不能轻易改变的,除非你有源码并且对系统内部有&nbsp;<BR>较深刻的了解,即使有了这些条件也必须重新make,在运行Emacs时是不能&nbsp;<BR>对这个硬核做任何代码上的修改的.安装过Emacs的人知道在安装过程中会&nbsp;<BR>生成一个temacs可执行文件,这个temacs就是完全由C实现的硬核,它实现&nbsp;<BR>的是LISP的链表解释机制和一些基本的LISP函数,比如在Emacs的&nbsp;<BR>*scratch*&nbsp;(涂鸦)&nbsp;buffer里打入:&nbsp;<BR>&nbsp;<BR>(symbol-function&nbsp;'car)&nbsp;&lt;Ctrl-j&gt;&nbsp;<BR>&nbsp;<BR>系统会告诉你&nbsp;<BR>#&lt;subr&nbsp;car&gt;&nbsp;<BR>&nbsp;<BR>就是说car是个C实现的LISP函数,属于硬核的一部分,你不能改变它的函数&nbsp;<BR>定义.&nbsp;<BR>&nbsp;<BR>其实理论上说这个硬核完全可以最小化,只包含一些最最基本的函数,大概&nbsp;<BR>用汇编就能够写出来.但为portability和performance起见,这个硬核用C&nbsp;<BR>实现并包含了基本上所有的常见LISP函数.打个比方,就像逻辑运算一样,&nbsp;<BR>尽管用NOT和AND就能够表示所有的逻辑运算,平常我们还是NOT,AND,OR齐上.&nbsp;<BR>temacs里有些LISP函数其实完全可以用一些更基本的LISP函数实现,但为了&nbsp;<BR>速度,Richard&nbsp;Stallman还是把它们用C实现了,这样做的好处是速度快了,&nbsp;<BR>坏处看完了下面你就明白了.&nbsp;<BR>&nbsp;<BR>有了temacs,以后的事情就是在它的基础上滚雪球,不断地在temacs里eval&nbsp;<BR>LISP函数,temacs知道的越来越多,功能就会越来越强.Stallman选了几个&nbsp;<BR>最基本的package,如文件操作等等,作为标准的部件,在install时就喂给&nbsp;<BR>temacs,再把LISP可执行内存映象dump下来,这就是平常大家用的emacs了.&nbsp;<BR>同样在*scratch*里打入:&nbsp;<BR>(symbol-function&nbsp;'find-file)&nbsp;&lt;Ctrl-j&gt;&nbsp;<BR>&nbsp;<BR>结果可能是&nbsp;<BR>(lambda&nbsp;(filename)&nbsp;...............)&nbsp;<BR>这就是经过eval而被temacs吸收的LISP函数;&nbsp;<BR>&nbsp;<BR>也可能是&nbsp;<BR>#[(filename)&nbsp;................]&nbsp;<BR>这是Stallman定义的一种LISP&nbsp;bytecode,用来提高LISP的运行效率,这种bytecode&nbsp;<BR>一般比功能等价的C代码还是要慢一些,但和LISP的文本代码是一一对应的,并且速&nbsp;<BR>度大大提高,必要时可以通过decompile恢复成LISP文本代码.猜测JAVA的bytecode&nbsp;<BR>借鉴了不少LISP&nbsp;bytecode的技术,JAVA可以说是一个表面上C++词法风格、实际上&nbsp;<BR>Object-oriented的type&nbsp;architecture加上LISP的run-time&nbsp;environment.JAVA&nbsp;<BR>Virtual&nbsp;Machine完全就是一台最新LISP&nbsp;Machine.&nbsp;<BR>&nbsp;<BR>言归正传,经eval而被temacs吸收的LISP函数和那种#[subr&nbsp;...]&nbsp;C函数就不一样了,&nbsp;<BR>你可以通过eval加入一些这样的函数,也可以通过unintern去掉一些这样的函数,&nbsp;<BR>还可以现改函数定义略微增加或减少一些功能,这就把一个运行程序的部件当做一&nbsp;<BR>个数据库一样可以任意剪裁,根据具体情况随意增加或减少它的功能.就像生物的&nbsp;<BR>新陈代谢一样,汲取营养,排泄废物,所以说Emacs是个生物,唯一的遗憾是这个生&nbsp;<BR>物还是个婴儿,不会自己觅食,需要用户喂它吃那些.el文件才行.&nbsp;<BR>&nbsp;<BR>Internet上最大的.el文件库在&nbsp;<BR><A HREF="ftp://archive.cis.ohio-state.edu/pub/gnu/emacs/elisp-archive/">ftp://archive.cis.ohio-state.edu/pub/gnu/emacs/elisp-archive/</A>&nbsp;<BR>用户也可以自编或改编一些现成的.el文件以实现自己需要的功能.&nbsp;<BR>&nbsp;<BR>.elc是byte-compile相应.el文件产生的byte-code文件,如何编写.el文件可参看&nbsp;<BR>Emacs的online&nbsp;info&nbsp;manuals&nbsp;(C-h&nbsp;i)的Emacs&nbsp;Lisp&nbsp;reference.&nbsp;<BR>&nbsp;<BR>用户可用load和autoload调入新的.el文件.当然调的越多Emacs就越吃内存,Emacs&nbsp;<BR>有garbage-collect函数负责回收内存,硬核里有根据情况触发garbage-collect的机&nbsp;<BR>制.&nbsp;<BR>&nbsp;<BR>用户用的一切功能都是temacs&nbsp;+&nbsp;其eval过的所有LISP函数&nbsp;+&nbsp;与Emacs配合的外部命令&nbsp;<BR>(如gdb等)实现的.其中temacs里的链表解释机制是最灵魂的部分,从有LISP的那天起&nbsp;<BR>就没变过,预eval的package可由安装者指定;与Emacs配合的外部命令可以是OS里的&nbsp;<BR>任何输入输出可处理的命令,当然能像gdb那样和Emacs有所约定的更好;所eval的&nbsp;<BR>LISP函数是最灵活的部分,用户可以随心所欲地configure,当然喜欢玩傻瓜机的人还&nbsp;<BR>是离得远一点为好.&nbsp;<BR>&nbsp;<BR>XEmacs在user&nbsp;interface上下了不少工夫,但一般而言本人觉得那并不重要.&nbsp;<BR>&nbsp;<BR>太累了,就说这么多,如果谁有出版社扒分的路子不妨可以联系一下出本中文的&nbsp;<BR>tutorial(当然应该比Emacs自带的tutorial要有意思,那个tutorial简直是降自己的格,&nbsp;<BR>它说俺就是个编辑器,大家看看俺灵不灵.结果往往是用户觉得,呸,怎么这么难用.&nbsp;<BR>像我这样想说它两句好话的只好说是您二位都搞错了).&nbsp;<BR>&nbsp;<BR>--&nbsp;<BR>从前的我,只会为一个目标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;而奋斗;&nbsp;<BR>现在的我,不为任何目标&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;也得奋斗.&nbsp;<BR>&nbsp;<BR>※&nbsp;来源:·BBS&nbsp;水木清华站&nbsp;bbs.net.tsinghua.edu.cn·[FROM:&nbsp;casio.csc.ncsu.]&nbsp;<BR><CENTER><H1>BBS水木清华站∶精华区</H1></CENTER></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -