乾坤一笑 阅读(1037) 评论(32)

谈谈偶的学习方法,抛砖引玉!:)

学习不论讲不讲方法,最终都能学会。但是别人1个月学会了,而你却100年才学会,这不就晚了么?:)所以说,学习还是要讲究方法的。学习方法正确,事半功倍;学习方法不正确,事倍而功半。

什么才是学习C语言的捷径?我的答案是看书。书中所写,是前人数十年经验所写,看十本书,就相当于汲取了前人数十年的功力,那么你的内功也会迅速上升1甲子。:)书当然要看好书,只有好书才营养丰富。假如你花了1天时间看了一本破书,而该书介绍的知识虽然对于你来说是全新的知识,但是由于书中组织不当、或者深度不够,使你获取的营养很少,还不如自己研究一天来的快,这种书就不值当看了。学习C语言要看那些好书?我认为首先要把基础书给看扎实了,比如拙著《C语言之四书五经》中介绍的4本。(虽然这些书很多已经绝版了,但我相信电子版也是很有益处。况且,如果你真的想看,我相信你一定有办法搞的到。)这些书你会在很短的时间内看完(比如一两个月),这取决于你的基础和悟性。之后要看那些书呢?我不妨再列几本。Bjarne Stroustrup的《C++程序设计语言》(The C++ Programming Language)一定要看,这本书里面对于C的一些基础概念的定义,比我见过的其他任何C语言书都要全,都要仔细;Bjarne Stroustrup的《C++语言的设计与演化》(The Design and Evolution of C++)和David R.Hanson 的《C语言接口与实现 创建可重用软件的技术》(C Interfaces and Implaementations Techniques for Creating Reusable Software)一定要看,这两本书讲述了如何用C来实现异常处理、实现类型的封装和扩展等一些大的项目中经常用到的高级技术。其他的书,操作系统的要看,编译原理的要看,算法的要看,模式的也要看。读书破万卷,coding如有神。总而言之,就如《传》中云:“生而知之者,上也;学而知之者,次也;困而学之又其次也。”我们不能总是因困而学之,而要做到兵马未动,粮草先行。

看书是学习的导向,书中能一一介绍清楚概念,但书却不能把应用的细节一一介绍给你,因为应用总是招数繁复,变化多端。因此我们要想熟悉招数,懂得书中所讲怎么使用,还要多读源码。Linus给别人解答问题的时候,常说Read the fucking source code;候捷也在其文中提到“源码之前,了无秘密。”这就是大师的箴言呀。源码就像是动画、就像是幻灯片,把书中的招式一一演练给你看。可以说高手的经验大都是源自代码。源码和书一样,也是要看好的,不要看差的。在此,我推荐看Linux kernel source code 和 Linux tcp/ip source code。这两套代码都是开源的,垂手可得。此外,还可以配合着Andrew S.Tanenbaum的《操作系统的设计与实现》(Operating Systems:Design and Implementation)、毛德操 胡希明的《Linux内核 源代码情景分析》、Jonathan Corbet,Alessandro Rubini,Greg Kroah-Hartman合著的《Linux设备驱动程序》(Linux Device Driver,3e)、W.Richard Stevens《TCP/IP详解(3部)》 (TCP/IP Illustracted )、W.Richard Stevens《UNIX环境高级编程》(Advanced Programming in the UNIX Environment,新版增加了Linux kernel的内容)等书来看,方便的很。

当然程序不是看出来的,是写出来的。我高中的时候每天坚持写6个小时程序,《数据结构》和排列组合、图论方面的习题反复做了N遍。到现在虽然已经时隔五六年,很多内容早已淡忘掉,但却培养了我很强的编码能力和调试能力,直到现在还对我的工作有很大的帮助。

学习忌贪多、忌浮躁、忌急功近利、忌目中无人。把学习计划放的长一些,培养一个好的学习方法,一步一步慢慢走,终能成为高手。
-------------
乾坤一笑 写于2005年8月1日  转载请标明出处和原文链接


评论列表
问题男
re: C语言学习方法
“高中的时候每天坚持写6个小时程序”这个强,佩服,想那个时候偶正沉迷于游戏,对编程一点概念都没有呢,呵呵

不过游戏令偶得了一份厚礼,为了修改exe成无敌版而自学了汇编和si的用法,至今受益匪浅,呵呵
一笑
to arong :
汗!俺崇拜用算盘造原子弹的高手!(《横空出世》里面就邓稼先一个人会用计算器,其他人都用算盘算微积分!巨汗!)
一笑
to 问题男:
nod,偶同学上小学就开始打电脑游戏,也是从游戏起步学程序。偶还用Pascal的时候他就用了VC。现在他跑到M$亚州工程院去了,强人啊!
周星星
re: C语言学习方法
支持一下!
pAnic
re: C语言学习方法
现在很多人缺的不是书,也不是方法,而是毅力。。。
freedk
re: C语言学习方法
笑笑不去当推销员真可惜了~~~~~~~~~up panic所说,是毅力问题,当然也支持“书当然要看好书,只有好书才营养丰富。” hou hou.......
问题男
to 一笑
游戏造就人啊,厉害~~~~
小刀人
re: C语言学习方法
好文,准备放到文档中心去。
谢勒宝剑
re: C语言学习方法
等我有了经验,再给大家讲。
前面都看过了。非浅。
Ken Ritchie
re: C语言学习方法
你是什么人物啊,这么强!
小弟佩服!
一笑
to 笨鸟 //re: C语言学习方法
一个征服不了自己的人怎么能够去征服世界?
现在上网的时间少了,不过我想我还是有空来看看偶的blog.
troublefish
re: C语言学习方法
好一句"一个征服不了自己的人怎么能够去征服世界?"
只有征服自己先啰...哈..
ice
re: C语言学习方法
笑笑,哥哥
写的不错嘛,呵呵,哥哥好棒哦
一笑
to 小星&小新 //re: C语言学习方法
在想知道how之前,不妨先去do一下,会更有效果!:p  站在岸上是学不会游泳的~
一笑
to 醉柠檬: //re: C语言学习方法
俺学编程那会儿,讲究的是:1拿到问题2数学建模3构思算法4画NS图(在脑子里想也可以)5实现6调试 
上班做项目一般会:1产品规格书2软件需求分析3软件规格书4概要设计5详细设计6编码7单元测试8系统测试9发布 
hoho,写的简单了,仅供参考~
醉柠檬
re: C语言学习方法
再次感谢一笑。
偶现在学编程。你的步骤对我来说很严谨。很使用。我可以按照你所提供的组织程序的6个步骤来要求自己。哈哈。谢谢哈。
一笑
to keke //re: C语言学习方法
把铁杵磨成绣花针有什么好方法?把石头上用水滴滴穿有什么好方法?聚沙成塔,滴水穿石——这就是古人告诉我们的成功的最好方法!在你需要前进的路径的时候,千万不要停步不前。
一笑
to 张明 //re: C语言学习方法
literate programming是有种编程风格(或者说是编程思路、编程方法、编程习惯):整个代码用自解释的语句来描述,其中的变量、函数都是斟字琢句命名的。literate programming的思想就是让代码的阅读者能够想读散文一样阅读代码、轻松理解。:) 你可以在http://www.literateprogramming.com/上看一些相关的材料。

关于《接口》一书中的literate programming代码,完全可以按照"自顶向下、逐步细化"的思路来理解,即先给出整个问题的框架,再逐步分解其某一步的细节的实现。所以对于主干中有标号的部分,直接利用其具体的实现代码(一般会在介绍主干的后面章节中介绍)来替换掉就okey了!你坚持看几个章节,就习惯了。~~ :)
hgh
re: C语言学习方法
不错,和我的学习方法差不多,我一天只用5个小时写程序
allen
re: C语言学习方法
Read the fucking source code linus说过没。^_^ 你又是从何而知的? 我用google搜了半天可只见中国人这么说过。
一笑
re: C语言学习方法
你可以试试搜索RTFSC
一般在Linux-Kernel mail list里面的人老这么说。:)
完美瞬间
re: C语言学习方法
这为大哥真是让我佩服死了,一天6小时,一听脑袋都大了,呵呵
我也要向你学习,跟它玩命了,呵呵!……
乾坤一笑
re: C语言学习方法
呵呵,专职的程序员,一天编调10个小时代码也属于正常现象。不过做为学生来说一天花这么大的精力在编码上面却是需要较大的毅力和决心了;另外就是计划和时间的管理,这也是重要的能力。
zzq
re: C语言学习方法
我六天做一小时程序。惭愧啊,听楼上所言,甚是鼓舞。谢了。以后请各位多指教。
yun
re: C语言学习方法
请问一笑大侠是在哪里读的高中和大学啊?
一笑
to yun //re: C语言学习方法
一个人的成功的因素中: 10%是培训,20%是环境影响,70%是自己的努力
俺shi新来 D
re: C语言学习方法
去年有学VB,今年学校改C了,,,挺喜欢的,就是不知怎么学好,望有前辈指点。。。呵呵
dxnawOzeIhkHCLVs
dVa3V6

发表评论
切换编辑模式