IDE所需的最低功能集?

IDE所需的最低功能集?,ide,Ide,在一个软件可以被合法地称为集成开发环境(IDE)之前,最基本的功能要求是什么?或者换一种方式问一下,IDE与以程序员为中心的强大文本编辑器的区别是什么 我认为任何IDE都至少需要具备: 基本文本编辑功能(例如剪切、复制、粘贴、撤消、重做、查找、替换) 基于特定语言代码结构的“智能”缩进功能 语言特定语法突出显示 类似智能感知的代码协助/完成 一些代码导航功能,无论是“类视图”样式的树显示、快速“导航到”功能(la Resharper和最近的VS2010),还是代码大纲/折叠 能够与命令行工具(

在一个软件可以被合法地称为集成开发环境(IDE)之前,最基本的功能要求是什么?或者换一种方式问一下,IDE与以程序员为中心的强大文本编辑器的区别是什么

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

  • 基本文本编辑功能(例如剪切、复制、粘贴、撤消、重做、查找、替换)
  • 基于特定语言代码结构的“智能”缩进功能
  • 语言特定语法突出显示
  • 类似智能感知的代码协助/完成
  • 一些代码导航功能,无论是“类视图”样式的树显示、快速“导航到”功能(la Resharper和最近的VS2010),还是代码大纲/折叠
  • 能够与命令行工具(例如编译器)交互,包括将输出反馈到IDE的能力
  • 设置断点、调试运行代码,然后显示有关运行代码状态的实时信息的能力
  • “项目”的概念,或用于组织/编译目的的文件分组
此列表有任何更改/添加吗?视觉设计表面和图表工具等功能如何?这些是将应用程序视为IDE所必需的吗


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

我想说,当编辑器包含编译和调试支持时,它将正式成为IDE。

为了成为IDE,我认为您所需要的是能够:

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

其他一切都是虚饰

我认为受限功能集始终依赖于语言。例如,许多语言将使用代码编译运行调试周期(例如,C、C++、java)进行编程,而其他语言则更为交互式,如Python和普通Lisp。p> 例如,在第一组中,我希望有一个IDE能够启动编译器(将其输出消息链接到我的代码),运行生成的二进制文件,在代码上放置断点,并在断点上检查堆栈跟踪。(Eclipse就是这种IDE的一个例子)

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

无论如何,这不是编程语言组/族的完整覆盖范围;这只是为了说明我的观点,IDE必须提供与特定PL开发风格的紧密连接。其他一些特性,如代码补全和语法突出显示,过于笼统,因此它们被应用到面向程序员的文本编辑器中。但是IDE中的“ID”表示集成开发,因此它应该涵盖所有您需要做的事情,而不必求助于其他工具,例如终端(或者至少将外部工具集减少到最低限度!)

关于特定的特性,如前面提到的可视化/图表编辑器,如果您使用它来开发程序,它们是有意义的。因此,UI编辑器对于IDE只适用于所有编程语言的子集是有意义的。但是一旦你考虑了思维导图编辑器和“虚拟”白板/素描书,事情就会变得更难定义。很明显,您可以使用它在任何PL中开发产品,但IDE应该为它们提供支持并不是很明显(至少对我来说是这样)。。。协作支持也是如此。因此,这种特性确实丰富了IDE,也丰富了任何生产工具。也许这是一个信号,表明它应该由操作系统提供?:)我相信集成开发的概念涵盖了从输入工件(程序员产生的输入)到最终输出二进制文件的整个周期。这意味着sratchpad之类的东西将不会是IDE的关键部分,但UML图编辑器可能会是(如果可以从中推断代码的话)

还有其他一些关于IDE上最喜欢的特性的话题,请参见


(出于好奇,你会如何为自己选择“正确”的答案?这看起来更像是一个讨论开始,可能是一个维基,而不是一个问答线程)

这可能是一个更好的社区维基。是的……我想在提交之前检查一下。谢谢尽管这是我自己的问题,我还是投票决定结束它。这在当时对我来说是有意义的,但我只是在想一个概念——这并不是一个在网站上存在问题的好理由。