所谓工欲善其事,必先利其器。程序员想写好代码,一个顺手的编辑器必不可少。新手总会被这样的问题困扰:什么是 IDE,什么是编辑器,又应该怎么选择呢?本文将做一个简单的归纳,抛砖引玉。

编辑器

编辑器就是能编辑文字的就是编辑器,所以 Office Word、记事本都算是编辑器。那么我们为什么不能用它们写代码呢?答案是,可以,但它不顺手。因为代码是一个对人不友好的东西,内容复杂、要求精准细心,所以我们需要一定的辅助。

于是正宗的代码编辑器会提供语法高亮、自动补全、语法检查等等方便好用的功能,大大提高写代码的效率。并且,由于不同的编程语言、不同的开发环境、不同的场景需求,分别又需要不同额外的功能,所以主流编辑器都会有一个丰富的插件社区,你需要什么方面的功能,就安装相应的插件。

IDE

IDE 是集成开发环境的缩写。 所谓集成就是所有相关的功能都组合在一起的意思。当你要做一个特定的项目,其实有一些很常用的功能需要经常使用,如果你使用编辑器,就需要一一安装相关插件,并且插件之间有可能存在依赖关系和潜在矛盾,组织起来并不是百分百的顺利。于是一些常见的场景,可以直接把所有你可能需要的功能都打包在一起,构成一个大软件,直接给你开箱即用,不需要做过多的配置。

对比

对于新手而言,一开始一定会觉得 IDE 是好的。没错,一个所有功能都齐全的强大的工具,新手用起来会比较轻松;而编辑器需要慢慢地打磨和配置,需要时间的积累。因此从纯粹的功能的角度来看,的确 IDE 优于一般编辑器。但是二者也有各自的优劣。

IDE 的主要缺点在于:

  • 由于功能齐全,软件十分庞大,启动速度缓慢,占用资源很多。就是,吃性能、费电。

  • 一个 IDE 往往只针对某一语言、某一开发场景的,如果你有多种开发需求,可能需要安装多个 IDE。

  • 好的 IDE 多是几家大公司的商业产品,大部分需要付费(当然对于我们学生来说有教育版往往是免费的)。

编辑器的优势在于:

  • 大部分开源免费。运行起来占用资源小。

  • 定制化程度很高,可以按自己习惯打磨,保留需要的功能,不必安装不需要的功能,适合有程序洁癖者。

  • 扩展性强,一个编辑器通常能应对非常多的场景。

怎么选

小孩子才做选择,成年人全都要。你在学习的时候逐渐就会有一个主要的开发方向,可以针对这个方向使用一个 IDE。同时,你也不会只做这一件事,其它事情就可以用通用编辑器一起解决。例如对于计科 NJUer 来说,一开始会学习 C 和 C++,那么针对这个选择一个 IDE,例如 Visual Studio。然后你平时可能需要写 Python、shell 脚本、Latex 等等,那就可以使用一个编辑器完成这些杂七杂八的事情。

一些常见编辑器/IDE 推荐

编辑器

  • Visual Studio Code: 现代最流行的编辑器,微软的开源编辑器,插件多,用户多,社区活跃,使用方便。

  • Emacs:古老编辑器之一,以其多种多样的快捷键著名,属于 GNU 自由软件。扩展性极强,专有 Elisp 语言为其编写逻辑,如果会 Elisp 便可方便自定义各种功能。更多细节可参考我的博客

  • Vim:古老编辑器之一,以其独特高效的编辑方式著名。大部分 Linux 发行版集成 Vim (或其前身 Vi)。轻量、快捷。

Emacs 和 Vim 都是在尚未有图形界面的年代诞生的。因此,它们天生就不需要鼠标进行编辑,可以在终端内直接使用。事实上,完全使用键盘来做编程工作非常高效、顺手,使用鼠标非常打断码代码的酣畅感觉。也因此它们的操作方式也以插件的形式可在其它各种编辑器/IDE 中使用,经久不衰。

其它编辑器:如 Atom、Sublime Text 等等,流行度都无法超过 Visual Studio Code。

IDE

微软 Visual Studio可以说是 Windows 平台必装 IDE 了,有学生免费版。功能很强很全,尤其是作为 C/C++ IDE 时,支持多种语言。

JetBrains:一家专做 IDE 的公司。每种常见语言都有一款 IDE,且都是跨平台,Win、macOS、Linux 都可使用。虽然很贵,但也对学生免费,NJUer 需要使用学信网做认证。列三种:

  • Java IDE IntelliJ IDEA: 非常著名,写 Java 的话非它莫属。

  • Python IDE PyCharm:评价很高。但是如果不是做主要使用 Python 的领域,大多是用 Python 写一些脚本,用编辑器就足够了。

  • C/C++ IDE CLion: 评价较为一般。

macOS 的 Xcode:主要用于 iOS、macOS 程序开发,可作为 C/C++ IDE,但其实并不是非常优秀,入门用是可以的。考虑到其 10+ GB 的空间消耗其实不是很推荐。对于计科同学,后面的 ICS、OS 课程都是非常底层的编程,用编辑器反而是一个更好的选择。