竹笋

注册

 

发新话题 回复该主题

Python完全自学教程免费在线连载 [复制链接]

1#

1.8IDE简介

所谓IDE,全称是IntegratedDevelopmentEnvironment,或者IntegrationDesignEnvironment、IntegrationDebuggingEnvironment,中文全称是“集成开发环境”。一般来讲,它跟开发语言无关。参考“维基百科”的“集成开发环境”词条,对IDE如此解释:集成开发环境(IDE)是一种软件应用程序,为开发者提供软件开发所需的代码编写、自动化构建和调试等功能。

很早的程序是不需要用IDE开发的,因为那时是通过打孔卡给计算机编程(如图1-8-1所示)。

图1-8-1IBM的80列标准打孔卡图片源自“维基百科”的“打孔卡”词条

年发明的BASIC编程语言是第一个有IDE的编程语言,只是那时的IDE是命令行界面(Command-LineInterface,CLI),类似的IDE现在仍然存在,比如Vim和Emacs。如今流行的IDE多是图形用户界面(GraphicalUserInterface,GUI),比如VisualStudioCode、Eclipse等。

一款适合的IDE能够提升开发者的生产力,将开发工作的各个环节密切地整合起来,例如编辑代码同时检查语法错误、代码自动补全;将源码管理工具(比如Git)融入到IDE等。

不同的开发者有不同的偏好,不同的项目有不同的需要,因此,一般而言没有哪一个IDE能够“一统江湖”,尽管有的IDE号称“普遍适用于”各种场景,也只能是在某个领域或者文化范围中的应用比例相对较高罢了。

即使是维基百科对IDE的描述也并非是严格定义,或者说现在很难用一个严谨的标准来判定某款编辑代码的软件程序是或者不是IDE,也没有必要为此而争论——除非要做一个名词概念的“科研课题”。所以,接下来所介绍的几种可以用来编写代码的应用程序,并不是所有人都认为是IDE,但作者没有兴趣对此进行严格的辨析,读者如果认为将它们放在“IDE”之下不适合,就权当是介绍几个与编程有关的工具软件吧。

1.8.1Vim

Vim是一个很先进的文本编辑器,它是从另外一个名为vi(visual的不正规缩写)的文本编辑器发展而来,最初的作者是布拉姆·米勒(BramMoolenaar)。年11月份发布了初始版本——此时Vim是ViIMitation的简称。后来,Vim被移植到UNIX和MS-DOS上——其全称又变成了ViIMproved。自此之后,Vim就跟UNIX形影不离,乃至于此后发展出来的Linux上,Vim也是标配的文本编辑器。

随着时代的发展,Vim也在不断增加新的功能,比如Vim4.0开始实现GUI,Vim5.0实现了语法高亮,Vim6.0增加了代码折叠、分割视窗等,Vim7.0有了拼写检查、代码自动补全,编写本书时的最新版Vim8.2,有了更丰富的插件,在依然保持“小巧”的情况下,越来越向Emacs靠近(参阅1.8.2节),可以说Vim8.x已经“现代化”了(如图1-8-2所示)。

图1-8-2Vim8.0界面

Vim很受Python开发者欢迎——更准确地说是早期的Python开发者,此间原因未加探讨,有兴趣者可以分析。

如果使用Vim,可以到其官方网站vim.org下载与操作系统匹配的安装程序(如图1-8-3所示)。

图1-8-3Vim下载界面部分截图

在Vim官方网站的首页,有一幅有意思的漫画,此处摘抄下来(如图1-8-4所示)。

图1-8-4关于Vim漫画

漫画中,第一幅图就指出Emacs虽然功能强悍,但是“太重了”;第二幅图则指出Vi是一个奇怪的家伙——不符合人体工学的要求;最好的就是Vim:短小精悍,还免费。

在开发者中,也流传着很多关于Vim和Emacs逸闻趣事。

1.8.2Emacs

严格地说,Emacs不是一个编辑器,而是一个编辑器家族。它自诞生以来,演化出了众多分支,比如GNUEmacs、XEmacs,而且在这两个分支基础上还有更多变种。

Emacs的拥趸常说它“像个操作系统”,这是因为Emacs除了具有文本编辑和其他编程常用的功能之外,还有(以下所列仅仅是部分,内容参考“维基百科”的“Emacs”词条):

收发电子邮件、新闻组

登录远程主机

访问Twitter

编辑电子表格

模拟其他编辑器,如vi、WordStar、EDT、TPU等

编辑维基百科

计算器

记笔记、日记

管理日程

浏览网站

等等。当然,每个功能都由插件实现。通过此列表,就可以理解图1-8-4中第一幅的含义了。Emacs“像个操作系统”,的确“太重了”。但是,这并不能挡住拥趸们的狂热,冒昧揣测,或许是出身高贵——年诞生于MIT人工智能实验室。若要体验Emacs的强悍,可以到官方网站

分享 转发
TOP
发新话题 回复该主题