笔者虽然没有从事计算机相关工做,但依然没法舍弃对编程的喜好。经过发布文章,一方面,把从新学习的内容纪录下来,最重要的是,可以与你们分享所学与所困。不喜勿喷!程序员
1972年,贝尔实验室的Dennis Ritch和Ken Thompson在开发UNIX操做系统时,设计了C语言。C语言设计的初衷是将其做为程序员使用的一种编程工具,其主要目标是成为有用的语言。编程
C是一门流行的语言,融合了计算机科学理论和实践的控制特性。许多高校将它做为学习计算机编程的第一种语言。C语言的设计理念让用户可以轻松完成自顶向下的规划、结构化编程和模块化设计。所以,用C语言编写的程序更易懂、更可靠。架构
C语言具备一般是汇编语言才具备的微调控制能力,能够根据具体状况微调程序以得到最大运行速度或最有效地使用内存。模块化
所谓可移植性,是指在一种系统中编写的程序稍做修改(如更改主程序头文件中的少量项)或不修改就能在其余系统运行。因为有许多运行在不一样系统上的C编译器,C语言成为可移植方面的佼佼者。但须要注意的是,程序中针对特殊硬件设备或操做系统特殊功能(如,Windows或Mac OS)编写的部分,一般是不可移植的。函数
例如,工具
例如,学习
早在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语言有但愿成为年度最佳“候选人”。人工智能
ANSI C
。它定义了C语言和C标准库。对于C语言标准,有机会再详细学习、总结。
这个步骤要求对程序有清晰的思路。首先明确,要作什么,须要哪些信息,要进行哪些计算和控制,要反馈哪些结果。
在这个步骤中,不涉及计算机语言,应该用术语来描述。
这个步骤,要考虑如何用程序实现需求。例如,用户界面应该怎么样?目标用户是哪些?程序架构应该怎么样?计划多长时间实现这个程序?如何表示数据?用什么方法处理数据?
这个步骤涉及的内容,有专门的术语和描述工具。可参考软件工程相关书籍。
这个步骤,才是真正用到计算机语言的地方,也就是把你设计的程序,翻译成C语言。
编译器,是把源代码转换成可执行代码的程序。可执行代码是用机器语言表示的代码。C编译器除了把C代码翻译成特定的机器语言,还将源代码与C库的代码合并成最终的程序。(更准确地说,应该是又连接器来连接函数库。可是大部分系统中,编译器运行连接器)。最终,生成一个用户能够运行的可执行文件。
此外,编译器还会检查C语言程序是否有效。若是发现错误,就没法生成可执行文件并报错。理解特定编译器报告的错误或警告信息,是程序员必需要掌握的技能。
虽然,在Windows命令提示符模式、UNIX终端模式和Linux终端模式下,能够运行程序。可是,如今更为使用的,是在IDE(Intergrated Development Environment,集成开发环境)中,编辑、编译、执行C程序。
测试,分为黑盒测试和白盒测试。黑盒测试,通常就是直接经过运行程序,看其是否可以实现预期的功能。白盒测试,可以更深层次检测程序所包含的问题,对技术水平要求较高。
查找并修复程序的过程叫调试
。会遇到各类形态的BUG(八阿哥)。随着一步步的学习,可能犯错误的地方会愈来愈多,不经意间的小问题,就能致使程序的崩溃。
因此,要养成良好的编程习惯,可以提升代码的可读性和可维护性。
这一步,一般是被忽视的。程序可以运行,但不意味着就是完美的。随着时间推移或者运营环境的改变,问题会又更好的解决方案,程序会须要更多的功能。也许,维护、修改代码的工做量远远超出前面的步骤。
本文同步发布在简书。若是不足之处,还请指出。
参考书籍: