[原创]C语言学习抄书笔记
首先,为什么是C语言?
很多人看到标题可能都会惊讶,都这个年代了,为什么要从头学习C语言?
编程语言这个东西一直是仁者见仁智者见智的。从计算机出现到现在,不说有上百种语言,大几十种总是有的。你硬要说哪个语言优于其余所有,基本上是没有这种可能性的。这么做唯一能导致的就是大家为了各自的观点没完没了的吵下去。因此,学习哪门语言纯粹就是个人爱好问题。
而我选择C语言的原因无外乎以下三点:
一、现在的用户界面几乎被两个东西主宰,1)Web,2)移动设备IOS或Android。Windows的图形界面不吃香了。越来越多的企业在用成本低性能高的Linux和各种开源技术来构架其系统,Windows的成本太高。因此,未来的趋势是前端Web+移动,后端是Linux+开源(抄自http://coolshell.cn/articles/4990.html)。笔者也是看了这个才下定决心从头开始学习C语言。
二、技术更新太快。不夸张的讲,如果你一年不关注互联网,不关注技术更新,那么你会完全听不懂那些技术名词。其实,很多东西都是过分炒作出来的,并不值得我们全身心的投入其中(参照http://coolshell.cn/articles/3609.html)。而C语言作为一个流行了40年的技术,它值得你去关注和认真学习。
三、这是一个很个人的原因。笔者虽然是计算机专业出身,但基础相当不扎实。上大学的时候笔者经常跟着老师做项目,当时为了追求快速上手而选择了C#。那时也年轻,什么都不懂,被课题老师忽悠了。就觉着用.net实现各种功能相当之方便,弄个加密算法都有封装好的函数给你用,图形界面什么的就更没得说。然后就认为C语言什么的都弱爆了,整天沉迷项目忽悠经费,自然C语言和数据结构那系列的课程就没好好学。等工作后才发现太过高级的东西往往会带来很多不方便,为了工作又重新捡起C++开始鼓捣,依然是为了快速上手而忽略基础的学习,图形界面直接MFC,拖托跩跩自以为很熟练。现在想想很后悔,底层的东西一问三不知,高级的东西又上不了手,整个就是一只会做体力活的码农。痛定思痛决定从头开始系统学习。
此次学习没有项目压力,可以完全放松下来扎实地打好基础。当然由于是自学性质,只能在工作之余进行,时间上就难以保证了。此次学习的原则就是把自己当作是什么都不会的新人,不放过C语言的每一个细节,哪怕是变量声明,函数定义,for循环,while语句等等这些最最基本的东西都认真的再看一遍,并留下简要的笔记。而这篇帖子的目的在于强迫自己认认真真的完成这份学习计划,也是担心自己没有耐性,对于已经熟悉的东西一眼带过,丢失细节。
本次学习历程会尽可能选择一些经典名书来学习,毕竟站在巨人的肩膀上总会省些力气。当然其中也会穿插着几本笔者当年买过的烂书,大概过一遍,总不好浪费。流程大概如下:
第一步,完成《C程序设计语言(第二版.新版)》的学习;
第二步,完成《C指针编程之道》的学习;
第三步,完成《算法导论》的学习;
第四步,完成《Unix高级环境编程》和《Unix网络编程》的学习。
至于再往后目前没有想好,先做完前四步吧。其实,这份计划对我来说难度不小,不知道能否坚持下来。总之,一步一个脚印的先走着吧。
其次,搭建开发环境
所谓工欲善其事,必先利其器。幸运的是C语言的开发无论是Windows还是Linux都可以轻松胜任。不过笔者夹杂着借此机会转投Linux阵营的念头。所以就放弃了奋斗多年的Windows平台,最终选择了Ubuntu + gcc + vim,多么酷的组合啊,想想就兴奋。
话说回来,其实什么平台都一样,认真学习才是王道。
接下来开始第一步,进行《C程序设计语言(第二版.新版)》的学习。
目录:
《C程序设计语言》 第一章 导言 20楼
《C程序设计语言》 第二章 类型、运算符与表达式
《C程序设计语言》 第三章 控制流
《C程序设计语言》 第四章 函数与程序结构
《C程序设计语言》 第五章 指针与数组
《C程序设计语言》 第六章 结构
《C程序设计语言》 第七章 输入与输出
这本书目前来看很烂,污眼不负责。
《C指针 编程之道》 第一章 C语言指针
《C指针 编程之道》 第二章 指针在数组中的应用
《C指针 编程之道》 第三章 指针在函数中的应用
《C指针 编程之道》 第四章 指向指针的指针
《C指针 编程之道》 第五章 数据结构中指针的应用
《C指针 编程之道》 第六章 指向文件类型的指针
