最近给十一个职业软件开发工程师做《linux平台软件开发》课程。才发现,工作过两三年后的软件工程师也分不清这些概念。所以我想有必要为大家梳理一下。
语言:语言可以说是一个标准,定义了该语言的语法特性。我们通常的说的C++,Java是语言,是一套语法规律的集合。
编译器:实现语言标准的一种产品。比如Borland C++ ,delphi pascal,gcc,mircosoft c++,intel c++等产品。这里产品在实现语言的同时,为了需要,都会或多或少的加入自己对语言标准的扩展。所以,编译器与语言标准的吻合度也成为衡量编译器的优劣程序的一个指标。注意VC不是编译器,VC的编译在它的Bin目录里,叫cl.exe。编译器的目的是将源代码编译成为二进制的目标文件(obj文件) 。
编辑器:编辑器就是大家看到的记事本,WORD之类的软件,当然了,软件开发用的编辑器往往需要提供针对软件开发的一些特性,比如查看源代码结构,智能提示,快速定位,重构等加速编写代码的功能。开源世界用得最多的编辑器是Emacs和VIM。
库:一些已经编写好的程序的集合,提供一方面或者多方面的功能。或是以源代码方式提供,或是以二进制形式提供。可以被开发者直接调用。比如VCL,MFC,STL,BOOST,ACE.......
连接器:将编译器编译好的目标文件组合在一起,生成exe等最终执行文件的工具。比如VC的link.exe。
IDE:集成开发环境,软件开发厂商把以上的很多工具组合在一起的产品。比如VC是把编辑器,cl.exe,link.exe,MFC,ATL,MSDN等集成到了一起,delphi把编辑器,bc.exe,VCL等组合到了一起。IDE环境中设计的编译,连接等选项,最终将传递给编译器和连接器。
分清这些后,你应该清楚地知道你在学习开发的哪一方面,以VC学习为例:
学习C++:这是在学习语言标准,超越开发工具之上的东西。
学习VC:是指学习VC这个IDE的开发环境,如何建立工程,编写代码,编辑资源,设计界面等。
学习MFC:是指在学习微软跟着VC发行的一个库的内容,了解这个库的使用方法,函数,类等内容。