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

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

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


当前回答

简单地说,IDE提供了比简单编辑器更省时的特性。

其他回答

基于gui的ide(如Visual Studio和Eclipse)比基于文本的ide(如Emacs或vim)有几个优势,因为它们具有显示功能:

所见即所得预览和实时编辑的GUI设计 高效的属性编辑器(例如;使用GUI调色板选择颜色,包括定位渐变停止等) 代码概要、文件相互关系等的图形化描述 更有效地使用屏幕空间来显示断点、书签、错误等 更好的拖放支持操作系统和其他应用程序 集成编辑图纸、图像、3D模型等 显示和编辑数据库模型

基本上,使用基于gui的IDE,你可以在屏幕上获得更多有用的信息,你可以像查看文本部分一样轻松地查看/编辑应用程序的图形部分。

作为开发人员,最酷的事情之一是编辑一个计算一些数据的方法,并看到代码的实时输出以图形方式显示在另一个窗口中,就像你的用户在运行应用程序时看到的那样。现在,这就是所见即所得编辑!

基于文本的ide(如Emacs和vim)可以随着时间的推移添加代码补全和重构等特性,因此从长远来看,它们的主要限制是基于文本的显示模型。

简单地说,IDE提供了比简单编辑器更省时的特性。

作为你在你的问题中强调的回答的作者,并且承认这一点有点晚了,我不得不说,在列出的许多原因中,专业开发人员的生产力是最受重视的技能之一。

我所说的生产力是指高效地完成工作并取得最佳结果的能力。ide在许多级别上都支持这一点。我不是Emacs专家,但我怀疑它缺乏主要ide的任何特性。

设计、文档编制、跟踪、开发、构建、分析、部署和维护,这些企业应用程序中的关键步骤都可以在IDE中完成。

如果你有选择,为什么不用这么强大的东西呢?

作为实验,让自己使用一个IDE 30天,然后看看感觉如何。我很想听听你对这次经历的看法。

我认为这主要与开发者的认知范围有关。IDE提供了开发人员工作环境的宏观视图。您可以同时看到类层次结构、引用的资源、数据库模式、SDK帮助引用等。而且,由于您的击键会影响和影响如此多的事情,以及体系结构和体系结构交叉点的数量不断扩大,一次只使用一个代码岛工作变得越来越困难。

OTOH,“只有我和vim和手册页”让我对我的工作有了一个更精简的微观——但强烈而精确的——视图。如果我有一个用一种语言和一组静态库构建的设计良好、分区良好、稀疏耦合且高度内聚的代码库,那么这是可以的——这不是典型的情况,特别是当开发团队规模随着时间、距离和个人偏好而增长并重新构建代码结构时。

I'm currently working on projects in Flex and .NET. One of the nicer things about Flex is how few different ways there are to accomplish a standard thing - pull data from a database, open/close/read/write a file, etc. (Yet I'm using the Flex Builder/Eclipse IDE - a typical heavy-weight example like VS, because I'm still learning the basics and I need the training wheels. I expect to evolve back to vim once I'm confident of my patterns.) In this view, I can do what I need to do professionally by knowing a few things really really well.

OTOH, I can't imagine getting to that point with .NET because the view I'm expected to maintain keeps expanding and shifting. There much less conceptual integrity, and over several developers on a project over several months, much less consistency - but the IDE supports that, maybe encourages it. So the developer really needs to (and can more easily) know many more things adequately. Which also has the benefit of helping them answer (or even understand) a lot higher percentage of the questions on StackOverflow. I.e. we can have a deeper knowledge stack. And we can respond to a wider variety of help-wanted ads.

事情可能会朝着两个方向发展。也许对于“仅编辑器”作用域,这就像“如果你只有一把锤子,那么所有东西看起来都像钉子”。使用IDE方法,对于任何您想要固定在一起的东西,您都有广泛的紧固件和相关的工具范围可供选择- nals/锤子,螺钉/螺丝刀,螺栓/扳手,粘合剂/胶枪/夹子,磁铁等等-所有这些都在您的指尖(有向导帮助您开始)。

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

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

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