写一本”错误百出”的C语言学习教程(一)

10年前我刚考上心理学研究生。对于学习计算机的热情反而由于某种原因高涨起来了。于是便草草的复习了一遍C语言的教程。因为大学本科期间喜欢读课外书,C语言并没有学好。或许自己笨或者老师没有教好,总之没有学会。现在时光是2018年11月1日了,本科毕业也有12年了。研究生毕业也有10年了。创业也有6年了。做了一个和计算机以及心理学没有关系的美容行业。又幻想成为一名Geek或者一名Hacker,买了一堆堆的书籍,堆放在家里。没有时间看。特别是最近看双十一,又买了一波。偶然翻了一下C语言的书,兴趣其实是不大的。因为人生的阶段不一样了。不是准备考C语言二级的时候了,不是读研的时候了。时间紧迫。家庭责任重。社科类的读书还在坚持读,而读技术书籍就已经是奢望了,抑或很难坚持了。今天开个头,想重新学一遍C语言。而且应该是这辈子最后一次了。类似Excel的学习一样。现在也不用顾忌语言的通顺与否,纯粹是为自己做个记录吧。之所以是取这个名字是因为学习的过程并不需要精确,很多概念的理解一开始就是错误的,哪怕我现在看个几十本C语言的书,写的内容和笔记以及理解的东西很多都是错误的。人的知识很多是构建的(建构主义心理学)。所以我觉得错误百出并不是坏处,恰恰人类学习的一条合适的认知道路。

  1. C语言简介

C语言概述

20世纪70年代初期,贝尔实验室开发的一种编程语言。

C语言最早是B语言上进行改进的。B语言本身是基于BCPL语言改进而来的。Basic Combined Programming Language(BCPL),是一种早期的高级语言。而BCPL语言是基于CPL语言上改进而来。CPL语言又基于ALGOL 60语言改进而来。下面是摘抄自百度百科的:

"CPL语言属于高级语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的 Matin Richards对CPL语言做了简化,推出了 BCPL (the Basic Combined Programming Language)语言。1970年美国贝尔实验室的 Ken Thompson 以 BCPL 语言为基础,又作了进一步的简化,设计出了很简单的而且很接近硬件的 B 语言(取BCPL的第一个字母),并用B语言写出了第一个 UNIX 操作系统。但 B 语言过于简单,功能有限。1972年至1973年间,贝尔实验室的 D.M.Ritchie 在 B 语言的基础上设计出了 C 语言(取BCPL的第二个字母)。C语言即保持 BCPL 语言和 B 语言的优点(精练、接近硬件),又克服了他们的缺点(过于简单,数据无类型等)。"

是不是很多教材都忽略了这一段历史呢?没有无缘无故的爱,也没有无缘无故的语言。再次捋一下,C基于B语言,B语言基于BCPL,其中B代表Basic,BCPL代表基础的,C代表混合的,PL就是编程语言。BCPL又基于CPL语言,CPL基于ALGOL 60,当然ALGOL 60 又基于ALOGL 58。B语言取自于BCPL中的第一个字母,C语言改进了B语言,取BCPL中的第二字母。老外取名就是任性!

 

posted @ 2018-11-01 23:40  司徒无名  阅读(308)  评论(1编辑  收藏  举报