IDE所需的最低功能集?

时间:2010-08-10 16:37:12

标签: ide

在将某个软件合法地称为集成开发环境(IDE)之前,所需的最低功能是什么?或者换一种方式来说,IDE与仅仅是以程序员为中心的功能的强大文本编辑器的区别是什么?

我认为任何IDE都需要,至少:

  • 基本文本编辑功能(例如剪切,复制,粘贴,撤消,重做,查找,替换),
  • 基于特定语言代码构造的“智能”缩进功能,
  • 特定于语言的语法高亮显示,
  • 智能感知代码辅助/完成,
  • 一些代码导航功能,无论是“类视图”式树形显示,快速“导航到”功能(la Resharper和最近的VS2010),还是代码概述/折叠,
  • 能够与命令行工具(例如编译器)进行交互,包括将输出管道输送回IDE的能力,
  • 能够设置断点,调试运行代码,然后显示有关运行代码状态的实时信息,
  • “项目”的概念,或用于组织/编制目的的文件分组。

此列表的任何更改/添加?视觉设计表面和图表工具等功能如何?应用程序必须将其视为IDE吗?

每个项目的单独答案可能都有意义。

3 个答案:

答案 0 :(得分:0)

我想说编辑器在包含对编译和调试的支持时正式成为IDE。

答案 1 :(得分:0)

为了成为一名IDE,我认为你所需要的只是:

  • 编辑代码
  • 编译代码(如有必要)
  • 运行代码
  • 调试代码

其他一切都只是褶边。

答案 2 :(得分:0)

我认为受限制的功能集总是依赖于语言。例如,许多语言将使用代码编译运行调试循环(例如,C,C ++,Java)进行编程,其他语言更具交互性,如Python和Common Lisp。

因此,例如,在第一组中,我想要一个能够启动编译器的IDE(将其输出消息链接到我的代码),运行生成的二进制文件,在代码上放置断点并检查堆栈 - 休息时的痕迹。 (Eclipse就是这种IDE的一个例子)

对于第二组,我宁愿使用基于Read-Eval-Print-Loop的IDE,它允许我评估代码工件本身的代码位,检查变量,并且通常保持代码工件之间的紧密关系。运行时内存状态 - 动态。 (Emacs + SLIME就是这种IDE的一个例子。)

这绝不是对编程语言组/家庭的完整报道;只是为了表明我的观点,IDE必须提供与特定PL开发风格的紧密联系。其他一些功能(如代码完成和语法突出显示)过于笼统,因此它们可以用于那些面向程序员的文本编辑器。但IDE中的“ID”表示集成开发,因此它应该涵盖您需要做的所有事情,而无需借助其他工具,例如终端(或者至少将外部工具集减少到最少!)。 p>

关于特定功能,如上面提到的可视/图表编辑器,如果您使用它来开发程序,它们就有意义。因此,UI编辑器仅适用于所有编程语言的子集。但是一旦你考虑思维导图编辑器和“虚拟”白板/速写本,事情就会变得难以定义。显而易见的是,您可以使用它来开发任何PL中的产品,但对于IDE来说,它应该为它们提供支持并不是那么明显(至少对我而言)......协作支持也是如此。因此,这种功能确实丰富了IDE - 以及任何生产力工具。也许这表明它应该由操作系统提供? :)我相信集成开发的概念涵盖了从输入工件(程序员生成的输入)到最终输出二进制的整个循环。这意味着像sratchpads这样的东西不会是IDE的关键部分,但是UML图编辑器可能会(如果可以从中推断出代码)。

还有其他SO主题讨论IDE上最喜欢的功能,例如, this one

(出于好奇,你会如何为你选择“正确”的答案?这看起来更像是一个讨论首发,也许是一个维基,而不是一个Q& A线程)