所谓 IDE ,全称是 Integrated Development Environment ,或者 Integration Design Environment、Integration Debugging Environment ,中文全称是“集成开发环境”。一般来讲,它跟开发语言无关。参考“维基百科”的“集成开发环境”词条,对 IDE 如此解释:集成开发环境( IDE )是一种软件应用程序,为开发者提供软件开发所需的代码编写、自动化构建和调试等功能。
很早的程序是不需要用 IDE 开发的,因为那时是通过打孔卡给计算机编程(如图1-8-1所示)。
图1-8-1 IBM 的80列标准打孔卡 图片源自“维基百科”的“打孔卡”词条
1964年发明的 BASIC 编程语言是第一个有 IDE 的编程语言,只是那时的 IDE 是命令行界面( Command-Line Interface,CLI ),类似的 IDE 现在仍然存在,比如 Vim 和 Emacs 。如今流行的 IDE 多是图形用户界面( Graphical User Interface,GUI ),比如 Visual Studio Code、Eclipse 等。
一款适合的 IDE 能够提升开发者的生产力,将开发工作的各个环节密切地整合起来,例如编辑代码同时检查语法错误、代码自动补全;将源码管理工具(比如 Git )融入到 IDE 等。
不同的开发者有不同的偏好,不同的项目有不同的需要,因此,一般而言没有哪一个 IDE 能够“一统江湖”,尽管有的 IDE 号称“普遍适用于”各种场景,也只能是在某个领域或者文化范围中的应用比例相对较高罢了。
即使是维基百科对 IDE 的描述也并非是严格定义,或者说现在很难用一个严谨的标准来判定某款编辑代码的软件程序是或者不是 IDE,也没有必要为此而争论——除非要做一个名词概念的“科研课题”。所以,接下来所介绍的几种可以用来编写代码的应用程序,并不是所有人都认为是 IDE ,但作者没有兴趣对此进行严格的辨析,读者如果认为将它们放在“ IDE ”之下不适合,就权当是介绍几个与编程有关的工具软件吧。
Vim 是一个很先进的文本编辑器,它是从另外一个名为 vi( visual 的不正规缩写)的文本编辑器发展而来,最初的作者是布拉姆·米勒( Bram Moolenaar )。1991年11月份发布了初始版本——此时 Vim 是 Vi IMitation 的简称。后来,Vim 被移植到 UNIX 和 MS-DOS 上——其全称又变成了 Vi IMproved 。自此之后,Vim 就跟 UNIX 形影不离,乃至于此后发展出来的 Linux 上,Vim 也是标配的文本编辑器。
随着时代的发展,Vim 也在不断增加新的功能,比如 Vim 4.0 开始实现 GUI ,Vim 5.0 实现了语法高亮,Vim 6.0 增加了代码折叠、分割视窗等,Vim 7.0 有了拼写检查、代码自动补全,编写本书时的最新版 Vim 8.2 ,有了更丰富的插件,在依然保持“小巧”的情况下,越来越向 Emacs 靠近(参阅1.8.2节),可以说 Vim 8.x 已经“现代化”了(如图1-8-2所示)。
图1-8-2 Vim 8.0 界面
Vim 很受 Python 开发者欢迎——更准确地说是早期的 Python 开发者,此间原因未加探讨,有兴趣者可以分析。
如果使用 Vim ,可以到其官方网站 vim.org 下载与操作系统匹配的安装程序(如图1-8-3所示)。
图1-8-3 Vim 下载界面部分截图
在 Vim 官方网站的首页,有一幅有意思的漫画,此处摘抄下来(如图1-8-4所示)。
图1-8-4 关于 Vim 漫画
漫画中,第一幅图就指出 Emacs 虽然功能强悍,但是“太重了”;第二幅图则指出 Vi 是一个奇怪的家伙——不符合人体工学的要求;最好的就是 Vim :短小精悍,还免费。
在开发者中,也流传着很多关于 Vim 和 Emacs 逸闻趣事。
严格地说,Emacs 不是一个编辑器,而是一个编辑器家族。它自诞生以来,演化出了众多分支,比如 GNU Emacs、XEmacs ,而且在这两个分支基础上还有更多变种。
Emacs 的拥趸常说它“像个操作系统”,这是因为 Emacs 除了具有文本编辑和其他编程常用的功能之外,还有(以下所列仅仅是部分,内容参考“维基百科”的“ Emacs ”词条):
等等。当然,每个功能都由插件实现。通过此列表,就可以理解图1-8-4中第一幅的含义了。Emacs “像个操作系统”,的确“太重了”。但是,这并不能挡住拥趸们的狂热,冒昧揣测,或许是出身高贵——1970年诞生于 MIT 人工智能实验室。若要体验 Emacs 的强悍,可以到官方网站 https://www.gnu.org/software/emacs/ 下载最新版本(如图1-8-5所示)
图1-8-5 Emacs 下载页面部分截图
已经了解 Vim 和 Emacs ,应该如何选用?不要着急做出决策,再看一个令人不寒而栗的“学习曲线图”。图1-8-6是网络上流传的这两款编辑器的学习曲线图对比:
图1-8-6 学习曲线对比
所以,江湖上流传着这样说法:Vim 是“编辑器之神”——精悍、高效,Linux 必备;Emacs 是“神的编辑器”——只有“神”才能熟练应用所有功能。
对于这两款编辑器,如果读者望而生畏,也不为过。是否尝试,请自己决断。
★自学建议 此处抄录王安石的散文《游褒禅山记》的部分内容: 夫夷以近,则游者众;险以远,则至者少。而世之奇伟、瑰怪,非常之观,常在于险远,而人之所罕至焉,故非有志者不能至也。有志矣,不随以止也,然力不足者,亦不能至也。有志与力,而又不随以怠,至于幽暗昏惑而无物以相之,亦不能至也。然力足以至焉,于人为可讥,而在己为有悔;尽吾志也而不能至者,可以无悔矣,其孰能讥之乎?此余之所得也!”
除了 Vim 和 Emacs 之外的代码编辑器,都归类到本节,也有的资料把它们才归类为真正的或狭义的 IDE 。这类 IDE 都是 GUI 类型,并且基本操作方法雷同——通常“鼠标+菜单”能完成所有操作。
1. Visual Studio Code
Visual Studio Code(简称:VS Code )是微软出品的免费代码编辑器,默认支持 JavaScript、TypeScript、CSS 和 HTML,通过下载扩展插件支持 Python、C/C++、Java 等多种编程语言,还具有语法高亮、代码自动补全、代码折叠等常用功能。
VS Code 的官方网站是:https://code.visualstudio.com/ ,可以根据自己的操作系统下载相应的安装程序,图1-8-7所示的是其编辑界面。
图1-8-7 VS Code 界面
VS Code 的诱人之处在于任何人都可以开发扩展,并且背靠微软的大树,颇受开发者欢迎(2019年 Stack Overflow 调查显示,在87317的受访者中有50.7%的声称正在使用 VS Code ),如果读者在安装了 VS Code 之后,可以在 https://marketplace.visualstudio.com/VSCode 查看所需扩展,或者在 VS Code 内部进行搜索,如图1-8-8所示,确认本地计算机已经连接到国际互联网后,根据自己的需要,点击“ Install ”按钮即可安装该项。
图1-8-8 搜索 Python 语言的扩展
2. PyCharm
在介绍 PyCharm 之前,要先了解 JetBrains 公司,这是一家捷克软件公司(特别声明:本书作者和出版社与此公司无任何利益关系),它生产了很多面向开发者的工具:
PyCharm 是 JetBrains 公司开发的主要用于 Python 语言开发的 IDE,它具有 Windows、macOS 和Linux 版本,并且发行有社区版和专业版。除了具有常规 IDE 的功能,如:代码分析、程序调试等之外, PyCharm 还特别对 Django、Flask 等常用的 Python 网络开发框架给予支持。
PyCharm 官方网站是 https://www.jetbrains.com/pycharm/ ,读者可以根据自己的需要至此下载。
3. Jupyter
很多人并不将 Jupyter 视为 IDE,特别是做软件开发工作的程序员,他们往往依据 Eclipse(一款 IDE 软件) 或 VS Code 等来判断别人家的是不是 IDE,未免狭隘。须知,当今如火如荼的数据科学领域,Jupyter 是最受欢迎的代码编辑工具——从狭义的角度讲,可以加上“之一”。
Jupyter 是一个基于 Web 的交互式计算环境,当创建一个 Jupyter Notebook 文档(简称:Notebook,以.ipynb
为扩展名)后,即可在其中编写程序代码,并基于浏览器运行和返回运行结果。
目前,Jupyter 官方网站 https://jupyter.org/ 提供针对各种常用操作系统的安装程序,以及对应的安装方法、使用文档等。图1-8-9所示为已经运行并创建了Jupyter Notebook 文档后的效果。
图1-8-9 Jupyter Notebook 截图
如果读者想深入了解 Jupyter 在数据科学中应用,可以参阅第12章12.4节示例内容,更完整的学习内容则请阅读拙作《跟老齐学Python:数据分析》(电子工业出版社出版)。
4. Anaconda
Anaconda 是另外一款在数据科学中常用的软件程序,其官方网站是 https://www.anaconda.com/ ,关于它的详细内容,读者可以自行浏览网页,此处不进行介绍,因为后面本书不使用它。
★自学建议 阅读了本节内容之后,读者对 IDE 有了初步了解,就要至少选择并安装一种代码编辑软件。 有的学习者喜欢在这方面花费较大的精力,追求“大而全”、“完全自动化”、“最先进”、“更多绚烂技法”等听起来令人振奋的描述。看到或听到某种新奇的功能,也总想在 IDE 上实现。 至少对于初学者,我不赞成如上追求和做法。要认识到,IDE 终究只是写代码的工具,不能代替代码本身。在本书中,我不会使用任何 IDE 的花样技法演示代码的编写和调试——甚至于使用最笨拙的方法——而是要聚焦于编程语言本身。 至于应该选择哪种 IDE ,此处也不替读者决策,仅建议读者不要在 IDE 上花费太多精力。”