在另一个问题中,Mark高度评价了ide,说“有些人仍然不知道”为什么“他们应该使用一个……”。作为一个使用vim进行编程的人,并且在大多数/所有同事都使用vim或emacs进行所有工作的环境中工作的人,ide的优势是什么?我为什么要用它?

我相信这对一些人来说是一个棘手的问题,我对开始一场论战不感兴趣,所以请只回复你认为基于ide的方法更好的原因。我对听到为什么我不应该使用IDE不感兴趣;我已经不用了。可以这么说,我感兴趣的是听取“栅栏的另一边”的意见。

如果您认为ide可能适合某些类型的工作,但不适合其他类型的工作,我也很想知道为什么。


当前回答

我从相反的方向来回答这个问题。我从小就在Makefile+Emacs的环境中编程。从我最早的DOS编译器,微软的Quick C,我有一个IDE自动化的事情。我在Visual c++ 6.0上工作了很多年,当我毕业到Enterprise Java时,我使用Borland JBuilder,然后决定使用Eclipse,这对我来说已经变得非常高效。

Throughout my initial self-teaching, college, and now professional career, I have come to learn that any major software development done solely within the IDE becomes counterproductive. I say this because most IDE's wants you to work in their peculiar I-control-how-the-world-works style. You have to slice and dice your projects along their lines. You have manage your project builds using their odd dialog boxes. Most IDE's manage complex build dependencies between projects poorly, and dependencies can be difficult to get working 100%. I have been in situations where IDE's would not produce a working build of my code unless I did a Clean/Rebuild All. Finally, there's rarely a clean way to move your software out of development and into other environments like QA or Production from an IDE. It's usually a clicky fest to get all your deployment units built, or you've got some awkward tool that the IDE vendor gives you to bundle stuff up. But again, that tool usually demands that your project and build structure absolutely conforms to their rules - and sometimes that just won't work for your projects' requirements.

我了解到,要与团队一起进行大规模开发,如果我们使用IDE开发代码,并使用手动编写的命令行脚本进行所有构建,那么我们可以获得最高的效率。(我们喜欢用Apache Ant进行Java开发。)我们发现在IDE中运行我们的脚本对于复杂的构建来说只是一个点击或者自动化的噩梦,用alt+tab到一个shell并在那里运行脚本要容易得多(而且破坏性更小)。

Manual builds requires us to miss out on some of the niceties in the modern IDE like background compilation, but what we gain is much more critical: clean and easy builds that can live in multiple environments. The "one click build" all those agile guys talk about? We have it. Our build scripts can be directly invoked by continuous integration systems as well. Having builds managed through continuous integration allows us to more formally stage and migrate your code deployments to different environments, and lets us know almost immediately when someone checks in bad code that breaks the build or unit tests.

In truth, my taking the role of build away from the IDE hasn't hurt us too badly. The intellisense and refactoring tools in Eclipse are still completely useful and valid - the background compilation simply serves to support those tools. And, Eclipse's peculiar slicing of projects has served as a very nice way to mentally break down our problem sets in a way everyone can understand (still a tad bit verbose for my tastes though). I think one of the most important things about Eclipse is the excellent SCM integrations, that's what makes team development so enjoyable. We use Subversion+Eclipse, and that has been very productive and very easy to train our people to become experts at.

其他回答

这取决于你使用的语言,但在c#和Java中,我发现ide对以下方面有好处:

Quickly navigating to a type without needing to worry about namespace, project etc Navigating to members by treating them as hyperlinks Autocompletion when you can't remember the names of all members by heart Automatic code generation Refactoring (massive one) Organise imports (automatically adding appropriate imports in Java, using directives in C#) Warning-as-you-type (i.e. some errors don't even require a compile cycle) Hovering over something to see the docs Keeping a view of files, errors/warnings/console/unit tests etc and source code all on the screen at the same time in a useful way Ease of running unit tests from the same window Integrated debugging Integrated source control Navigating to where a compile-time error or run-time exception occurred directly from the error details. Etc!

所有这些都节省时间。这些事情我可以手动完成,但会更痛苦:我宁愿编写代码。

对我来说,这肯定会提高我的工作效率。我甚至在Vista上的Visual Studio中编写Linux应用程序,然后使用Linux虚拟机来构建它们。

你不需要记住函数或方法调用的所有参数,一旦你开始输入它,IDE就会告诉你需要什么参数。您可以使用向导来设置项目属性、编译器选项等。您可以在整个项目中搜索内容,而不仅仅是当前文档或文件夹中的文件。如果你得到一个编译器错误,双击它,它会直接把你带到有问题的行。

集成了模型编辑器、连接和浏览外部数据库、管理代码“片段”集合、GUI建模工具等工具。所有这些东西都可以单独使用,但是将它们都放在同一个开发环境中可以节省大量时间,并使开发过程更有效地进行。

对我来说,这只是我们在终端时代所做的一切的GUI版本。我一直认为IDE不是很优秀,因为它们隐藏了很多东西,特别是关于链接的东西,但在某些情况下,它们有一个显著的优势,例如与某些开发平台,如Qt。

有些IDE甚至可以在你输入代码时解析代码,并在你编译之前检测错误:从逻辑上看,似乎只有IDE可以与编译器紧密合作,立即检测类型化源代码中的问题。

我疯狂地回答IDE/命令行之争的存在只是因为C/ c++可执行的构建不是很好地处理从标准化的角度来看,不像D语言;每个平台都以自己的方式处理编译/链接等,所以为了不那么混乱,他们制作了一个IDE。

从你的角度来看,使用命令行可能会更简单,如果只有一个带有标准选项的编译器,那就很容易了,但事实是C/ c++是灵活的,所以最后,所有平台都用自己的方式来做,因此IDE不会浪费时间解释如何做。

如果您了解可执行文件如何与内核对话,或者如果您了解编译器设计,那么也许有一种方法可以使用合适的命令行,但我怀疑您没有。

微软或苹果,他们都是邪恶的,必须提出一种直接的方法来构建应用程序,而不需要进入细节,因为构建应用程序直接依赖于操作系统的架构,它很难像命令行那样是“标准的”。

把它放在简单、大而复杂的应用程序中,你不想深入研究它的功能——> IDE,小块软件或简单的系统软件设计——>命令行。当然,除了那些嵌入Makefile的漂亮的库,但那是另一个故事。

另外,我认为IDE是在应用程序与GUI或有接口或直接绑定到操作系统的东西有关时使用的,所以,它也适用于那些使用UI/GUI但不知道它如何工作的人,而那些编写系统程序的人不需要它。

IDE只是现代的垃圾,但我认为在100年内命令行还会存在。

这在很大程度上取决于你在做什么,以及你用什么语言来做。就我个人而言,我倾向于不使用IDE(或“我的IDE包含3 xterm vim运行,运行数据库客户端,和一个bash提示或尾矿日志”,这取决于你广泛的定义IDE)的大部分时间里我的工作,但是,如果我发现自己开发一个platform-native GUI,然后我会找一个瞬间看清IDE——国际海事组织、IDE和图形形式编辑显然是天生的一对。

IDE处理繁重的工作,节省了您的时间。

它将所有相关的项目文件保存在一起,使协作变得容易。

您通常可以将源代码控制集成到IDE中,从而节省更多的繁重工作,并进一步增强协作。

如果它有自动完成功能,它可以帮助你探索你所选择的语言,还可以节省一些输入。

基本上,IDE减少了程序员的非编程工作。