C开发最好的集成开发环境是什么?为什么要使用Emacs而不是集成开发环境?

64

根据我之前的某个问题,我正在提高我的C技能。

我的问题是,人们用什么来开发C语言?

很多人使用Emacs,已经使用了很多年了,但是相对于像Geany或KDevelop这样的IDE,学习Emacs是否更好

同时,我也想听听那些仍在使用Emacs的人,以及为什么他们选择使用它而不是其他应用程序?

请注意,我只对免费的IDE /编辑器真正感兴趣。

编辑:

感谢您发布的链接,回答了我一些问题,但我想知道的是:

与仅使用IDE相比,学习使用emacs / vim进行编辑并使用gcc工具链进行编译/调试是否值得,并且为什么?

人们不迁移到IDE的原因是什么?

有人从终端中心开发转向IDE开发吗?他们为什么会转变?


我不相信你能从这个问题中得到任何真正有价值的答案。你会得到a)一些人的个人偏好b)功能列表或亮点。你说你只对免费的感兴趣。下载几个,试用一下,选择最适合你的那一个。 - Tomas Andrle
将来,请在您的问题中明确表示您需要一个 C 编辑器/IDE,而绝对不是 C++ 编辑器,因为它们不同。 - Miles Rout
3
我下载了C和C++的Eclipse版本,它们是一样的。 - wobbily_col
10个回答

63

我起初使用IDE,无论是微软的还是其他的。然后,很久以前在做QNX的时候,我被迫使用文本编辑器+编译器/链接器。现在我更喜欢这个简单的组合——语法高亮的编辑器+C编译器和链接器命令行界面+make工具——而不是任何IDE,即使环境允许使用IDE也是如此。

对我来说,原因如下:

  1. 它无处不在。如果你使用C编程,你一定有编译器,并且通常可以获得一个编辑器。我做的第一件事——在Linux上获取nedit或在Windows上获取Notepad++。我会选择vi,但GUI编辑器提供更好的字体,当你整天看代码时,这很重要

  2. 你可以通过ssh远程编程,需要时随时可用。有时能够ssh到目标并进行一些快速操作确实有很大帮助

  3. 它让我接近CLI,最好是UNIX/Linux CLI。所以所有的命令都在我的指尖上,当我需要它们时,我不必去读参考书。UNIX CLI可以做一些IDE常常无法做到的事情,因为开发人员认为你不需要

  4. 最重要的是,它非常像在原始代码中看到矩阵。我操作文件,所以被迫让它们可管理。我手动查找我的代码中的东西,这使我保持简单和有组织。我明确地进行配置管理,所以我知道何时同步以及如何同步。我了解我的Makefile,因为我编写它们,它们只做我告诉它们的事情

    (如果你想知道它是否在“非常大的项目”中有效——它确实有效,并且项目越大,我获得的性能就越多)

  5. 当别人让我检查他们的代码时,我不必学习他们使用的IDE


25
调试器呢? - Jimmy J
4
这句话的意思是:这就是窗口的作用,一个用来编辑,另一个用来写文档。 - Javier
3
在gvim中,你可以使用更漂亮的字体,并能查看Unicode字符,而这在nedit中是不可能的。 - Alexander
6
@JimmyJ 只需在控制台上使用 GDB。 - xis
3
调试就是gdb存在的意义!它极为强大,让你可以做任何事情。 - Dylan Gattey
显示剩余4条评论

34

我已经从终端文本编辑器+make(一种自动化编译工具)的环境转换到了Eclipse,用于我大多数的项目,包括C、C++、Java和Python等语言。

原因很简单:提高生产力。我无法花费时间和精力将所有项目“记在脑中”,因为其他事情变得更加重要。

使用“硬派”方法(终端)有其优点,比如你和代码之间的层级较少,这样在你完全“内部”地进行项目并且一切都掌握在你手中时,你可以更加高效地工作。但是当你需要集中思想在别的方面时,我不认为仅出于工作方式本身而采用这种方法是可行的。

通常情况下,当你使用命令行工具时,你会频繁地解决许多样板问题,这会妨碍你的工作效率。你需要详细了解这些工具才能充分利用它们的潜力。此外,维护一个项目需要付出更多的努力。重构将导致make文件的更新等。

总结一下:如果你只处理一两个项目,最好全职从事,并且没有太多干扰,“基于终端的编码”比完整的IDE更具生产力。但是,如果你需要将思维能量花在更重要的事情上,那么IDE肯定是提高生产力的方式。

根据自己的需求进行选择。


15

Emacs是一款集成开发环境(IDE)。

编辑:好的,我来详细说明一下。什么是IDE?

作为一个起点,让我们扩展这个缩写:Integrated Development Environment(集成开发环境)。要分析这个,我从最后开始。

环境通常指围绕着视角的世界。在这种情况下,它是我们在监视器上看到、通过键盘(也许是鼠标)控制并操作的内容。

开发是我们想要在这个环境中做的事情,也就是它的目的。我们使用这个环境来开发软件,这就定义了我们需要哪些子部分:编辑器、与REPL的接口、编译器的接口、调试器的接口以及在线文档的访问等(此列表可能不完整)。

集成意味着环境的所有部分都在统一的表面下。在IDE中,我们可以用最少的切换访问和使用不同的子部分;我们不必离开我们定义的环境。这种集成使得不同的子部分能够更好地互动。例如,编辑器可以知道我们所写的语言,并给出符号自动完成、跳转到定义、自动缩进、语法高亮等功能。它可以从编译器获取信息,自动跳转到错误并将其突出显示。在大多数(如果不是所有)IDE中,编辑器自然位于开发过程的核心。

Emacs做到了这一切,并且对各种语言和任务都做得非常好,因为用户可以轻松地扩展它以满足自己的需求。

反例:您可以使用像记事本这样的软件进行开发,通过Firefox和XPdf访问文档,并从shell控制编译器和调试器。这将是一个开发环境,但它不会是集成的。


7
像伊特鲁里亚遗址中的石块与灰泥相结合一样,Emacs也是集成在一起的。说它是一个集成的IDE可能有些过头,除非你是一个Elisp魔法师。我每天早上都会打开Emacs。 - Cheeso
12
您不必成为一个elisp巫师。您可以使用别人已经制作好的东西。例如,尝试比较SLIME(Emacs的高级Lisp交互模式)与Eclipse的Lisp模式(或者叫插件?)。 - Svante

10

我曾经很成功地使用带有CDT插件的Eclipse。


1
我也是,Eclipse 刚开始可能会有些“苛刻”。但是学习它是值得花费的努力。 - Anders Hansson
4
我从来不喜欢CDT,但我说不清原因。在Eclipse环境中使用C感觉很奇怪。 - Yuval Adam
学习曲线太陡峭了,而且在我看来并没有真正的理由。学习使用GCC和pkg-config要快得多。 - WhyNotHugo
@YuvalAdam:在Java环境中编写C代码应该感觉有点奇怪,不是吗?这就像穿着定制的西装去垃圾场工作一样。对我来说,在Java环境中使用C感觉有点像在幼儿园里开酒铺,或者为听力受损的人演奏C大调的舒伯特五重奏……完全不合适,浪费时间。 - Elias Van Ootegem
记录一下,我不再支持这个选项了。Eclipse对我来说变得非常不稳定,特别是CDT。 - fluffels

5

Netbeans拥有出色的C和C++支持。有些人抱怨它臃肿而且慢,但我几乎完全使用它来进行个人项目,并且非常喜欢它。代码辅助功能是我见过最好的之一。


当我用Java编程时,我非常喜欢Netbeans。我也很欣赏IDE的一致性。 - user295190
过去我发现Netbeans和Komodo Edit在功能上相似,但Netbeans更沉重/慢一些。 - Chinasaur

5

如果Emacs内置一个文本编辑器的话,它会更好... :-)


2
作为 Vim 用户,我不理解你的意思。你能再解释一下吗? - Tim Matthews
5
好的编辑器,像vim一样!让圣战开始吧! - qrdl
19
它实际上有一个。我认为你可以按下META-CTRL-LEFT_ALT-Q+R+W来显示它! - Anders Hansson
四重巴基可乐瓶。 - Chinasaur

5
使用Code::Blocks。它拥有一切你所需的功能,并且界面非常清晰易懂。

3

为什么没有人提到Bloodshed Devc++? 我已经很久没有使用它了,但我在它上面学习了C/C++。它非常类似于MS Visual C++。


你提到了它。也许是因为它叫做DevC++,而这是一个关于C语言的问题? - Miles Rout
2
我使用 DevC++ 来编写 C 和 C++。 - CrackSmoker9000

1

如果你正在寻找一个免费、外观漂亮、跨平台的编辑器,可以试试Komodo Edit。它虽然没有Komodo IDE那么强大,但是Komodo IDE是需要付费的。请参见功能表

另一个免费的可扩展编辑器是jEdit。由于它是100%纯Java,因此可以跨平台使用。虽然不是地球上最快的IDE,但对于Java来说实际上非常快,非常灵活,只是外观不太好看。

两者都具有非常复杂的代码折叠、语法高亮(适用于您能想到的所有语言!)并且在配置个人需求方面非常灵活。顺便说一下,jEdit非常容易扩展以添加您可能需要的任何功能(它具有超级简单的脚本语言,看起来像Java,但实际上是“脚本化”的)。


-1
如果你使用的是 Windows 操作系统,那就毫无疑问地选择 Visual C++ Express。

2
为什么?这并没有真正做出任何贡献。 - WhyNotHugo
5
在过去的十年中,我可能会同意你的观点。然而,替代的集成开发环境已经得到了改进,如Eclipse、NetBeans、Code::Blocks、Emacs for Windows和Qt Creator等。此外,除Windows之外的其他平台变得越来越重要,从OS X和Linux(Ubuntu、嵌入式或服务器)到移动设备的iOS和Android。换句话说,现在不再是一个“显而易见”的世界了。即使你使用Windows,也可能需要开发其他平台的应用程序(或者让它变得可能),当然你也不必选择Visual C++。 - Alexander
2
Visual C++不支持现代C标准。它主要是一个C++ IDE,不太适合C开发。 - Alex
1
在过去,安装免费版本的Visual C++对我来说是一场噩梦;我放弃了。有一个安装程序,然后你必须找到第二个补丁安装程序,修复标准安装程序中出现问题的东西(微软:为什么不用好的替代糟糕的安装程序?)。它将二进制文件和库随意地扔在各个地方,并使自己感到困惑(更不用提你了)。这是让我放弃Windows的最后一根稻草。 - Chinasaur

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接