我觉得总结得还是有道理的(虽然大部分类比都可删除,但便于初学者印象深刻嘛)。记得当年一开始也是闷着头写代码,写出来的代码臭不可闻,基本的 DRY 原则都不知道,更不用说编码规范了,测试了,重构了,设计了。只能说实现了一坨功能,代码内部则是乱成一团。而现在,还有很多学习编程的觉得会了语法就是会了写代码,写出来的代码无论是可读还是可维护性都很差。
其实说到底就是,与其闭门造成,自己从头实践来总结一些经验和知识,不如站在前人的肩膀上,并辅以一定的实践来加深理解和印象,是最有效的方法。
文章基本没有正面论述,权当休闲阅读,但观点倒是正确的。多读点前人废了老鼻子劲碰掉了N鼻子灰总结出来的经验,可以少浪费些生命。
via: http://shrimphouse.spaces.live.com/Blog/cns!EBCC39981FB42087!612.entry
为什么我们都认为不读书就写书是荒谬的,而认为程序员就可以不读别人的代码就能自己写代码?
现在的大学里面教 计算机,开一门课叫《C语言》,盼望着学了这个就能会写程序,或者觉得内功不够,就再来一些《数据结构》,《算法》,《形式语言》,《编译原理》之类的课 程。觉得不够系统,不够广泛,就加点料《计算机组成原理》,《计算机体系》。发现这是一个网络的时代,于是就补充《TCP/IP原理》之类的课程。至于 《软件工程》这种狗屁不通的课程,只是老师用来误导学生,同时用来迷惑自己的,不是说这不是一门学问,而是说国内还不太有人能精于此道,而就在少数精于此 道的人中恰恰没有太多教书育人的老师。倘若你真的是遇见了这么一位,那真是你三生修来的福分。可是学了这么多,大家真的会写程序么?抑或是说我们写的程序 真的能用么?
大多数人还是承认编程是门艺术。那么好的,我们就用和它比较相似的文学艺术与之相比。程序大师比之若文学巨匠,程序犹比文 学作品,大师成长之路好似巨匠苦修之旅。我们会发现程序之路,至少是大学里面和绝大多数人正在探索的程序之路是与我们几千年来的经验积累矛盾的。怎么说 呢?让我想像一个人是如何成为一个文学巨匠,或者退一万步说,成为一个有文笔的人。这个人要从一点一滴学起,当然包括字,词,句啊等一些非常基本的要素。 还有拼音,笔顺,书写等一系列规范。可是一个人学了这些规范就一定能写出《血色浪漫》么,开玩笑!不能指望一个人把字典通读一遍就能写《史记》,即使你读 的是《康熙字典》也不行。也同样不能指望学了拼音就会说中国话,要不然语言文化大学和广播大学之类的都要关门大吉了。任何一个人学习语文的过程都是相似 的,学一点基础知识,读一些能看懂的书,试着写一写,改一改,再学一些规范性的知识如修辞等等,再大量阅读,自己不断的写不断的改。古往今来,哪一个有所 成就的文人墨客无不是这一步一步走过来的。所以有"读书破万卷,下笔如有神"的说法。可见阅读是学习语文的最核心的部分。所以我们从古自今的语文教学都强 调了学习他人的作品,相信这也是全世界通行的一个做法。读的多了,品味就上去了;读得多了,见识就多了,就知道所谓"文思如尿崩,谁与我争锋"的境界了; 读得多了,就知道"啊哈,原来如此"。
可是反过来看看我们的程序员们是怎么培养出来的呢?基本上就是读完了字典,就去写《史记》,荒谬绝伦。至少成批的量产教育肯定如此。仔细想来大学的教育甚至连一门《代码阅读与欣赏》的课程都没有,何谈编程艺术。仔细想想我身边的朋友,但凡是在码代码 方面有点心得的,无不是私下里读了,写了,改了大量的代码。看来文学写作的经验还是符合人类学习的规律的,而编程学习也要符合这一规律。
我 深深相信,通过大量阅读优秀源码能够解决大部分程序员常犯的错误,比说结构规划不合理,并发的控制失策,异常的处理不足,代码风格不规范等等。当然所有的 书里都不能教你关于编程的一切,代码阅读也不能,但是如果让我之选择一种学习方式的话,那么我会选择代码阅读,因为这个是最接近"一切"的方法。
我觉得总结得还是有道理的(虽然大部分类比都可删除,但便于初学者印象深刻嘛)。记得当年一开始也是闷着头写代码,写出来的代码臭不可闻,基本的 DRY 原则都不知道,更不用说编码规范了,测试了,重构了,设计了。只能说实现了一坨功能,代码内部则是乱成一团。而现在,还有很多学习编程的觉得会了语法就是会了写代码,写出来的代码无论是可读还是可维护性都很差。
其实说到底就是,与其闭门造成,自己从头实践来总结一些经验和知识,不如站在前人的肩膀上,并辅以一定的实践来加深理解和印象,是最有效的方法。
文章基本没有正面论述,权当休闲阅读,但观点倒是正确的。多读点前人废了老鼻子劲碰掉了N鼻子灰总结出来的经验,可以少浪费些生命。
via: http://shrimphouse.spaces.live.com/Blog/cns!EBCC39981FB42087!612.entry
为什么我们都认为不读书就写书是荒谬的,而认为程序员就可以不读别人的代码就能自己写代码?
现在的大学里面教计算机,开一门课叫《C语言》,盼望着学了这个就能会写程序,或者觉得内功不够,就再来一些《数据结构》,《算法》,《形式语言》,《编译原理》之类的课程。觉得不够系统,不够广泛,就加点料《计算机组成原理》,《计算机体系》。发现这是一个网络的时代,于是就补充《TCP/IP原理》之类的课程。至于《软件工程》这种狗屁不通的课程,只是老师用来误导学生,同时用来迷惑自己的,不是说这不是一门学问,而是说国内还不太有人能精于此道,而就在少数精于此道的人中恰恰没有太多教书育人的老师。倘若你真的是遇见了这么一位,那真是你三生修来的福分。可是学了这么多,大家真的会写程序么?抑或是说我们写的程序真的能用么?
大多数人还是承认编程是门艺术。那么好的,我们就用和它比较相似的文学艺术与之相比。程序大师比之若文学巨匠,程序犹比文学作品,大师成长之路好似巨匠苦修之旅。我们会发现程序之路,至少是大学里面和绝大多数人正在探索的程序之路是与我们几千年来的经验积累矛盾的。怎么说呢?让我想像一个人是如何成为一个文学巨匠,或者退一万步说,成为一个有文笔的人。这个人要从一点一滴学起,当然包括字,词,句啊等一些非常基本的要素。还有拼音,笔顺,书写等一系列规范。可是一个人学了这些规范就一定能写出《血色浪漫》么,开玩笑!不能指望一个人把字典通读一遍就能写《史记》,即使你读的是《康熙字典》也不行。也同样不能指望学了拼音就会说中国话,要不然语言文化大学和广播大学之类的都要关门大吉了。任何一个人学习语文的过程都是相似的,学一点基础知识,读一些能看懂的书,试着写一写,改一改,再学一些规范性的知识如修辞等等,再大量阅读,自己不断的写不断的改。古往今来,哪一个有所成就的文人墨客无不是这一步一步走过来的。所以有"读书破万卷,下笔如有神"的说法。可见阅读是学习语文的最核心的部分。所以我们从古自今的语文教学都强调了学习他人的作品,相信这也是全世界通行的一个做法。读的多了,品味就上去了;读得多了,见识就多了,就知道所谓"文思如尿崩,谁与我争锋"的境界了;读得多了,就知道"啊哈,原来如此"。
可是反过来看看我们的程序员们是怎么培养出来的呢?基本上就是读完了字典,就去写《史记》,荒谬绝伦。至少成批的量产教育肯定如此。仔细想来大学的教育甚至连一门《代码阅读与欣赏》的课程都没有,何谈编程艺术。仔细想想我身边的朋友,但凡是在码代码方面有点心得的,无不是私下里读了,写了,改了大量的代码。看来文学写作的经验还是符合人类学习的规律的,而编程学习也要符合这一规律。
我深深相信,通过大量阅读优秀源码能够解决大部分程序员常犯的错误,比说结构规划不合理,并发的控制失策,异常的处理不足,代码风格不规范等等。当然所有的书里都不能教你关于编程的一切,代码阅读也不能,但是如果让我之选择一种学习方式的话,那么我会选择代码阅读,因为这个是最接近"一切"的方法。
--
http://zoomquiet.org'''
过程改进乃是催生可促生靠谱的人的组织!
PE keeps evolving organizations which promoting people be good!'''
我的身边有两个新手,其中一个之前做过一阵子js,用过jquery。另一个纯粹菜鸟,在一个什么业余学校里有一年多的培训。前者(简称A)很会做东西,给个思路,基本上就能做下去了,几个项目头头都喜欢同他合作。后者(简称B)不太行,始终抓不住要领,要命的是他自认为抓住了要领了。
观察之后,我觉得这两个人都存在各自的问题。先说B,他的问题不仅仅在于编程方面,他对于一般事物的认识也同样显得粗糙,浅薄。他做事往往丢失目标。他的资质不算很差,够得上平均水平。这种情况我觉得不是天生的。很可能从小缺乏思维锻炼,从小读书到大,却也只是被动地学了各种该他学的东西。至于如何学习,如何思考,他没有学会,也没有人教他。
A则灵巧得多,往往会主动地找到一些解决方案。但是,他始终还是无法完全独立地处理开发中遇到的问题。A身上体现了众多程序员中的另一种问题。他们缺乏全面的技术视野。他们有的凭着资质,有的凭着经验,具备了完成某项工作的能力。但是他们往往只会在既有的,熟悉的技术和方法范围内解决问题。因为他们只了解这些。作为程序员,不可能一开始就了解各种领域的技术。很多程序员往往沦落为井底之蛙。他们不知道还有更多的技术,更多的方法可以帮助他们更好地解决问题。久而久之,便养成了习惯,甚至主动地排斥其他领域的东西。这些人主要还是缺乏引导,没有人一开始就告诉他们,这个世界上还有很多其他的东西,可以为他们提供帮助。至少也应该鼓励他们探索新的领域,并且让他们知道如何去寻找新的东西。
对这些情况,我觉得教育有不可推卸的责任。对于B没有促使他学会学习的技能。对于A没有能够培养他们的好奇心和探索精神。正因为如此,我们在如此众多的it从业者中,却很难挑出足够多的优秀程序员。
我的身边有两个新手,其中一个之前做过一阵子js,用过jquery。另一个纯粹菜鸟,在一个什么业余学校里有一年多的培训。前者(简称A)很会做东西,给个思路,基本上就能做下去了,几个项目头头都喜欢同他合作。后者(简称B)不太行,始终抓不住要领,要命的是他自认为抓住了要领了。
观察之后,我觉得这两个人都存在各自的问题。先说B,他的问题不仅仅在于编程方面,他对于一般事物的认识也同样显得粗糙,浅薄。他做事往往丢失目标。他的资质不算很差,够得上平均水平。这种情况我觉得不是天生的。很可能从小缺乏思维锻炼,从小读书到大,却也只是被动地学了各种该他学的东西。至于如何学习,如何思考,他没有学会,也没有人教他。
A则灵巧得多,往往会主动地找到一些解决方案。但是,他始终还是无法完全独立地处理开发中遇到的问题。A身上体现了众多程序员中的另一种问题。他们缺乏全面的技术视野。他们有的凭着资质,有的凭着经验,具备了完成某项工作的能力。但是他们往往只会在既有的,熟悉的技术和方法范围内解决问题。因为他们只了解这些。作为程序员,不可能一开始就了解各种领域的技术。很多程序员往往沦落为井底之蛙。他们不知道还有更多的技术,更多的方法可以帮助他们更好地解决问题。久而久之,便养成了习惯,甚至主动地排斥其他领域的东西。这些人主要还是缺乏引导,没有人一开始就告诉他们,这个世界上还有很多其他的东西,可以为他们提供帮助。至少也应该鼓励他们探索新的领域,并且让他们知道如何去寻找新的东西。
是这样没错,
可还是有一些大师,小时候是也被逼着学的技巧,
很久以后懂得了音乐,却成为了大师。
只是对教育来说,太得不偿失了
如果让普通学生去学 "C 语言",考计算机证之类,
实在不如拿个周蟒 <http://code.google.com/p/zhpy/wiki/ByteOfZhpy> 给他/她玩
但是这些功利性考钢琴的人,不太可能有啥音乐熏陶环境
http://www.w3.org/Style/XSL/
http://www.w3.org/TR/xslt20/
http://www.w3.org/TR/xslt20req
音色主要取决于泛音的模型。一般来讲泛音越多,而且是偶次倍泛音越多,音色越暖,奇次倍越多,音色越尖。这个不是量化,没有做过双盲对比,呵呵。
老莫能推荐个讲xslt的书么?一直听说过这东西,但是没机会用到,想系统的学一下。
"道可道,非恒道"的含义有两层,
一、没有绝对真理,事物是不断发展变化的,因此现在认为是真理的以后不一定还是真理。
二、真理是语言难以穷尽的,认为真确的真理描述都难以完整描述真理。
egmkang wang wrote:
> 我在cnblogs上面被拍砖,说,大四还没掌握OO,有一点说不过去. 我想在
> 这里问一问, 众老鸟都是在什么时候认为自己真正掌握OO的呢?
我在cnblogs上面被拍砖,说,大四还没掌握OO,有一点说不过去. 我想在这里问一问, 众老鸟都是在什么时候认为自己真正掌握OO的呢?
我的身边有两个新手,其中一个之前做过一阵子js,用过jquery。另一个纯粹菜鸟,在一个什么业余学校里有一年多的培训。前者(简称A)很会做东西,给个思路,基本上就能做下去了,几个项目头头都喜欢同他合作。后者(简称B)不太行,始终抓不住要领,要命的是他自认为抓住了要领了。
观察之后,我觉得这两个人都存在各自的问题。先说B,他的问题不仅仅在于编程方面,他对于一般事物的认识也同样显得粗糙,浅薄。他做事往往丢失目标。他的资质不算很差,够得上平均水平。这种情况我觉得不是天生的。很可能从小缺乏思维锻炼,从小读书到大,却也只是被动地学了各种该他学的东西。至于如何学习,如何思考,他没有学会,也没有人教他。
A则灵巧得多,往往会主动地找到一些解决方案。但是,他始终还是无法完全独立地处理开发中遇到的问题。A身上体现了众多程序员中的另一种问题。他们缺乏全面的技术视野。他们有的凭着资质,有的凭着经验,具备了完成某项工作的能力。但是他们往往只会在既有的,熟悉的技术和方法范围内解决问题。因为他们只了解这些。作为程序员,不可能一开始就了解各种领域的技术。很多程序员往往沦落为井底之蛙。他们不知道还有更多的技术,更多的方法可以帮助他们更好地解决问题。久而久之,便养成了习惯,甚至主动地排斥其他领域的东西。这些人主要还是缺乏引导,没有人一开始就告诉他们,这个世界上还有很多其他的东西,可以为他们提供帮助。至少也应该鼓励他们探索新的领域,并且让他们知道如何去寻找新的东西。
对这些情况,我觉得教育有不可推卸的责任。对于B没有促使他学会学习的技能。对于A没有能够培养他们的好奇心和探索精神。正因为如此,我们在如此众多的it从业者中,却很难挑出足够多的优秀程序员。2008/9/11 pongba <pon...@gmail.com>
我觉得总结得还是有道理的(虽然大部分类比都可删除,但便于初学者印象深刻嘛)。记得当年一开始也是闷着头写代码,写出来的代码臭不可闻,基本的 DRY 原则都不知道,更不用说编码规范了,测试了,重构了,设计了。只能说实现了一坨功能,代码内部则是乱成一团。而现在,还有很多学习编程的觉得会了语法就是会了写代码,写出来的代码无论是可读还是可维护性都很差。
其实说到底就是,与其闭门造成,自己从头实践来总结一些经验和知识,不如站在前人的肩膀上,并辅以一定的实践来加深理解和印象,是最有效的方法。
文章基本没有正面论述,权当休闲阅读,但观点倒是正确的。多读点前人废了老鼻子劲碰掉了N鼻子灰总结出来的经验,可以少浪费些生命。
via: http://shrimphouse.spaces.live.com/Blog/cns!EBCC39981FB42087!612.entry
为什么我们都认为不读书就写书是荒谬的,而认为程序员就可以不读别人的代码就能自己写代码?
现在的大学里面教 计算机,开一门课叫《C语言》,盼望着学了这个就能会写程序,或者觉得内功不够,就再来一些《数据结构》,《算法》,《形式语言》,《编译原理》之类的课 程。觉得不够系统,不够广泛,就加点料《计算机组成原理》,《计算机体系》。发现这是一个网络的时代,于是就补充《TCP/IP原理》之类的课程。至于 《软件工程》这种狗屁不通的课程,只是老师用来误导学生,同时用来迷惑自己的,不是说这不是一门学问,而是说国内还不太有人能精于此道,而就在少数精于此 道的人中恰恰没有太多教书育人的老师。倘若你真的是遇见了这么一位,那真是你三生修来的福分。可是学了这么多,大家真的会写程序么?抑或是说我们写的程序 真的能用么?
大多数人还是承认编程是门艺术。那么好的,我们就用和它比较相似的文学艺术与之相比。程序大师比之若文学巨匠,程序犹比文 学作品,大师成长之路好似巨匠苦修之旅。我们会发现程序之路,至少是大学里面和绝大多数人正在探索的程序之路是与我们几千年来的经验积累矛盾的。怎么说 呢?让我想像一个人是如何成为一个文学巨匠,或者退一万步说,成为一个有文笔的人。这个人要从一点一滴学起,当然包括字,词,句啊等一些非常基本的要素。 还有拼音,笔顺,书写等一系列规范。可是一个人学了这些规范就一定能写出《血色浪漫》么,开玩笑!不能指望一个人把字典通读一遍就能写《史记》,即使你读 的是《康熙字典》也不行。也同样不能指望学了拼音就会说中国话,要不然语言文化大学和广播大学之类的都要关门大吉了。任何一个人学习语文的过程都是相似 的,学一点基础知识,读一些能看懂的书,试着写一写,改一改,再学一些规范性的知识如修辞等等,再大量阅读,自己不断的写不断的改。古往今来,哪一个有所 成就的文人墨客无不是这一步一步走过来的。所以有"读书破万卷,下笔如有神"的说法。可见阅读是学习语文的最核心的部分。所以我们从古自今的语文教学都强 调了学习他人的作品,相信这也是全世界通行的一个做法。读的多了,品味就上去了;读得多了,见识就多了,就知道所谓"文思如尿崩,谁与我争锋"的境界了; 读得多了,就知道"啊哈,原来如此"。
可是反过来看看我们的程序员们是怎么培养出来的呢?基本上就是读完了字典,就去写《史记》,荒谬绝伦。至少成批的量产教育肯定如此。仔细想来大学的教育甚至连一门《代码阅读与欣赏》的课程都没有,何谈编程艺术。仔细想想我身边的朋友,但凡是在码代码 方面有点心得的,无不是私下里读了,写了,改了大量的代码。看来文学写作的经验还是符合人类学习的规律的,而编程学习也要符合这一规律。
我 深深相信,通过大量阅读优秀源码能够解决大部分程序员常犯的错误,比说结构规划不合理,并发的控制失策,异常的处理不足,代码风格不规范等等。当然所有的 书里都不能教你关于编程的一切,代码阅读也不能,但是如果让我之选择一种学习方式的话,那么我会选择代码阅读,因为这个是最接近"一切"的方法。
我觉得总结得还是有道理的(虽然大部分类比都可删除,但便于初学者印象深刻嘛)。记得当年一开始也是闷着头写代码,写出来的代码臭不可闻,基本的 DRY 原则都不知道,更不用说编码规范了,测试了,重构了,设计了。只能说实现了一坨功能,代码内部则是乱成一团。而现在,还有很多学习编程的觉得会了语法就是会了写代码,写出来的代码无论是可读还是可维护性都很差。
其实说到底就是,与其闭门造成,自己从头实践来总结一些经验和知识,不如站在前人的肩膀上,并辅以一定的实践来加深理解和印象,是最有效的方法。
文章基本没有正面论述,权当休闲阅读,但观点倒是正确的。多读点前人废了老鼻子劲碰掉了N鼻子灰总结出来的经验,可以少浪费些生命。
via: http://shrimphouse.spaces.live.com/Blog/cns!EBCC39981FB42087!612.entry
为什么我们都认为不读书就写书是荒谬的,而认为程序员就可以不读别人的代码就能自己写代码?
现在的大学里面教 计算机,开一门课叫《C语言》,盼望着学了这个就能会写程序,或者觉得内功不够,就再来一些《数据结构》,《算法》,《形式语言》,《编译原理》之类的课 程。觉得不够系统,不够广泛,就加点料《计算机组成原理》,《计算机体系》。发现这是一个网络的时代,于是就补充《TCP/IP原理》之类的课程。至于 《软件工程》这种狗屁不通的课程,只是老师用来误导学生,同时用来迷惑自己的,不是说这不是一门学问,而是说国内还不太有人能精于此道,而就在少数精于此 道的人中恰恰没有太多教书育人的老师。倘若你真的是遇见了这么一位,那真是你三生修来的福分。可是学了这么多,大家真的会写程序么?抑或是说我们写的程序 真的能用么?
大多数人还是承认编程是门艺术。那么好的,我们就用和它比较相似的文学艺术与之相比。程序大师比之若文学巨匠,程序犹比文 学作品,大师成长之路好似巨匠苦修之旅。我们会发现程序之路,至少是大学里面和绝大多数人正在探索的程序之路是与我们几千年来的经验积累矛盾的。怎么说 呢?让我想像一个人是如何成为一个文学巨匠,或者退一万步说,成为一个有文笔的人。这个人要从一点一滴学起,当然包括字,词,句啊等一些非常基本的要素。 还有拼音,笔顺,书写等一系列规范。可是一个人学了这些规范就一定能写出《血色浪漫》么,开玩笑!不能指望一个人把字典通读一遍就能写《史记》,即使你读 的是《康熙字典》也不行。也同样不能指望学了拼音就会说中国话,要不然语言文化大学和广播大学之类的都要关门大吉了。任何一个人学习语文的过程都是相似 的,学一点基础知识,读一些能看懂的书,试着写一写,改一改,再学一些规范性的知识如修辞等等,再大量阅读,自己不断的写不断的改。古往今来,哪一个有所 成就的文人墨客无不是这一步一步走过来的。所以有"读书破万卷,下笔如有神"的说法。可见阅读是学习语文的最核心的部分。所以我们从古自今的语文教学都强 调了学习他人的作品,相信这也是全世界通行的一个做法。读的多了,品味就上去了;读得多了,见识就多了,就知道所谓"文思如尿崩,谁与我争锋"的境界了; 读得多了,就知道"啊哈,原来如此"。
可是反过来看看我们的程序员们是怎么培养出来的呢?基本上就是读完了字典,就去写《史记》,荒谬绝伦。至少成批的量产教育肯定如此。仔细想来大学的教育甚至连一门《代码阅读与欣赏》的课程都没有,何谈编程艺术。仔细想想我身边的朋友,但凡是在码代码 方面有点心得的,无不是私下里读了,写了,改了大量的代码。看来文学写作的经验还是符合人类学习的规律的,而编程学习也要符合这一规律。
我 深深相信,通过大量阅读优秀源码能够解决大部分程序员常犯的错误,比说结构规划不合理,并发的控制失策,异常的处理不足,代码风格不规范等等。当然所有的 书里都不能教你关于编程的一切,代码阅读也不能,但是如果让我之选择一种学习方式的话,那么我会选择代码阅读,因为这个是最接近"一切"的方法。
--
刘未鹏(pongba)|C++的罗浮宫
http://blog.csdn.net/pongba
TopLanguage
http://groups.google.com/group/pongba
我觉得,仅仅开一个学期的代码鉴赏课,未必是一个根本的解决方案,关键还在于学生自己是否有参与的积极性(我见过很多不喜欢编程的计算机系学生)。明白基本的一些设计原则,还需要大量的阅读和实践,作为工程类的学科(如果只是以培养程序员为目标),经验是非常重要的,没有亲自参与几个比较大的project,设计编码能力恐怕很难提高一个层次。应用软件的开发始u终是以实用为第一准则的,纸上谈兵流于形式反而会让学生眼高手低,而在实际工作中栽大跟头。另一个问题是,学校的老师可能学术能力不错但自身未必有很丰富的编码经验,不妨将这种课程设置为选修课,由经验比较丰富的程序员或者架构师来主讲,只是执行起来恐怕未必容易。
基础也有不同的偏重,可以根据自己的兴趣或者目前从事的开发方向拓展开来.罗列出不同的基础分层,然后根据兴趣,和愿望在保证最大化提高实际工作能力的前提下,来补充知识.看到一个帖子说,基础是补不完的.我很是赞同.(前端时间就陷入补基础的困境(什么编译原理,后端优化,数据结构,算法分析,操作系统,计算机组成,等待那个,不一而足),完全没有考虑如何来提高自己的实际工作能力.现在明了了
:))
2008/9/16 thoriod <tho...@gmail.com>:
我觉得总结得还是有道理的(虽然大部分类比都可删除,但便于初学者印象深刻嘛)。记得当年一开始也是闷着头写代码,写出来的代码臭不可闻,基本的 DRY 原则都不知道,更不用说编码规范了,测试了,重构了,设计了。只能说实现了一坨功能,代码内部则是乱成一团。而现在,还有很多学习编程的觉得会了语法就是会了写代码,写出来的代码无论是可读还是可维护性都很差。
其实说到底就是,与其闭门造成,自己从头实践来总结一些经验和知识,不如站在前人的肩膀上,并辅以一定的实践来加深理解和印象,是最有效的方法。
文章基本没有正面论述,权当休闲阅读,但观点倒是正确的。多读点前人废了老鼻子劲碰掉了N鼻子灰总结出来的经验,可以少浪费些生命。
via: http://shrimphouse.spaces.live.com/Blog/cns!EBCC39981FB42087!612.entry
为什么我们都认为不读书就写书是荒谬的,而认为程序员就可以不读别人的代码就能自己写代码?
现在的大学里面教计算机,开一门课叫《C语言》,盼望着学了这个就能会写程序,或者觉得内功不够,就再来一些《数据结构》,《算法》,《形式语言》,《编译原理》之类的课程。觉得不够系统,不够广泛,就加点料《计算机组成原理》,《计算机体系》。发现这是一个网络的时代,于是就补充《TCP/IP原理》之类的课程。至于《软件工程》这种狗屁不通的课程,只是老师用来误导学生,同时用来迷惑自己的,不是说这不是一门学问,而是说国内还不太有人能精于此道,而就在少数精于此道的人中恰恰没有太多教书育人的老师。倘若你真的是遇见了这么一位,那真是你三生修来的福分。可是学了这么多,大家真的会写程序么?抑或是说我们写的程序真的能用么?
大多数人还是承认编程是门艺术。那么好的,我们就用和它比较相似的文学艺术与之相比。程序大师比之若文学巨匠,程序犹比文学作品,大师成长之路好似巨匠苦修之旅。我们会发现程序之路,至少是大学里面和绝大多数人正在探索的程序之路是与我们几千年来的经验积累矛盾的。怎么说呢?让我想像一个人是如何成为一个文学巨匠,或者退一万步说,成为一个有文笔的人。这个人要从一点一滴学起,当然包括字,词,句啊等一些非常基本的要素。还有拼音,笔顺,书写等一系列规范。可是一个人学了这些规范就一定能写出《血色浪漫》么,开玩笑!不能指望一个人把字典通读一遍就能写《史记》,即使你读的是《康熙字典》也不行。也同样不能指望学了拼音就会说中国话,要不然语言文化大学和广播大学之类的都要关门大吉了。任何一个人学习语文的过程都是相似的,学一点基础知识,读一些能看懂的书,试着写一写,改一改,再学一些规范性的知识如修辞等等,再大量阅读,自己不断的写不断的改。古往今来,哪一个有所成就的文人墨客无不是这一步一步走过来的。所以有"读书破万卷,下笔如有神"的说法。可见阅读是学习语文的最核心的部分。所以我们从古自今的语文教学都强调了学习他人的作品,相信这也是全世界通行的一个做法。读的多了,品味就上去了;读得多了,见识就多了,就知道所谓"文思如尿崩,谁与我争锋"的境界了;读得多了,就知道"啊哈,原来如此"。
可是反过来看看我们的程序员们是怎么培养出来的呢?基本上就是读完了字典,就去写《史记》,荒谬绝伦。至少成批的量产教育肯定如此。仔细想来大学的教育甚至连一门《代码阅读与欣赏》的课程都没有,何谈编程艺术。仔细想想我身边的朋友,但凡是在码代码方面有点心得的,无不是私下里读了,写了,改了大量的代码。看来文学写作的经验还是符合人类学习的规律的,而编程学习也要符合这一规律。
我深深相信,通过大量阅读优秀源码能够解决大部分程序员常犯的错误,比说结构规划不合理,并发的控制失策,异常的处理不足,代码风格不规范等等。当然所有的书里都不能教你关于编程的一切,代码阅读也不能,但是如果让我之选择一种学习方式的话,那么我会选择代码阅读,因为这个是最接近"一切"的方法。
还是挺符合大家的论题把
2008/9/25 Chen Zhengguang <cerr...@gmail.com>:
--
Any complex technology which doesn't come with documentation must be the best
available.
其实我个人倒觉得重复发明轮子也是锻炼能力的一种途径, 我不知道为啥国内业内总有种排斥重复发明轮子的倾向,可能是因为国内业内工程师有"相轻"得问
题,矫罔不可过正。重复别人做的事情可以让你更明白别人为啥那样设计,明白其中隐藏的深意。从学习锻炼的角度出发的,我鼓励重复发明轮子,只要你有兴
趣,那就去自己做个吧。