初识C语言

笔者虽然没有从事计算机相关工做,但依然没法舍弃对编程的喜好。经过发布文章,一方面,把从新学习的内容纪录下来,最重要的是,可以与你们分享所学与所困。不喜勿喷!程序员

1. C语言起源

1972年,贝尔实验室的Dennis Ritch和Ken Thompson在开发UNIX操做系统时,设计了C语言。C语言设计的初衷是将其做为程序员使用的一种编程工具,其主要目标是成为有用的语言。编程

2. C语言特性

2.1 设计特性

C是一门流行的语言,融合了计算机科学理论和实践的控制特性。许多高校将它做为学习计算机编程的第一种语言。C语言的设计理念让用户可以轻松完成自顶向下的规划、结构化编程和模块化设计。所以,用C语言编写的程序更易懂、更可靠。架构

2.2 高效性

C语言具备一般是汇编语言才具备的微调控制能力,能够根据具体状况微调程序以得到最大运行速度或最有效地使用内存。模块化

2.3 可移植性

所谓可移植性,是指在一种系统中编写的程序稍做修改(如更改主程序头文件中的少量项)或不修改就能在其余系统运行。因为有许多运行在不一样系统上的C编译器,C语言成为可移植方面的佼佼者。但须要注意的是,程序中针对特殊硬件设备或操做系统特殊功能(如,Windows或Mac OS)编写的部分,一般是不可移植的。函数

2.4 强大且灵活

例如,工具

  1. UNIX操做系统,大部分是用C语言写的。UNIX一般会将C编译器做为软件包的一部分。
  2. 许多语言(如Perl、Python、LISP)的编译器和解释器都是用C语言编写的。
  3. C程序能够用于解决物理学和工程学的问题,甚至可用于制做电影的动画特效。

2.5 缺点

例如,学习

  1. 编程错误难以察觉。如,使用指针。
  2. 存在大量运算符,可能致使代码晦涩难懂。因此,只有C语言有年度混乱代码大赛(IOCCC,The International Obfuscated C Code Contest)。

3. C语言的应用范围

早在20世纪80年代,C语言就已经成为UNIX系统使用的主流语言。从那之后,C语言的应用范围扩大到PC(主要体如今操做系统与应用程序方面)和超级计算机。测试

虽然说这些年来C++和Java很是流行,可是C语言仍然是软件行业中的核心技能。特别是,C语言已成为嵌入式系统编程的流行语言。愈来愈多的汽车、照相机、音响和其余现代化设备的微处理器都用C语言进行编程。动画

题外话:
人工智能的热潮,让C/C++、Java、Python成为最热门的三个语言。听说,Python已经被计划归入高考内容
不过,能够确定的是,学好C语言确定木有坏处。2017年12月TIOBE排行榜,Java、C、C++、Python、C#分别排名前五。2017年,人工智能大热,C语言有但愿成为年度最佳“候选人”。人工智能

4. C语言标准

  • 1989年,第一套C语言标准,由美国国家标准协会(ANSI)发布,称为ANSI C。它定义了C语言和C标准库。
  • 1990年,国际标准化组织(ISO)采用 ANSI C,称之为ISO C,与 ANSI C 彻底相同。一般,ANSI/ISO C 被称为C89C90(因分别在1989年和1990年发布)。
  • 1999年,发布C99。旨在达到三个目标。第一,支持国际化变成。例如,提供多种方法处理国际字符集。第二,“调整现有实践致力于解决明显的缺陷”,以适应64位处理器。第三,适应科学和工程项目的关键数值计算。这使C比FORTRANFORTRAN更具竞争力。
  • 2011年,发布C11。C11并无彻底接受和支持C99,而是使C99的一些特性,成为C11的可选项。《C Primer Plus(第六版)》一书,对于C11标准,浅尝辄止。

对于C语言标准,有机会再详细学习、总结。

5. 使用C语言的7个步骤

5.1 第一步:需求分析

这个步骤要求对程序有清晰的思路。首先明确,要作什么,须要哪些信息,要进行哪些计算和控制,要反馈哪些结果。

在这个步骤中,不涉及计算机语言,应该用术语来描述。

5.2 第二步:详细设计

这个步骤,要考虑如何用程序实现需求。例如,用户界面应该怎么样?目标用户是哪些?程序架构应该怎么样?计划多长时间实现这个程序?如何表示数据?用什么方法处理数据?

这个步骤涉及的内容,有专门的术语和描述工具。可参考软件工程相关书籍。

5.3 第三步:编写代码

这个步骤,才是真正用到计算机语言的地方,也就是把你设计的程序,翻译成C语言。

5.4 第四步:编译

编译器,是把源代码转换成可执行代码的程序。可执行代码是用机器语言表示的代码。C编译器除了把C代码翻译成特定的机器语言,还将源代码与C库的代码合并成最终的程序。(更准确地说,应该是又连接器来连接函数库。可是大部分系统中,编译器运行连接器)。最终,生成一个用户能够运行的可执行文件。

编译器与连接器

此外,编译器还会检查C语言程序是否有效。若是发现错误,就没法生成可执行文件并报错。理解特定编译器报告的错误或警告信息,是程序员必需要掌握的技能。

5.5 运行程序

虽然,在Windows命令提示符模式、UNIX终端模式和Linux终端模式下,能够运行程序。可是,如今更为使用的,是在IDE(Intergrated Development Environment,集成开发环境)中,编辑、编译、执行C程序。

5.6 测试、调试程序

测试,分为黑盒测试和白盒测试。黑盒测试,通常就是直接经过运行程序,看其是否可以实现预期的功能。白盒测试,可以更深层次检测程序所包含的问题,对技术水平要求较高。

查找并修复程序的过程叫调试。会遇到各类形态的BUG(八阿哥)。随着一步步的学习,可能犯错误的地方会愈来愈多,不经意间的小问题,就能致使程序的崩溃。

因此,要养成良好的编程习惯,可以提升代码的可读性和可维护性。

5.7 维护、修改代码

这一步,一般是被忽视的。程序可以运行,但不意味着就是完美的。随着时间推移或者运营环境的改变,问题会又更好的解决方案,程序会须要更多的功能。也许,维护、修改代码的工做量远远超出前面的步骤。

本文同步发布在简书。若是不足之处,还请指出。

参考书籍:

  1. 《C Primer Plus(第六版)》,Stephen Prata 著,姜佑 译
相关文章
相关标签/搜索