vlambda博客
学习文章列表

【C语言学习系列一】 C 语言再学习!

1.C语言的历史

       贝尔实验室的Dennis Ritchie(1941-2011年)为了给在PDP-11电脑上运行的Unix系统设计出一个系统级的编程语言,他在B语言的基础上创造了C语言,这是一门高级编程语言
1969-1973年:早期的C语言
  • 1969年基于 BCPL 创建 B ,以作为 Unix 的系统程序语言替代 PDP-7 汇编器
  • 1971年:于将 B 移植到PDP-11  时创建 NB (新“ B ”),也就是C语言的前身
  • 1972年 :语言更名为 C
  • 1973年:Unix操作系统 的核心正式用C语言改写,这是C语言第一次应用在操作系统的核心编写上
      C语言源于BCPL语言,后者由马丁·理察德(Martin Richards)于1967年左右设计实现。BCPL是一门"无类型"的编程语言:它仅能操作一种数据类型,即机器字(machine word)。1970年,肯·汤普逊为运行在PDP-7上的首个Unix系统设计了一个精简版的BCPL,这个语言被称为B语言,它也是无类型的。
      Unix最早运行在PDP-7上,是以汇编语言写成,在PDP-11出现后,丹尼斯·里奇与肯·汤普逊着手将Unix移植到PDP-11上,无类型的语言在PDP-11上愈发显得不合适。PDP-11提供了多种不同规格大小的基本对象:一字节长的字符,两字节长的整型数以及四字节长的浮点数。B语言无法处理这些不同规格大小的对象,也没有提供单独的操作符去操作它们。
      C语言最初尝试通过向B语言中增加数据类型的想法来处理那些不同类型的数据。和大多数语言一样,在C中,每个对象都有一个类型以及一个值;类型决定了可用于值的操作的含义,以及对象占用的存储空间大小。
      1973年,Unix操作系统的核心正式用C语言改写,这是C语言第一次应用在操作系统的核心编写上。
1974-至今:标准的C
  • 1975年 :C语言开始移植到其他机器上使用
  • 1978年丹尼斯·里奇布莱恩·柯林汉合作出版了《C程序设计语言 》( The C Programming Language )的第一版



      下面给出一个C语言的发展时间轴:

  • 1954年-Fortran:是世界上第一个被正式采用并流传至今的高级编程语言 ,由IBM开发完成
  • 1958年-IAL(ALGOL):ALGOL被设计用来避免FORTRAN中一些已知的问题,最终引领了许多其它编程语言的兴起,包括PL/ISimulaBCPLBPascalC
  • 1958年-ALGOL58:由IAL(国际代数语言,International Algebraic Language)改名而来。ALGOL家族的第一个成员。它在1958年问世,ALGOL 60 即是它的基础上开发而成
  • 1960年-ALGOL60 :ALGOF60是一种面向问题的高级语言,它离硬件比较远,不宜用来编写系统程序。
  • 1963年-CPL:CPL是1963年剑桥大学发明的,CPL语言在ALGOL 60 的基础上更接近硬件一些,但规模比较大,难以实现
  • 1967年-BCPL:是一种计算机程序设计语言,源自更早的CPL语言,1966年由剑桥大学的马丁·理察德所发展出来的。Richards试着移除了CPL中最复杂的组成,第一支BCPL compiler在IBM 7094 电脑中完成
  • 1969年-B :贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS。
  • 1971年-C :贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B的基础上设计出了C语言。C 保持了B的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型),至此C语言渐渐发展成为目前世界上最常用的编程语言之一。

2.重新学习C语言的理由

       接触C语言是在大一上学期,这也是我第一次接触编程,那个时候对C语言的学习可真谓云里雾里,对于C语言中一些知识点不能够很好的知道其原理,比如一个程序的变量被存放在哪里了?指针到底是个什么东西?等等一系列问题,导致在学习过程中可谓困难重重,对计算机慢慢产生了畏难情绪。在经过一段时间的学习,我认为在学习C语言之前更应该先去学习计算机中的一些理念和想法,比如可执行文件的加载过程;程序是如何被运行的;在程序运行过程中,栈扮演了什么样的角色?等等,所以在简单的了解了这些原理以后,我决定再来重新学习C语言,以便彻底的了解其整个运行机制和原理。
      我参考的书籍有:《C语言程序设计语言》(第2版)和《C语言程序设计教程》(第3版)

3.学习计划

      现在计划10期将C语言学完,每一期的计划如下:
第一期:数据类型
第二期:流程控制
第三期:函数和程序结构
第四期:数组
第五期:指针(上)
第六期:指针(下)
第七期:结构(体)
第八期:链表
第九期:文件
第十期:总结