C语言,C语言,余小c的语言

对应书《c prime plus》中第一章

C的起源

追溯回1972年的贝尔实验室,伴随着Unix系统的诞生,创造出了C语言。C语言基于B语言上进行了设计,那是另一个故事。C语言特别的务实,目的就是成为一个有用的语言。

选择C的理由

相较于其他的的编程语言(C++,C#,JAVA等),C的实力仍然可以让他脱颖而出,以下提及一些优点。

设计特性

C语言融合了计算机科学理论和实践的控制特性,可以轻松实现:

  • 自顶向下的规划
  • 结构化编程
  • 模块化设计

所以C语言的程序更加易懂和可靠。

高效性

C是非常高效的语言,充分利用了计算机的优势,运行速度飞快。
实际上,C语言具有通常只有汇编语言才有的微调控制能力,可以根据具体情况微调程序获得最大运行速度和高效使用内存

可移植性

C是可以移植的语言,可以稍作修改或不修改代码即可在其他平台上运行。从8位微处理器到超级计算机,基本上支持C编译器。

所以其实C的编译器十分的常见,不论在Linux,Windows还是MacOS,甚至Android,ios这样的移动端,都包含针对特定系统的C编译器

强大而灵活

强大:Unix操作系统,Fortran,Perl,Python,Pascal,Basic语言的编译器也是C语言编写
灵活:可以解决多种情况问题,不管是单纯计算机问题,还是物理学和工程学问题,抑或是电影特效,C都可以完成

面向程序员

C语言本身是为了满足程序员需求而设计的,程序员可以利用C语言经行轻松的硬件访问,操纵内存等。C虽然没有Pascal严谨,但却比C++的限制多。

这样的灵活性即是有点也是缺点,优点可以简单的实现功能,缺点就是Debug比较麻烦

缺点

人无完人,金无足赤

C语言中常见的指针,如果指针错误往往难以察觉

想要拥有自由就必须时刻保持警惕

C语言紧凑简洁,结合了大量运算符。正因如此,我们可以写出让人费解的代码。在所有语言中,只有C语言有年度混乱代码大赛(IOCCC)。ヽ(*。>Д<)o゜

C语言的应用范围

20实际80年代,C语言就已经成为小型计算机(UNIX系统)使用的主流语言。自此,C语言的应用就扩展到个人计算机直到超级计算机

20实际90年代,很多软件公司开始使用C++来开发大型编程项目,C++在C语言上面增加了面向对象编程工具

面向对象编程是门哲学,它通过对语言建模来适应问题,而不是对问题建模来适应语言

C++差不多是C的超集,意味着任何一个C都是一个C++程序,学习C相当于学习许多C++知识

C语言常见作用:

  • 操作系统
  • 计算机游戏
  • 嵌入式系统
  • 自动化
  • 电影特效
  • 软件
  • 计算机语言

尽管C++和JAVA十分的流行,但是C还是软件业中最核心的技能。
随着嵌入式系统的发展,C语言的用途将越来越广。

简而言之,C语言是最重要的编程语言,如果你想拿到一份编程的好工作,被问到是否会C语言时,最好回答“是”

计算机能做什么

学习C之前最好先了解一下计算机工作原理。现代计算机有好多部分组成,CPU,RAM,永久存储设备,外围设备。

CPU的工作十分简单,负责从内存中读取一条指令并执行。1Ghz的计算机可以重复这样的操作大约十亿次(10^10)。
CPU有自己的小工作区–若干个寄存器,每个寄存器可以存储一个数字,一个寄存器负责存储下一个指令的内存地址,CPU通过这个地址获得下一条指令。
CPU能理解的指令集有限,这些指令的集合叫做指令集。并且这些指令十分的具体,很多指令都是把一个数字移动到另一个位置。

有趣的小知识:计算机中的内容都是数字,计算机程序最终必须是数字指令码

高级计算机语言和编译器

高级计算机语言使用编译器把我们能看懂的东西翻译成电脑能看懂的代码,进而可以让程序员经行高级思维活动,而编译器负责处理冗长乏味的细节工作。

同时编译器需要针对CPU来设计,如果使用Intel Core i7就不能再ARM Cortex-A上运行。

语言标准

在C语言出现的时候,并没有C标准,在1987年提出了C的标准,但是没有规定标准库。在1989年ISO和ANSI出台了C的标准,叫做C89或C90。

从这一标准开始,C语言开始体现了针对计算机来定义最合适的某种操作,而不是强加一个抽象,统一的定义的这一哲学

在1994年开始,C9X委员会开始制定新的C标准,最终发布了C99标准。这个标准实现了国际化,修复缺陷,提高计算能力,提高了C的竞争力。

在2007年开始,C1X委员会维护了新的C标准,在2011年发布了C11标准。由于C11标准过于复杂,不讨论了那就。。。

使用C语言的七个步骤

  1. 定义程序的目标
  2. 设计程序
  3. 编写代码
  4. 编译
  5. 运行程序
  6. 测试和调试
  7. 维护和修改程序

其实编程并不是这个么个简单的线性过程,通常要在不同步骤间往复。许多初学者经常忽略第一步和第二步,直接跳到第三步就会导致往复步骤,无法发现错误,导致浪费大量时间。

磨刀不误砍柴工

应该先养好先规划再写代码的好习惯,用笔和纸记录下程序的目标和框架。

编程机制

源代码 -> 编译器 -> 目标代码 -> 链接器 -> 可执行代码

目标代码大部分是机器码,再链接器中有库代码,负责链接头文件,也有启动代码负责启动整个程序的指令。

UNIX系统

源文件: inform.c
编译指令:cc inform.c
编译结果: a.out
运行:a.out

GNU编译器和LLVM项目

GNU(GNU’s Not UNIX)是一个开发大量免费UNIX软件的集合。GNU编译器集合(也被称作GCC,包含GCC C编译器)

LLVM项目是cc的另一个替代品。可以使用Clong编译器处理c代码

Linux

是一个开源,类似UNIX操作系统。使用GNU的公共C编译器。

Windows

并不自带C编译器,可以下载Cygwin或者MinGW从而使用GCC编译器

Macintosh(MacOS)中的C

安装Xcode自动解决问题