Steve Yegge 在他的博客上发表评论:
世界上所有最伟大的工程师都使用Emacs.改变世界的类型.不是你旁边的立方体中的伟大gal.不是弗雷德,大厅里那个了不起的人.我说的是我们这个行业最伟大的软件开发人员,他们改变了行业的面貌.James Goslings,Donald Knuths,Paul Grahams,Jamie Zawinskis,Eric Bensons.真正的工程师使用Emacs.你必须聪明地使用它,如果你能掌握它,它会让你变得非常强大.如果你不相信我的话,在他工作的时候去看看Paul Nordstrom的肩膀.对于那些在整个职业生涯中使用过类似Visual Blub .NET的IDE的人来说,这真是令人大开眼界.
Emacs是100年的编辑.
上一次我使用文本编辑器编写代码时,大约1000年前我还在记事本中编写HTML.从那时起,我已经或多或少地依赖于IDE,在我的整个职业生涯中使用过Visual Studio,NetBeans,IntelliJ,Borland/Codegear Studio和Eclipse.
对于它的价值,我已经试过的Emacs,我的经验是,因为它完全缺乏外的开箱发现的功能,一个令人沮丧的.(显然有一个用于发现其他Emacs命令的Emacs命令,顺便说一句我找不到它 - 就像生活在你自己残酷的禅宗般的笑话中一样.)我试着让自己像这个程序好一个月,但最终决定我宁愿拖放GUI设计器,智能感知和交互式调试.
将事实与狂热主义分开是很难的,所以我不愿意接受Yegge的评论.
在依赖IDE的人和那些不依赖IDE的人之间,技能,生产力或编程乐趣是否存在可衡量的差异,或者这只是狂热主义?
首先让我说,我自称是对Emacs崇拜的忠实信徒.
也就是说,博客是疯子.你写的是有用的东西.我发现Emacs对我有所帮助,主要是因为我花了大学时间预先支付了学习如何根据我的需要修改它的启动成本,并根据自己的需要修改自己.
但是其他人做事的方式也不同,正如他们所说的那样"没关系".
他(Steve Yegge)在他的其他帖子中详细阐述了这一点.http://steve-yegge.blogspot.com/2008_04_01_archive.html可能是最全面的,但信息被埋在那里,因为它与主要主题相切.
我想总结一下:那些仅仅是优秀或能干的程序员会选择一个IDE并且很好地了解它,并且可能做得还不错,但他们会将自己局限于IDE为他们提供的内容.换句话说,他们适应IDE.在伟大的程序员,在另一方面,将适应他们的环境来适应自己,在这样的方式写作剧本或自己的工具,或延长他们的工具.到最后一点,不仅Emacs是最具扩展性的环境,它也是最容易扩展的环境,而且它是您获得最大收益的环境 从扩展它 - 你的扩展集成到Emacs,就像它们是股票特征,所以你的未来扩展可能建立在你以前的扩展(积极反馈循环类型的东西).
最好的程序员使用vi或emacs,因为最有经验的程序员是最好的,而20年前,除了vi和emacs之外别无选择.
在使用非常慢的文本终端的机器上开始使用vi(大约1987年)之后,我在几年后(在更快的机器上)转换为(GNU)Emacs,并且几乎专门使用了近10年.
Emacs是第一个真正集成的开发环境 - 整个编辑/链接/编译周期可以在emacs中控制,你可以为你使用的任何编译器自己动手.
如今,像eclipse这样的IDE甚至可以更好地集成(说实话:emacs糟透了图形),但Emacs仍然是"纯"文本编辑的最佳环境之一.
提高您的清晰思考和解决问题将使您成为更好的程序员.没有程序可以做到这一点.
除非我知道如何以及为什么,否则使用更好的锤子不会帮助我建造更好的房子.;)
Yegge需要见到Bill Joy.他不仅是世界上最伟大的程序员之一,还写了大量的vi.在vi.
简短可耻的忏悔:在使用vi(以及近年来的vim/gvim)20年之后,在过去一年左右的时间里我开始使用Eclipse进行java编辑(和Thunderbird用于电子邮件),尽管在我目前的工作中我的机器有这么少的内存,我通常使用vi,除非我需要调试器.
在依赖IDE的人和那些不依赖IDE的人之间,技能,生产力或编程乐趣是否存在可衡量的差异,或者这只是狂热主义?
让我们把它缩小到Visual Studio与Emacs - 这个问题太宽泛了,我怀疑大多数人(至少在StackOverflow这里)熟悉这两个人.[我是,我使用并更喜欢emacs]
接下来,让我们打破问题的三个组成部分.
编程享受归结为主要喜欢编程本身,其次是当你这样做时不会出现烦恼因素.使用您所挣扎的工具将从乐趣中减去.因此,我猜想,通过使用您喜欢和熟悉的工具,可以最大限度地享受乐趣.
当然,一旦你熟悉了新的工具,你可能会发现你喜欢的工具,并且因此会喜欢,如果你与你做编程的更多新的最喜欢的工具.我不清楚,一般人都会喜欢VS而不是emacs(反之亦然).
接下来,编程技巧.如果技能和VS/emacs的选择之间存在任何联系,我认为这是引起选择的技能,而不是引起技能的选择.根据我的经验,{VS,emacs}似乎没有让我学到更多关于编写更好代码的知识.
一个好的工具可以让我能够在较短的时间内编写相同的代码(因此代码质量相同); 如果我们假设这一点productivity = quality of code `times` code per time
,那么任何能让你在更短的时间内编写好代码的编辑都能提高生产力.
我可能对VS太熟悉,但在这里我认为emacs有一些我在VS中找不到的优点.这可能听起来很荒谬,但光标移动这样简单的东西Ctrl-[fbnp]
才是真正的好处 - 这意味着你不必将手移到箭头键上.另一件事:你可以进行搜索或替换,其中包括换行符,我经常使用它,我不想错过它.
我喜欢的另一件事是能够在我的编辑器中嵌入一个shell.根据我的经验,它在非Windows平台上更有价值(我的第一次"编程"体验,IIRC,正在编写DOS .bat文件,所以我不只是一个火红的粉丝),但在这些平台上它是一个巨大的胜利.它使emacs与"一切""集成"(使用find/locate进行文件搜索,使用grep进行文本搜索,使用svn/git/hg/...进行版本控制,将其命名).
最后的判决 - 你应该学习emacs吗?这都是狂热主义吗?如果你有时间,我会说总是值得学习做同样事情的新方法,因为新的方式可能会更好地为你工作.而且我鼓励你不要拒绝它,因为当你刚接触它时它似乎是什么.从这个意义上来说,就像切换到Dvorak键盘布局一样:起初你的速度较慢,但是一旦你加速,你可能至少和qwerty一样快,而且更舒服.我也推荐使用相同的方法来学习新的(编程)语言:因为你不懂词汇(标准库),说事情很难,但奖励仍然存在于等待你的地平线.
随着引用的文字开头"世界上所有最伟大的工程师都使用Emacs",我也不会把它当作面值.他是否了解世界上所有最伟大的工程师?这是你或我拥有的世界上最伟大的工程师名单吗?
一旦学会了,像EMACS或vi这样强大的编辑器会让你更有效率,或者至少更高效,如果碰巧没有你最喜欢的IDE.
这是"曾经学过"的部分,是杀手.使用这些工具有很多工作和实践,并且在开始时非常困难.
我个人是Emacs的粉丝,但Emacs只是一个工具.它不会让你成为一个更好的程序员,而不是一个超级花哨的笔会让你成为一个更好的作家.
澄清"伟大的程序员"使他们的环境适应自己可能有一些优点,但很多工具可以做到这一点(例如vim和SlickEdit),所以在这方面没有什么特别关于Emacs.
我认为最有可能的是"伟大的程序员"对编程充满热情,对此充满热情的人往往会找到有助于激发这种激情的工具.Emacs(和vim和SlickEdit等)就是这样一个工具.
我不相信存在差异,更多的是偏好问题.
然而,我注意到你编码的时间越长,或者你编码的级别越低,你使用emacs或vi的可能性就越高.
虽然IDE在过去十年中已经变得更好,但它们仍然包含一些安全的"泡沫"编程,远离一些丑陋的细节.往往会发生这种情况,即抽象的增加允许更多程序员在知识较少的情况下做得更多.当然,这并不适用于所有程序员,但更简单的工具确实可以为更广泛的受众带来编程.
更多关于低级工具的知识通常会转化为代码中的更多稳定性,因为意外地"反对谷物"的可能性更小.将EMACS列为唯一的领先指标是不公平的,因为它来自各种语言和工具,而且更多的是理解的深度,而不是特定的技术.
回过头来,您要么在UNIX机器上学习VI或EMACS,要么专门研究PC(好的,还有VMS,CMS,AS400等,但这些都是旧技术).这两个流程吸引了非常热衷的人,但UNIX人员倾向于想要一个复杂的解决方案,而PC人员只是希望它能够快速完成.文化非常不同.
IMHO IDE倾向于围绕特定平台或语言或操作系统进行优化:Eclipse JDT非常适合Java,Visual Studio是以C++/.NET为中心的等等.如果您只是在工作,它们可以帮助提高生产力(再次恕我直言)那个平台,但如果你改变平台,你必须基本上学习一个新的IDE(或至少一组新的插件,视图,透视图,我不知道Eclipse还有什么).
了解emacs,Textmate或vim(我的个人偏好)或任何通用编辑器的优势在于,无论您编写什么平台,您在该编辑器中获得的技能都适用.它们针对编辑文本进行了优化,一旦掌握了它们,您就可以使用任何语言高效地编辑文本.
也有Yegge的断言,伟大的程序员将他们的工具调整到他们的工作方式,而不是相反.我认为这是通用编辑器的一个胜利,因为你自定义了一个编辑器,而不是必须弄清楚如何使四个不同的IDE适应所有你想要的行为.
我认为最好的程序员往往会花费时间来定制他们的环境,使他们更快/更容易地执行他们可能做的任务.在定制环境时,Emacs是最强大的编辑器之一.它有一个陡峭的学习曲线但是,一旦你超越了它,你可以为它做的事情几乎没有限制.
曾经有人说最好的程序员是懒人; 那些,一旦他们需要不止一次做某事,就找到一种自动化方法,这样就可以减少工作量.Emacs让你变得非常非常懒惰;)