VimEmacs集成开发环境IntelliJ IDEA

为什么很多人认为编辑器比 IDE 更酷?

问题描述

做一个像 IntelliJ 这么厉害的 IDE,明明是一件很酷的事情。能写出这样软件的人,水平应该不低,若是他们本人出现,恐怕没有多少人敢于说他们水平低、不酷、不够黑客。

为这样的平台做开发也很酷。IDE 扩展性并不比编辑器更弱,甚至更强(IntelliJ Platform SDK Documentation / IntelliJ Platform SDK DevGuide)。IntelliJ 只要有解析器(可以从语法文件迅速生成),再稍加修改就能作出带有跳转、高亮、静态分析、自动格式化、自动补全的新语言插件。只要愿意钻研,可以实现的功能几乎没有限制,比大部分编辑器简陋的自动补全和高亮(我怀疑仅仅是基于 tokenize 的)高到不知道哪里去了。实际上,对语言理论具有同样造诣的人,在 IDE 上开发语言支持,相比在编辑器上应该更得力。

就现状而言,IDE 对 C/C++/Objective-C/Swift/C#/Java/Groovy/Scala/Clojure/Ruby/Python/Kotlin/PHP/JavaScript/CoffeeScript/TypeScript/VB.NET/Go/SQL/PHP/Shell 等编程语言的支持都显然在编辑器之上,更不用说周边的模板语言、标记语言、样式语言了。就连许多配置文件都有良好支持。其实配置文件语法简单,做 IDE 支持并不难。

在这样的平台上做开发难道不酷吗?比如上服务器修改文件,只要能 SSH 就可以用 SFTP,IDE 同样可以做到这个功能,并不为轻量级编辑器所独。对于键盘流,IDE 插件能模拟各种编辑器的快捷键,IDE 本身的操作也都可以分配快捷键。至于调试、自动化什么的,更是不在话下,还可以有图形化监控。

但是人们为什么会有「用 Vim/Emacs 才是真正的黑客,IDE 都是弱者才用的」这类想法呢?
地铁风
不会撸程序的设计狮不是好科研狗

因为 IDE 只能用来写代码,而编辑器可以做更多的事情。

我是 Emacs 用户,举几个栗子:

  • Org-mode. 我高度依赖 org-mode, 这玩意的功能如此之多,以至于你基本上不可能仅凭兴趣完整移植到其他编辑器/IDE上。当然你可以说日程管理有很多 fancy 的软件可以做啊,omni 什么什么的,名字我忘了,文档也有很多 fancy 的软件可以做啊,尤利西斯什么的,time-tracking 也有很多软件可以做啊…… 等等等等,然而 Org-mode 都做了,而且都做的不错,而且还和写代码结合起来了,于是就变成了一个 killer feature.
  • Calc. 我同样高度依赖。这玩意绝对是杀手级,无限堆栈的 RPN、自定义 notation、branch cut 计算(还有其他能算复变函数的计算器么?更不要说 branch cut 了)、线性代数、符号计算、带单位计算、画图、可编程(废话)等等等等…… 其中每个功能单独写成程序都能卖钱。咱们就不和计算器程序比了,我电脑上功能最接近的程序我想了想居然是 Mathematica...

所以你看到了,IDE 只能用来写代码,然而黑客不仅想 hack 代码,还要 hack 其他很多东西,很多人总是把「黑客」这个概念局限在码农的范畴,这个想法实在是太不黑客了…… 一个酷的人可以用酷的工具做很多很酷的事,以上仅仅是两个例子。当然你可以说一个有良好 API 的 IDE 这些都可以做,但是「可以做」和「有」是两个概念,这两个概念的区别就是「积累」;当然也离不开 Emacs 社区的 hacker 氛围。

顺便吐几个槽:

  • 我用过 PyCharm, 写 Python 不知道比 Emacs 高到哪里去了,然而在我的电脑上刚启动完打第一个字需要等五分钟(不是启动时间,是打字的反应时间)。而且他家的玩意字体渲染总是特别奇怪…………
  • 我老板在我的怂恿下装了个 Atom. 他的习惯是打开一个程序以后就不关了,而且从来不关机。半年以后他吊着脸跟我说我的硬盘空间没有了怎么办…… 我说你是下了多少论文啊,都能按 T 算了?然后我跑过去一看,Atom 的 cache(吧?)占用了好几百 G, 关了以后就释放了。

更新:

突然想起来一件事,界面上都没有 nyan cat,何谈「酷」?

34 赞同 7 感谢 16 收藏 12 条已备份评论 发布于 2016-06-16 知乎原页 ↗

评论 12

「因为 IDE 只能用来写代码,而编辑器可以做更多的事情。」

但是如果编辑器写代码不如 IDE,为什么写代码的时候不用 IDE 呢?
0 赞
地铁风回复 Colliot作者
对于我个人来说,我已经写了,第一是因为慢,第二是因为我不想需要算东西的时候还要切换程序,也不想需要 track time 的时候切换程序。写程序只是我需求的一部分,不是我的全部需求。
2 赞
孙学长啊,我问一下IDE和编辑器有啥区别?
0 赞
地铁风回复 林樱梓作者
IDE 就是自带各种配置好的牛逼闪闪的功能啊~~ 然后写什么都得先建个「工程」……
1 赞
知乎用户e50rxn回复 地铁风
严重同意!看着andriod studio,xcode就不想学移动端开发了。vim党路过
0 赞
grapeot热评
然而emacs还是不能帮助乌干达儿童(手动骄傲脸
11 赞