学好计算机的八条建议——计算机达人成长之路(34)

简介:

 

3、计算机基础(一)化繁为简,实用优先

曾经有学生向木鸿飞抱怨。
学生甲:“计算机最难学。”
木鸿飞:“啊。”(一声)
学生甲:“因为计算机的书最厚, 16 开的纸张,不是三百页就是四百页,你要拿一本两百页的计算机书都不好意思跟人打招呼。”
木鸿飞:“啊…”(二声)
学生甲:“还有就是函数和变量的名称最长,不是 20 个字符就是 30 个字符,你要设定一个 10 个字符的变量都不好意思跟人打招呼,比如 WS_OVERLAPPEDWINDOW ,比如 CreateCompatibleDC 。”
木鸿飞:“啊?”(三声)
学生甲:“最后,每个函数的参数又长又臭,不是 10 个参数就是 20 个参数,好不容易碰上只有一个参数的,一看,哦,是个结构,结构里有 30 个成员变量。”
木鸿飞:“啊!”(四声)
学生甲:“比如这个函数: HWND WINAPI CreateWindowEx
(DWORD,LPCSTR,LPCSTR,DWORD,int,int,int,int,HWND,HMENU,HINSTANCE,LPVOID);
前前后后 12 个参数,其中很多参数还是指向函数的指针。木老师,当你第一次看到这个函数的时候,难道你不觉得有一种头晕的感觉吗?”
木鸿飞:“晕。”
学生甲:“就是嘛!强悍如老师你也觉得晕,瘦弱如我们者又怎么能够学的好计算机呢?”
木鸿飞:“简。”
学生甲:“简?简•爱?什么意思?”
木鸿飞:“简!”
学生甲:“拜托,木老师,你不要学那个不知名的学生叶子好不好,他说两个字是为了装酷,你难道没有听说:莫装酷,装酷遭人吐;莫装 B ,装 B 遭雷劈吗?”
木鸿飞(现在的学生,一点面子也不给):“其实我说是可以用学习计算机八字真言中的简——“化繁为简,实用优先”来对付他。”
学生甲:“明明这么复杂了,还怎么简单?虽然你是老师,大家熟归熟,但是如果你继续忽悠我们幼小的心灵,我们将不保证能够按时为你顶博客,你知道的,我们是职业帮顶,值得信赖,……”
————————————————————————————
大一上学期,开设的都是基础课,比如《数学分析(一)》、《大学英语(一)》等等,仅有一门计算机专业课程,那就是《计算机基础》。
记得“计算机基础”首映式那天,同学们早早的挤满了教室,翘首期待人生的计算机专业处女课,不知有多少同学在日记本上重重的记上一笔,只为将来出名后可以在银屏上侃侃而谈他的“第一次”。
同学们太积极了,上节课还没有结束,就堵在了教室门口,然后列队夹道目送里面的学生离开。教室里上节课的大部分学生在这种架势下,飞速的走了,但也有一些学生似乎不配合,慢慢悠悠的,收拾这,收拾那,久久不肯离开。有同学等不及了,把“先下后上”的理论抛到脑后,冲进教室,直接跑到第一排,把书放到课桌上,然后一屁股坐下,随即打出一个“耶”的手势, OK ,抢座位成功!
见到有人不守规矩闯了进去,其他同学也按耐不住了,纷纷冲进教室,抢占一个靠前的位置坐下。至于上节课仍未离去的那几位,早有同学大步来到旁边,将书放到课桌上,眼睛直盯着,一幅“你一离开,我就扑上去”的架势。那几位也甚是大胆,仍然不紧不慢的收拾,末了还再检查一遍,确认无遗漏后才离开。末了,他们还自言自语一句:“这么积极,肯定是大一的!”
其实这个场景并不陌生,如果大家有幸参与春季人类大迁徙运动,赶春运上火车时,都是这个样子的,甚至有过之而无不及。
在木鸿飞的记忆中,这是绝无仅有的一次。随着时间的推移,上课的兴趣似乎逐渐被淡化,像这种提前二十分钟到达教室的现象绝对是一去不复返。笑话,不翘课就不错了,君不见大三、大四的课堂上,教室了空空旷旷,老师只能以点名为武器维护课堂的上座率。至于同学们提前到达教室望穿秋水的等待老师,那是安徒生童话。
计算机老师姓张,女性,作为同学们计算机专业处女课的老师,自然也成了同学们茶余饭后的话题,请看镜头:
镜头一:
同学 one :咱们的计算机基础课老师长得很漂亮。
同学 two :严重同意。
同学 one :老师长得很标致。
同学 two :继续严重同意,简直就是东风标致 307
镜头二:
同学 three :听说了吗?张老师已经考上博士,下个学期就将离开 XT 大学开始博士生生涯。
同学 fure :真的假的。
同学 three :我对毛主席发誓,绝对真实!
同学 fure :博士教我们,真爽!
出于对第一门专业课程的浓厚兴趣,有好事者充分发挥人肉搜索的八卦精神,四处打听,其实大学校园里,学生课后谈论老师是一件再平常不过的事情,一如男生寝室谈论女生,女生寝室谈论男生一样。
计算机基础是一门相当与时俱进的课程。在木鸿飞读大学时代,互联网仅仅是个婴儿, Windows95 刚刚传入, DOS 仍然在顽强的挣扎,文字处理普遍使用 WPS ,所以课程的内容主要是计算机的组成部分介绍、 DOS 操作命令和二进制描述。后来 Windows 占据了 PC 机操作系统的统治地位, Word 也取代了 WPS 成为文字处理的霸主,于是课程中删除了 DOS 操作,增加了 Windows 操作和部分 Office 操作。再后来互联网称霸世界,课程中自然需要加上网上冲浪的内容。
Windows 、互联网都是后话,那时那景,木鸿飞和他的同学们只能开始 DOS 时代的计算机基础学习。木鸿飞由于 3 年前学习了 DOS 操作,不由信心满满的,认为区区计算机基础,简直就是小小 CASE ,还不是手到擒来。
事实证明,木鸿飞错了,错的很离谱。
2001 年的某一堂计算机基础课,张老师已经讲解完了计算机组成结构,正式讲授 DOS 操作。同学们翻开书,找到“列目录”命令,跃入眼帘的是这样的一行:
 
DIR 命令显示目录中的文件和子目录列表,格式为:
DIR [drive:][path][filename] [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
 [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]] [/W] [/X] [/4]
 
 [drive:][path][filename]
              指定要列出的驱动器、目录和/或文件。
 /A          显示具有指定属性的文件。
 attributes   D 目录                R 只读文件
             H 隐藏文件            A 准备存档的文件
             S 系统文件            - 表示“否”的前缀
……
以上只是教材的冰山一角,有兴趣的读者可以在 Windows 下运行“ CMD ”命令,然后执行“ dir /? ”,随后提示的内容与教材上的一模一样,这就是 dir 命令的全部内容(注: DIR 命令就相当于 Windows 中的“我的电脑”功能)。请大家执行阅读以上内容,不知道大家感觉到晕乎没有,至少木鸿飞当时晕了,很多同学当时也晕了,一个命令而已,就如此之复杂,还有很多其他命令等着呢,难道都这样?有同学不信邪,翻动书本,意图在其他命令中寻找安慰,比如 COPY 命令,就是 Windows 中的文件复制和粘贴功能。只见教科书上明明白白的写着如下内容:
COPY 命令将一份或多份文件复制到另一个位置,格式为:
COPY [/D] [/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]
     [+ source [/A | /B] [+ ...]] [destination [/A | /B]]
……
“天啦!全都这么复杂,计算机太难学了!”虽然初次见面,但同学们仍然能够感觉 2012 提前到达,教室里晕倒一片。
其实也不必太悲观,还有老师呢,要充分相信老师会为大家解惑的。
张老师不负众望,她拿出了一本厚厚的备课讲义,前排眼尖的同学可以清楚地看到,上面密密麻麻全部写满了字,由此可见老师备课相当认真,大家心里重新燃烧起了希望。
“同学们, dir 命令可以显示目录中的文件和子目录列表,他的应用格式是这样的,”张老师转过身,一边看讲义,一边在黑板上重重的书写。
“黑板上的内容好眼熟啊,好像在哪里见到过!”下面有同学窃窃私语。
“那都是老师讲义上的内容,你怎么会眼熟,唱甜蜜蜜过头了吧。”
“真的在哪里见过,… . ,对了,与教科书上的内容一模一样!”
“不是吧,老师明明从讲义上抄的,难道她的讲义和教科书一致?”
“……”
由于很多同学同时窃窃私语,大概是由于共振的作用,私语声转变成了嘈杂声,在教室里响起。张老师终于听到了,她回眸一笑,于是教室里迅速鸦雀无声,她张张嘴,开始解释 DIR 命令,早有酷爱学习的女同学一边听一边快速的记录笔记。课后有好事者将笔记和教材对比,发现重复率达 90% 以上。
张老师很尽责,一遍讲下来,发现很多同学眉头紧锁,就又解释了一遍。于是在张老师孜孜不倦的教诲下,全班所有同学终于全部紧锁眉头。
“这么多中括号是什么意思?都要打上去吗?”课后,大家仍在探讨。寝室长张亚飞首先问道。张亚飞,人称帅哥张,大学四年皆任寝室长,此人酷爱吃发生,话语很少,不爱答话,一般来讲,女生问话十句他会回答三句,男生问话十句顶多答复一句。
“中括号表示可选,在实际输入命令的时候,中括号不需要输入。”木鸿飞解释道。
“木木,你不是自吹玩过 DOS 吗?你说说,一个 DOS 命令需要输入这么长吗?”帅哥张继续问。
“我学的 DOS 命令都没有这么长的,”木鸿飞开始回忆高中前的那个暑假偷学 DOS 的情景,哥哥讲述 DIR 命令时好像只有寥寥数语,“我记得当时的 DOS 命令没有这么复杂,比如 DIR ,我平时就直接输入 DIR 查询文件和目录的详细信息,或者输入‘ DIR /w ’,每列显示 5 个文件或目录信息,从来没有用过 /A/B/C/D 之类的。”
疑惑归疑惑,同学们都老老实实背诵每一个 DOS 命令的格式和每一个参数的含义,一时间背书声不绝于耳,“今天你背了吗?”取代“吃了吗”迅速蹿红。
木鸿飞也是背诵大军中的一员,如果不是发生了下面的事,也许现在他还在背诵着。
话说木鸿飞越是背诵 DOS 命令格式越是糊涂,一来参数过多使人犯愁,二来如今的 DOS 命令比其掌握的复杂了不止一点。不是他不明白,而是世界变化快,难道一转眼的功夫, DOS 命令升级了?带着这些疑惑,木鸿飞专门走访了班主任郑老师。
“在你印象中 DIR 命令是怎样的?”郑老师反问道。
“就是直接输入 dir ,或者输入 dir /w 也可以。”木鸿飞回答到。
“对啊, dir 命令就是这样的,你已经完全掌握了。”郑老师说道。
“不是吧?”木鸿飞惊愕之情不亚于听说奥巴马总统请他吃饭,“这么简单,不是还有 /A/B/C/D 之类的吗。”
“这些叫做命令选项,既然是选项,当然是可有可无的,你当然可以不使用它们就直接运行 dir ,也可以放弃其他选项,只使用一个 /w 。”郑老师解释道。
“啊?这样的话,其他的选项不就没有作用了吗?”木鸿飞更加疑惑了。
“就是需要它们没有作用!”郑老师的回答标新立异,“教科书为了权威和全面,势必列举所有参数和选项,但是其中的大部分选项,你们一辈子可能都不会去使用!既然如此,于其强求自己全面记住所有的选项,不如化繁为简,主动删除很多从来不用的选项,留下在实际应用中最可以用到的东东,这就是实用优先!”
郑老师的话就如一颗重型炸弹,将木鸿飞炸的不知所措。许久,木鸿飞从思索中惊醒过来,目光由浑浊变得清澈,他自言自语道:“化繁为简,实用优先,我明白了!”木鸿飞拿起笔,在教材的 DIR 命令处大胆的画上删除线,如下所示:
DIR [drive:][path][filename]  [/A[[:]attributes]] [/B] [/C] [/D] [/L] [/N]
 [/O[[:]sortorder]] [/P] [/Q] [/S] [/T[[:]timefield]]  [/W]  [/X] [/4]
“这些,这些,还有这些,”木鸿飞指着被他画上删除线的位置,“这些选项其实很难有机会用上,在实际应用中我们完全可以不予理会,这就是实用为王。而将之直接删除后,命令格式简单多了,也容易学习多了,这就是化繁为简!”
“是的,”郑老师点头表示赞同,然后突然问道:“如果有一天你有某些特殊要求,需要哪些选项怎么办?”
“如果某一天我们真的有特殊需求,可以再回过头来重新查看这些选项,选择某一个使用之。”木鸿飞顿了一个,思考了一会,有补充道:“那时我们对计算机的熟悉要远远超过现在,理解力绝对上了不止一个台阶,回头再学的速度毋庸置疑。这种学习方法,其实也是实用优先的表现!”
————————————————————————————
木鸿飞:“怎么样,现在大家明白简字真言了吧。以 CreateWindowEx 函数为例,当我们第一次亲密接触时的确很费解,而很多书籍为了权威性和全面性,会发大篇幅逐一解释每个参数,力图使读者清清楚楚明明白白真真切切,但就是这种解释,在更大程度上加深了大家的疑惑,使读者更加不清楚不明白不真切。其实我们不妨换个角度,这样学习:
第一步,很多书籍上都会有函数 CreateWindowEx 的调用实例,虽然戏法人人会变,但万变不离其宗,实际参数的调用大多如下所示:
    hwnd = CreateWindowEx (
           CS_HREDRAW | CS_VREDRAW,
           "APPWINDOWS",       
           "标题", 
           WS_OVERLAPPEDWINDOW,
           CW_USEDEFAULT,  
           CW_USEDEFAULT,   
           800,  
           600,       
           HWND_DESKTOP,   
           NULL,        
           hThisInstance,      
           NULL  
           );
很复杂吧,是不是觉得头痛,是不是没有看完就跳到这里来了。没关系,本书不是技术教程,将之列举出来只是为了告诉你:其实以上代码就可以直接运行,倘若你首次接触,那么不必理睬它,直接复制粘贴然后编译运行就行了,在相当长的一段时间内,以上代码可以满足你的全部要求!
第二步,总有一天你会有些小小的要求,比如改变窗口的大小,更改窗口的名称等等。这时由于你也编过不少 Windows 程序,也算是个圈内人,理解力与初学时相比不可同日而语,修改一两个参数不在话下。查查资料、或者猜测一下,不难知道‘ 800,600 ’处为窗口大小,‘标题’处为窗口名称。可以放心大胆的修改,而不必如初学时战战兢兢了。
第三步,随着程序的累积和深入,也许你会有更高的要求。此时你早已是编程老手,完全具备理解全部参数的能力,于是重新打开当初跳过的书页,一字一句的理解每个参数的解释,水到渠成而已。
初学时抛弃复杂的内容,学习简单的内容,这就是化繁为简。而先抛弃生僻的内容,学习常见的内容,待以后根据需要逐步学习其他内容,这就是实用优先。”
学生甲:“这么一解释,我算是明白了。”
木鸿飞(洋洋自得):“那当然,火车不是推的,牛皮不是吹的,我的学习计算机八字真言不是盖的,你们大家都要记住啊!”
学生甲:“好的。不过木老师,这八字真言到底是什么,貌似除了一个简字,其他的一个都没有提及。”
木鸿飞(汗):“难道没有提及吗,记得以前有说过啊!”
学生甲:“从第一章:一石激起千层浪到本章,我对着毛主席发誓,没有!”
木鸿飞(爆汗):“好像真的没有耶。”
学生甲:“到底是什么,不要藏私嘛,说出来 share 一下。”
木鸿飞(阿富汗):“其实很简单,就是:快慢有序,简繁相随,纵横交错,知行合一。”
学生甲:“偶买累滴嘎嘎,快慢有序,简繁相随,纵横交错,知行合一,明明是十六个字嘛,怎么会是八字真言呢!”
木鸿飞(成吉思汗):囧。



 本文转自 zhuyunxiang 51CTO博客,原文链接:http://blog.51cto.com/zhuyunxiang/463280,如需转载请自行联系原作者







相关文章
|
存储 机器学习/深度学习 人工智能
一文总结那些年我们追过的计算机发展史
一文总结那些年我们追过的计算机发展史
255 0
一文总结那些年我们追过的计算机发展史
|
算法 前端开发 JavaScript
聊一聊我的计算机学习经历吧(一)
hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干货也非常多,准备好了吗?那么我们开始吧。
聊一聊我的计算机学习经历吧(一)
|
IDE 前端开发 JavaScript
聊一聊我的计算机学习经历吧(四)
hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干货也非常多,准备好了吗?那么我们开始吧。
|
算法 前端开发 Java
聊一聊我的计算机学习经历吧(二)
hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干货也非常多,准备好了吗?那么我们开始吧。
|
移动开发 前端开发 JavaScript
聊一聊我的计算机学习经历吧(三)
hey guys ,我是 cxuan,这一篇文章我就要和你聊聊编程如何学习,这一篇文章涉及的内容简直太多了,我将从入门开始,一步一步到如何提高,然后到一些学习的相关问题,还有一些计算机相关的术语等,干货也非常多,准备好了吗?那么我们开始吧。