首先明确一点,我们讨论的是学习C语言而不是使用C语言做软件开发,根据目的不同,方式自然也不一样,学习的目的是为了更好地掌握C语言并正确地使用它,而使用C语言进行软件开发则要求方便高效。所以开发当然还是使用IDE更高效一些,而学习则建议使用编辑器加命令行编译工具,或者干脆在Linux平台学习,原因主要有下面几个。
第一、也是最关键的原因,大型集成开发环境,比如最出名的VS,在背后为我们做了很多事情,自然也就对我们隐藏了很多细节,但是这些并非全是好事,因为如果你不知道IDE在背后为你做了什么,一旦遇到问题,可能就很难解决了;相反,如果你知道了它们背后的秘密,所有的问题都会变得简单很多。这里是我的一点个人感受,我是从VS6.0时代正式开启编程生涯的,刚开始使用时,简直太棒了,只要点击几下鼠标,就可以为你创建一个工程的骨架,但是随着使用的深入,却发现越来越多的问题,特别是后来因为工作需要转到Linux的时候,发现自己在这个新环境就像一个小白一样,最后又花费了不少精力来学习make工具的使用。所以我认为先使用IDE,转到各种make工具会比较困难;相反,如果先学会从命令行编译开始,再使用make工具,然后再使用IDE开发,沿着技术进步的过程前进,会为你打下坚实的基础。
第二、C语言与类Unix系统有着天生的联系,这里说的类Unix系统就是各种Unix系统和Linux系统以及它们的变体,它不但是这些操作系统的开发语言,而且也是在这些平台开发的主要语言。编辑器和编译器开发更切近这些类Unix系统的风格,特别是直接在类Unix平台学习,不但学习了C语言,还掌握了一些系统的常用命令。要知道,在水平基本相同的情况下在类Unix系统做开发要比Windows开发待遇更高一些,所以,何乐而不为呢?
第三、不可否认现代IDE包含的功能越来越多,为开发者提供了越来越多的便利,但是它们的安装与配置也变得越来越复杂,而且这种IDE也需要花费一定的时间和精力去学习,对于新手而言经常会无所适从。
所以我的观点是,对于C语言初学者,为了将目标聚焦到C语言本身,只需要一款简单易用的编译工具加编辑器即可。其中在Windows平台可选MinGW+Notepad++组合即可,Linux系统因为自带编译工具,只需要找一个适合自己的编辑器即可,Notepad++也支持Linux系统,当然也可以使用Vim。