C语言是一种
结构化语言。它层次清晰,便于按模块化方式
组织程序,易于调试和维护。
C语言的表现能力和处理能力极强。它不仅具有丰富的
运算符和
数据类型,便于实现各类复杂的
数据结构。它还可以
直接访问内存的
物理地址,进行位(bit)一级的操作。由于C语言实现了对硬件的编程操作,因此C语言集
高级语言和低级语言的功能于一体。既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,
可移植性强等特点。因此广泛地移植到了各类各型计算机上,从而形成了多种版本的C语言。
语言是在70年代初问世的。一九七八年由美国电话电报公司(
AT&T)
贝尔实验室正式发表了C语言。同时由B.W.Kernighan和D.M.Ritchit合著了著名的“THE C PROGRAMMING LANGUAGE”一书。通常简称为《K&R》,也有人称之为《K&R》标准。但是,在《K&R》中并没有定义一个完整的标准C语言,后来由
美国国家标准学会在此基础上制定了一个C
语言标准,于一九八三年发表。通常称之为
ANSI C。
早期的C语言主要是用于
UNIX系统。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和
微型计算机上得到了广泛的使用。成为当代最优秀的
程序设计语言之一。
·GNU Compiler Collection 或称
GCC这些C语言版本不仅实现了
ANSI C标准,而且在此基础上各自作了一些扩充,使之更加方便、完美。
我们在学习C语言时通常会面临C语言编译器的选择,事实上C语言编译器可以分为C和C++两大类,其中C++是C的
超集,均向下支持C。主要的C语言编译器及特点分别如下:
(1)TC 2.0
DOS平台软件。最经典的C语言
编译器,系统体积小,简单易学,容易上手,而且很多前人或书籍的程序均基于该编译器,是学习C语言的首选。不过它不支持鼠标,但读者如果掌握几个
快捷键,操作时对鼠标可能就不怎么需要了,如:
F2 存盘 F3 打开程序
Alt+F3在最近打开的文件之间切换 Alt+F5观察运行结果
(2)Tc3.0DOS平台软件。比较不错的
C/C++语言编译器,支持鼠标,语法着色,多文档,错误跟踪也很好,操作与TC2.0有很多类似,TC2.0会用那么TC3.0也很快会用,缺点是以前很多代码是用TC2.0设计的,而由于TC3.0语法要求的严格性,如要求函数必须定义类型,所以向下存在一定的
兼容性问题,所以对于初学者选择起来很矛盾,建议先学会使用TC2.0,而把TC3.0作为能力的补充和平时工具之用。
有的教材已经选用该编译器,不过需要一个较长的
调整期,因为很多
源代码需要过渡过来才行,虽然性能上比TC2.0有所提高,但对于初学者没有质的变化,选择时需要注意。
(3)VC++ 6.0Windows平台。主流的C/C++语言编译器,包含强大的类和内嵌WinAPI的
MFC,具有可视化的编程界面。对于
TC等的作品也具有
向下兼容的特点,建议读者选用作为C语言过渡到Windows平台编程的首选工具。当然,作为学习,该系统显得有点庞大,不过通过入门的学习,调试旧的Tc程序也可以。还有其他的编译器,例如Win tc、
gcc、lcc、BC 3.1等等,事实上,编译器的选择不是最重要的,他们都可以完成基本的C语言编译,不过面向考试的时候,还是根据考试的要求,因为编译器的编译结果存在着一定的差别,特别在一些复杂语法的语句编译上。对于从未学习过计算机程序设计的读者来说,学习C语言时,建议开始选择Tc2.0,虽然不能使用鼠标,但几个快捷键的熟练运用基本上可以解决操作的问题,当然有时间的时候了解使用TC3.0就更好了;对于学习过TC2.0的读者来说,平时完全可以在TC3.0或VC 6.0下
调试程序,但考试的时候如果要求必须在TC2.0下,那最好上机练习时在TC2.0下。当然,使用如记事本等
文本编辑器编辑程序,然后用TC来调试也不失为一种好方法。另外,DOS平台的Tc2.0或Tc3.0都存在某些机器
运行时键盘响应迟缓或停顿的问题,Tc3.0可能这种现象要多一点,这主要是由DOS
基本内存的不足造成的。可以安装水平考试课题组提供的DOS
模拟器来解决问题,该模拟器重新划分更多的内存,效果不错。
新的类似软件平台也需要读者关注,那就是
Java和Viusal C#,因为从发展的眼光来看,
软件设计平台有一定的趋同趋势。例如:java和C#,都来自于C和C++,都作了不错的扩展和优化。对于深入学习C语言的同学,未来几年请务必学习
VisualStudio.Net或者Java,因为这二者代表了软件设计主流。他们的主要特点是:优秀的
IDE设计环境,强大的WEB
服务设计功能,对C++的优化和扩充,基于
虚拟机的
运行模式,优秀的面向
系统开发,可视化的较为成熟的
面向对象的程序设计机制等等.