关于开博客的简述与此前学习回顾

来源:互联网 发布:linux显示root密码 编辑:程序博客网 时间:2024/05/21 12:39

        半路出家开始学计算机,学了两个半月以后决定开这么个博客,一方面记录一下学习进度,督促自己学习,另一方面对一些有意义的思考进行系统化的文字性的描述,以免长久以后一些希望记住的知识被不断更新的记忆所淹没。

        开始之前的题外话是,刚开始学习计算机的时候,非常讶异于博客这种信息媒介在程序员间的使用比率会这么高。有时遇到不懂的问题,搜索引擎一搜,90%都是各种各样的博客与技术分享,结果没两个月,我也开始写自己的第一篇文章了。现在的我也许确实无法确切地有条理地描述出写这么个博客的好处,但是至少在主观感知上,已经有了这么一种认为其必要的确信——就算一个博客浏览者也没有,这对我来说也是必要的。


C语言——

        开场白完了就回顾一下两个多月的学习内容吧。以前这么多年,除了初高中以可以忽略的计算机课时间接触过一点点Basic,大学学过(与其说学过不如说考过)计算机基础及VFP,大约一年前看过两三天C语言的教材外,基本没有再接触过更多的计算机科学内容。

        说起一年前看C语言的这件事,那时候其实也是有学习的欲望,但是因为对领域完全空白,不知道C语言看什么书入门好。百度以后,发现说得最多的就是谭浩强的《C语言程序设计》,遂看之。不得不说看到一半,主观认为这本书就是个坑,完全让人失去了继续学习的欲望,直到最近才重拾热情。

        于是这次对书本的选择就慎重多了,在比较专业的推荐后,选择了《C Primer Plus》,也就是常说的CPP。当时怕一开始入门太快看不懂,于是在买书前还在网上花一周多的时间看了一下柴田望洋的《明解C语言》,非常非常基础也易于入门,总之然后在10月31号,买了CPP这本书开始学习。

        C语言的话还算比较好上手,CPP看起来比较顺畅,大概在11月中,双十一过几天的时候,CPP除了最后一章作为数据结构入门的内容外,前面的章节都已经看完了。在整个过程中也有穿插配合其它一些书,比如《C和指针》、《The C Programming Language》、《C专家编程》、《C陷阱与缺陷》等。对这几本书简单评价的话,CPP确实非常适合入门,难度适中且内容详尽;《C和指针》会比CPP略深入一些,对过于基础的部分会省略得比较多,如果是完全没有任何基础的话光看这本书会相对吃力,但是它的习题比CPP要好,针对性比较强又不会过于简单(个人感觉);《The C Programming Language》也就是K&R C,坦率地讲不适合新人上手,内容过于简略,当然也可以说是字字珠玑少一不可(胡乱地比喻的话大概就是初中生看《道德经》的感觉?),不过作为CPP辅助参考的同步资料还是不错的。


汇编语言——

        C语言的语法与基础看完以后,不知道抽了哪根筋,开始看汇编。用的书的王爽的《汇编语言(第三版)》,双十一的时候买的,十一月中下旬开始看。之前有人评价其书作为汇编的入门书非常合适,是国内难得的不照本宣科,能让人自学下去的书,个人看过以后认为确实如此。王爽老师在前言里提到的”知识屏蔽“教学思想,事实上非常利于自主学习。看这本汇编的时间花了差不多三个星期吧,看完以后觉得汇编确实还是过于繁琐,还要帮计算机想哪个寄存器怎么用,于是暂不打算在这个领域更加深入学习了。不过,看完汇编收获最大的是,”通过学习关键指令来深入理解机器工作的基本原理“,这也是本书前言的关键句子之一。确实地,看完了这本书,至少知道了代码段、数据段、栈段这些到底是什么回事,函数是怎么调用的、C语言中的外部变量和自动变量怎么储存的也都有了充分的了解,还有那该死的malloc对我而言再也不是玄学(会用但是总觉得很虚)一般的存在了。总之,学汇编这些内容,还是非常值得的。


数据结构——

        学完汇编是12月初了,于是回去把之前CPP没看的最后一章看了,CPP最后一章是一些简单的ADT实现。如此前所说的,malloc不再是玄学后,对链表以及二叉树的理解也不成问题。因为刚刚接触ADT,本着扎实基础的原则,把书上出现的像单链表、双链表、栈、队列、搜索二叉树都实现了一遍。也正是因为刚刚接触,所以一开始写个单链表例程都写的丢头落尾的,多写几次也总算熟练了,于是正式结束了CPP的学习。

        为了进一步学习数据结构,看了一下普遍推荐的数目,主要有这么些书:严蔚敏的《数据结构》、Weiss的《数据结构与算法分析》、《大话数据结构》还有CLRS的《算法导论》。本来根据名气,一开始打算上《算法导论》的,但是看过一些经验,认为刷导论还是要有一定基础后,决定还是从数据结构开始。

        学数据结构,一开始是买了严蔚敏的书,结果发现这本书读起来非常晦涩,不是那种内容困难的晦涩,而是语言的枯燥以及用词的过度专业化。简单的数组和链表,我明明已经在CPP里面看过一遍,而且还自己实现过了,带着这个基础去学严的书,啃完线性表这一章还是觉得看不下去,虽然讲的内容基本一样,但是学究式刻板枯燥的遣词造句,着实不适合自学——当然,也许仅仅是不适合我。于是,在这版教材的前后纠结上,就花费了三四天。

        此后偶然看见有人推荐《大话数据结构》,从书的定位和封面设计而言,基本可以判断这是相当面向群众的普及书,甚至会有过于简单之嫌。但是在当时情况下,被严版《数据结构》所伤害的我迫切需要一本安慰心灵,让人重拾兴趣,它就刚好符合需求了。书到手后,我很快就证实了我关于其难度的猜想——仅花半天就看了一本书的一半。后面几天花一些零散时间,把复杂一点的图论算法和查找、排序给看了,就结束了这本书的阅读。回顾起来,感受就是,书确实看得很爽快,但是一方面此书没有习题,另一方面因为太爽快了里面有些稍复杂的内容就不想停下来自己去实现(比如AVL树),感觉学得轻飘飘的,有种”确实学了一堆但是我到底学了个JB?“的倒错感。不过这并不是书的问题,不如说在这个层面上,本书的作用已经达到了。而且,在阅读过程中,因为比起其它书不需集中太多精力,我花了两天时间对自己薄弱的的递归思想有意识地进行了一定强化,至少比刚开始看到前、中、后序遍历二叉树都要纠结半天的自己好多了,也算是一大收获。

        12月20号,我开始进行Weiss《数据结构与算法分析——C语言描述》这本书的学习,到目前为止仍然在这本书的坑里,看到了排序一章——差不多一半吧。感受就是,这本书的内容难度是严版《数据结构》要大的,但是语言足够流畅,让人有读下去的欲望,这大概也是国内外教材的普遍差距吧。不比较地,就本书而言,内容更加深入,很多时候不仅仅是描述一个算法或数据结构,还会有关于复杂度的详尽分析与证明,以及相关拓展。有些让我纠结的是,内容一旦比较深入,更基础的内容就会相对精简、省略,故而有时其关键字就那么一行两行,必须精挑细读才不会看漏。另一个麻烦的事情是,该书的部分习题对我还是有难度的,除了一些基础题、概念题,比较综合一点需要思考的题目,常常需要做大半个小时或者根本做不出来,还是挺耗时间的,所以目前进度状态为龟速前进中。


以上就是开博客的原因,以及从10月31日购买CPP以来的学习进程了,以后会不定时更新,记录学习进度,书写有价值的思考。

0 0