乐创DIY C语言讲义​——2.1节

2.1 一段对话引发的思考

之前有个做C语言开发的面试,面试官是我和一个同事,被面试者是一个刚刚毕业的应届生,对话大致意思如下:

面试官:你们学校里面学C语言的时候,用的什么编译器?

面试者:我们都是用的visual C。

面试结束后,我们在讨论这个问题,后来回想到,我们在念大学的时候,由于教材的局限性,也是一直以为visual C就是一个编译器,直到工作之后才了解到,这玩样叫做IDE。且不说visual C用来做C语言学习合不合适,单就从软件本身来讲,它是二十年前的东西了,也不支持windows 7竟然还有人在用。

今天趁这个机会,我们就来讲下IDE和编译器之间有哪些区别。

先来介绍一下IDE,IDE(Integrated Development Environment)一般被称为“集成开发环境”,一个完整的IDE一般包括文本编辑器,编译器,调试器等,如微软早期的visual c 6.0,eclipse,Keil,IAR等。在你刚刚接触51单片机的时候,首先学的第一课就是如何创建一个Keil C51的工程项目文件,然后你可以很方便地向里面添加你所需要的源程序,接着点击“创建工程Build”按钮,就可以输出你所需要的hex文件了。如果使用微软最新的visual studio,那用起来更舒服,创建工程之初就给你提供了各种模板,甚至在开发图形化界面程序的时候,还可以实时给你呈现出程序控件的界面布局。以上就是IDE。

通过上面的描述,显而易见可以看到,C语言编译器充其量只不过是集成开发环境里面的一个部件。在用IDE开发C语言项目的时候,程序员只要经过代码编写(就是我们俗称的码代码),编译,调试(令人掉头发的元凶),再编译,再调试等这个“死循环”(一般直到软件生命周期截止)。而在不用IDE开发C语言的时候,开发人员要经过编写代码,编写依赖关系,make代码,调试,等等“死循环”(一般直到软件生命周期截止)。而在这两种人员的对比中,编写依赖关系,是很多使用IDE的程序员所接触不到的,因为IDE在你创建工程的时候,已经帮你把依赖关系给创建好了,并且藏在一个你不知道的地方了。上述这种编写依赖关系的文件,在Linux底下被称为Makefile,如图2-1-1所示。

图2-1-1NetBSD的某个makefile

可能有人会问了,明明现在有IDE这么好的东西存在,为何还要去自虐写makefile?我分析下来,这主要是有两个原因:

(1)        Linux里面有个图形化的配置工具,叫做“Make menuconfig“,这个东西是做一个软件的定制化配置工具,比如一个Linux内核,既要满足X86芯片的计算机,又要满足ARM平台的计算机,因此在创建这个操作系统内核的时候,要根据不同的需求进行配置。Linux的编译配置界面如图2-1-2所示。用户可以在这种xcode界面上选择自己所需的配置。选择好了之后,会生成一个.config文件,这个.config文件里面定义了去哪个文件夹取哪个.c或.h文件进行编译。这样就在一份代码上面灵活配置,生成适应不同配置需求的可执行代码。

图2-1-2“Make menuconfig”界面

(2)        一般windows操作系统底下的IDE都非常好用,但是大多都是商业化的,商业化意味着需要交钱去购买,而Linux底下又缺乏商业化的,好用的IDE,那个免费跨平台的eclipse,充其量是个强大的文本编辑器加上一个依赖关系生成器,连编译器都需要外挂,实在是没有好用的工具,所以早前Linux下的工程师一般都是自己写Makefile。但现在,有个开源的软件叫做Cmake,它推出了一种简化的依赖关系描述语句,可以在跨平台上生成makefile,越来越多的工程师使用了这种软件。

++++++++好书推荐++++++++

Python是一门非常好的语言,不管是你是文字处理,表格处理还是编程,只要是批量性质的工作,Python都可以让你效率高到飞起。

反正一句话,学习Python有很多好处,自己去Get吧

(0)

相关推荐