【51CTO独家特稿】h1. 作业分析
作业是课程的一部分,实际上,还是这个课程最重要的部分。
如我在前面课程中提到的一样:
很多初学者,或者说,编程的伪爱好者,他们,会热衷于去四处请教大师,下载各种经典书籍,企图读一本编程圣经,然后一夜脱胎换骨。
这是,不可能的。
同样的,如果仅仅是看了这个课程,而不做作业,那么在看课程前后,个人的能力是不可能有变化的。
充其量,跟看了一部或许好玩的小说差不多。
作业并不是考试,而是课程的延伸,是没有可能参照着课程的内容,然后对作业做出回答。
每节课,仅仅只是指出一个方向,然后需要大量时间的去朝这个方向做学习、探索,然后以作业的形式做出对这个方向的回答。
这才是学习。
花几分钟看几眼课程,然后就期待自己技术能力有变化?能够有改变,从不会做作业变成会做作业?
别开玩笑了,如果能够这样,那么程序开发会是一门非常没有技术含量,非常没有含金量的行业。
只有用心好好完成了作业之后,才有可能获得知识。
这个课程的作业,也完全不是:
小明有5个苹果,他吃了一个。然后给小寒了一个,求太阳到地球的距离。
这样无厘头的题目。
每节课的作业,都是跟课程有直接关系的。
h2. 第一课
1. 用500字讲述什么是Programming Methodology?
2. 列举10种Data Structure.
3. 列举10种Algorithm.
这课的作业实际上是在问,你对“编程本质”的内容掌握了多少,如果不够熟悉,了解得不够多,要赶快去学习。
h2. 第二课
1. 列举10个Python Web框架
2. Python有多少种不同的解释器?
3. Perl 跟 Python 有什么不同?
这课的作业,同样是在问具体到Python这个语言平台,在实际开发中可供挑选的现成工具有哪些?问的是对自身工作所使用的平台熟悉程度。这课的作业,也完全可以根据使用的语言不同,而改成别的技术题目。
这课讲的是实际中对工具掌控的熟悉程度这个方向,如果熟悉,那么这三个问题是很容易回答的,如果不熟悉,而为了做作业去打开Google,搜“python web框架”,然后填名字。那么就完全木有做作业的意义。
h2. 第三课
1. 找出一篇看上去很厉害的文章。
2. 找一本书,开始看,作为期中考书目。
这课讲的是阅读的重要性,两项作业,一个要求阅读的广度,一个是要求阅读的深度。
作业是要做的。OK,这课讲了阅读的重要,明白了,然后就洗洗睡了?自身的阅读的东西,无论是广度还是深度,都跟以前一样,那学这课程有个毛用?
宣称喜欢这个课程,并且表示关注、期待的同学,请问,你选择的期中考书目,已经翻了几页?
如果一页还没有翻;那么请好好问一下你自己,你究竟是不是要学习提高改变自己的?
h2. 第四课
1. 林仕鼎是百度首席架构师吗?
2. 看完曹政所有的blog。
这一课其实还是在讲阅读的重要性,以及对事物的好奇心。
如果,你对技术有热情,有追求,课程中居然出现了“百度首席架构师”这样的字眼,你必然会对他有无限的好奇,会去刨根问底的了解他。
那么,是很容易就发现林仕鼎根本就不是百度首席架构师,相反,caoz曾经更符合这个身份。
我列举了两个hacker风格的IT人物,一个是caoz,一个是云风。
作业有一项是看完caoz的所有blog,他的blog很好看的。如果你真的看完了,那么,请问你是否有完成这课实际上还有另一个隐藏的“作业”,“看完云风的所有blog”?
如果没有,那是什么阻止了你?一个非常优秀的技术博客知识就放在你眼前,你,为什么不去看?
OK,没有时间,很忙,这些我很了解。
我只问一个:是否有过要把云风的blog也看完的念头?
如果连这基本的好奇心、求知欲都木有的话,那还是洗洗睡吧。
h2. 第五课
1. NoSQL的方案,如MongoDB还解决了SQL的什么问题?
2. NoSQL的应用场景有啥米?
这课是讲数据库,分析、比较了SQL、NoSQL,同样的,需要课后去做更加深入的了解并且思考SQL、NoSQL的适用场景。
h2. 第六课
1. 使用一种编译语言实现 Singleton 模式
2. 使用一种动态语言实现 Singleton 模式
3. 说说对 Provider 模式的理解。
如果连最简单的Singleton模式实现都是上网google的现成代码,那。。。还是那句话,洗洗睡吧。。。
这课讲的是设计模式的必要以及局限,如果只是看到后面对设计模式局限的调侃,而无视了前面提到的:“开发中非常必要的知识,实际上,是非常基础的知识”。
你究竟对非常基础的设计模式了解得多深入了?第三题换个模式,你说得出理解么?
h2. 第七课
1. php 的 Smarty 模版的设计哲学是什么?
2. perl 的 Mason 模版的设计哲学是什么?
3. 什么是gettext?
4. 前端javascript实现的模版中,目前最成熟的是哪个引擎?
这课是讲模版,模版有很多现成的实现,作业纯粹就是在要求去了解、认识各种模版技术的实现。
h2. 第八课
1. 说说对 restful 的理解
2. 什么是 reverse proxy ?
restful / reverse proxy等,都是跟controller相关,但延伸出去的相关知识。
相关性究竟在哪里?这个可以做为独立的一课去讲述,但也完全是可以自学了解的。但这绝对不是在跟小明讲了1+2=3后,问太阳与地球的距离。
h2. 第九课
没有作业。
h2. 第十课
1. ED开发圣经PEAA究竟是哪本书?
2. 数据库三范式是什么?
3. 关于Domain Model,什么是充血模型?什么是贫血模型?
第一题纯娱乐,第二题是确认课本知识掌握;第三题则又是在要求延伸阅读,实际上,也是在为下一课做预习。
h2. 第十一课
1. N-tiers架构的噩梦场景是?
2. 什么系统/场景需要充分使用特定数据库的特性?
这课作业是在要求对课程做思考,写课程时,我实际上是码了很多字,去描述N-tiers的噩梦场景。但后来我又全部删除。
因为,我前面已经讲了很多关于分层、封装的问题,也提供了The Law of Leaky Abstractions的连接,对N-tiers有了解,对分层的问题有了解,那么如果还不能认识到N-tiers这么一个多分层的技术的噩梦场景是什么的话;那么我还是只能说:洗洗睡吧。
整个课程,是在强调对数据库的封装。为了避免产生封装就是好的教条思想产生,所有我又加了“使用特定数据库的特性”这个作业,要求去思考一下相反的场景。
作业:
1. 补做之前的所有作业
51CTO系列: