开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

别人骗我编程序——计算机达人成长之路(28)

简介:
+关注继续查看

9C语言光线成像(三)上当受骗

终于开始C语言成像程序设计了,不过,木鸿飞那贫乏到白痴的图形学原理,无限接近于零的C语言知识,笨拙到找抽的指法操作,早已将他出卖,注定了本次实验将是一个无言的结局。不信?请看镜头:

镜头一:

夏日炎炎,木鸿飞待在蒸笼式的房子中,如同洗过桑拿一般,汗珠百米冲刺一般纷纷落下。不过这更加激发了编程的热情。只见他打开书本放在键盘旁边,为了防止书页自行翻动又将两支笔夹在左右两面上,然后分别将左、右四只手指搭在“asdf”和“jkl;”键上,再偏着头,目光盯着书本。

一切准备就绪,木鸿飞深吸一口气,开始正式输入。他目光如炬,紧紧的盯着书上每一个字符,手指突然发力,宛如一个个精灵,在键盘上优美地舞蹈,顿时一曲和谐的“键盘打击乐”从房间中传出。

很快一段代码输入完毕,木鸿飞兴奋地摇头晃脑,真是意犹未尽啊。本次输入,木鸿飞严格按照指法要求,目光自始至终只盯着书本,哪怕是旁光也没有扫过键盘和显示器,这难道就是传说中的打字经典教程吗,木鸿飞不由意淫起来,同时发出一串串得意地笑声。

该是看一看成果的时候了,为了保证能够清晰的观察到优异的成绩,木鸿飞特意做了眼保健操,然后才将目光转向显示器。哼哼,……,奇怪了,怎么屏幕上的内容与书本上严重的不一致,貌似正确率不足30%

“奇怪了,怎么错了这么多?难道是手指击打时的位移不对?或者手指摆放的基本位置错位了?”木鸿飞自言自语到。

“错误的原因我不清楚,但是有一点是确定的!”不知什么时候哥哥出现在木鸿飞后面。

“哦,哪一点?”木鸿飞连忙问道。

哥哥指向屏幕,说道:“你需要重新输入!”

镜头二:

又是一个挥汉如雨的环境,这一次木鸿飞没有飞快的舞动手指,而是老老实实一字一顿地输入,在每击打一个字符前,都仔细思索一番。比如代码“if”,“i键在k键上面,右手中指。f是基本键,左手食指。”按键后,为了保证正确性,需要看看屏幕,比对一番,完全无误才进入下一行。如是虽然速度慢下很多,但至少准确率上去了。

木鸿飞一边输入,一边哼起了歌。

“为什么这么开心。”哥哥问道。

“我发现这几段代码在内容上相差不多,只有几个字母或者数字略有不同,前面已经输入过一次了,所以后面再输入就是轻车熟路,速度明显要快一些。”打字速度提升,木鸿飞自然高兴。

“我看看,”哥哥拿起书本仔细端详,又看了看木鸿飞兴奋的脸,最后无不惋惜的说道:“其实还有办法让你输入的更快。”

“我知道,是不是提高打字速度,这个需要慢慢练习。”木鸿飞主动承认指法不足。

“有一种速成的方法,……”哥哥语不惊人死不休,“就是拷贝和粘贴。”哥哥将光标移动到某一行上,同时按下CTRL和向下方向键,“这叫选定。”光标逐渐下移,它扫过的屏幕字体纷纷变色,“选定完毕后按下CTRL+INSERT键,就是拷贝这一段内容。然后将光标移动到要复制的地方,按下SHIFT+INSERT键,复制就完成了。”哥哥依法将代码复制三次,然后把光标移动到代码相异的位置,简单地修改了数字或变量名称。木鸿飞发费数十分钟才输入的代码被哥哥一分钟不到搞定了,直看得木鸿飞目瞪口呆。

“在计算机编程中,偷懒不是问题,”哥哥最后总结道,“问题是要找准偷懒的位置。只有想偷懒、懂偷懒并且偷得有水平、懒得有艺术的人才可以成为计算机编程达人!”

镜头三:

木鸿飞正在一边看代码一边输入,然后又回过头复核一遍,如果发现错误,则移动光标到错误位置修改代码。

经过核对,上两行末输错了两个字符,木鸿飞连按两次“上方向键”,再不屈不挠的连续按下“右方向键”,终于到达错误地点进行修改。下一个错误发生在上面一行行首,木鸿飞只有不厌其烦的按下“左方向键”,以便将光标移动到行首。

“如果有鼠标就好了,鼠标一点就光标就过去了,哪用这样一个键一个键的按。”在无穷次的击打方向键后,木鸿飞终于说出了心声。

“我来教你一招。”不知什么时候,哥哥又出现在木鸿飞身后,只见他在键盘上轻轻一按,光标马上移到了行首,又轻轻一按,光标又立刻出现在行尾,“其实真正的高手输入代码时,不用鼠标还快些。你看,键盘上有很多快捷键,比如HOME键可以将光标移动到行首,END键则将光标移动到行尾,F3键则可以查询,……”。

————————————————————————

木鸿飞的打字历程就如同在风雨飘摇中过铁索桥,除了小心翼翼还是小心翼翼。不过,天见可怜,终于4页代码输入完毕。木鸿飞大声的“哦耶”一声,算是发泄了心里的晦气,然后连忙通知哥哥。

“哥哥,这四页代码已经输完了,下面该怎么办?”木鸿飞急切的问道。

“哦,让我来看看。”哥哥放下手中的教案,走了过来。木鸿飞早已心急如焚,所以哥哥不紧不慢的动作在木鸿飞眼里就如同慢羊羊一般。“很好,很好,不错不错。但是还不能运行!”

 “为什么?”木鸿飞的心里苦啊,就如同农民伯伯辛辛苦苦种了一年的地,到了秋天却长不出庄稼来一般。

“因为你还需要再输入一个程序,合起来才可以运行。”哥哥不紧不慢的回答。

“哦。”木鸿飞轻叹了一声,然后带有侥幸地问道,“还需要输入什么页程序?”

“不多不多,”哥哥把书翻到某一页,说:“仅仅四页而已。”

“四页就四页吧。”木鸿飞心里盘算了一下,坦然地接受。

…………

木鸿飞继续在风雨飘摇中过铁索桥,时间滴答的过去,完工的时刻终于到来了。

 “哥哥,这四页代码又输完了,下面该怎么办?”木鸿飞说完,皱起了眉头,“奇怪,为什么要用又呢?”

“哦,让我来看看。”哥哥放下手中的教案,慢羊羊一般走了过来。“很好,很好,不错不错。但是还不能运行!”

“为什么?”

“因为你还需要再输入一个程序,合起来才可以运行。”哥哥仍然不紧不慢的回答。

“哦。”木鸿飞叹了一声,然后忐忑不安地问道,“这次需要输入多少页程序?”

“不多不多,” 哥哥把书翻到某一页,说,“仅仅十六页而已。”

“十六页?还仅仅?为什么刚开始时你不告诉我。”木鸿飞弱弱地牢骚了一句。

“呵呵。其实你已经编了八页了,不在乎再编十六页吗。当然你也可以放弃,不过以前编的八页就浪费掉了。”哥哥的嘴脸活脱脱像引诱蓝精灵犯罪的格格巫。

“早点告诉你,你就不会上当了。”哥哥离开时,自言自语的说了一句。

…………

也许编程有太多的不如意,但是你输入代码的工作还得继续,于是木鸿飞面朝屏幕背朝墙,一心一意敲键盘。

许久,木鸿飞终于有气无力地问道:“哥哥,这十六页代码终于输完了,下面该怎么办?不是又要输入十六页吧?”

“哦,让我来看看。”慢羊羊再次象征性地翻动代码,“很好,很好,不错不错,……

“但是不能运行。” 木鸿飞和哥哥同时说道。

“我就知道有鬼,说吧这次又需要输入多少页程序。”木鸿飞单刀直入,直截了当的问道。

“不多不多,” 哥哥把书翻到某一页。

“是不是三十二页?”木鸿飞做好了最坏的打算。

“你还想输三十二页?”哥哥故作惊讶道,“不过可惜,真的没有了。这次还需要输入两页,你看每行代码都特别的短,很容易输入的。”

“到底还有多少页代码,一起冲我来吧,我一次性编完。”木鸿飞一本正经的说:“可一可二不可三,但是本章已经有三段文字重复了。读者的忍耐是有限的,如果再来一段重复文字,大家会认为我通过复制粘贴的方式骗取稿费,会降低本书的好评度!”

“就剩下两页,编完真的没有了。”哥哥斩钉截铁的回答,想了想又加上一句:“确定一定以及肯定。”

——————————————————

多年之后,当木鸿飞重新拿起这本书时,他很清楚的明白:为了避免重复开发,大家都会自己设计一套编程库,封装很多常见的应用,以后在主文件中直接调用这些库函数即可。木鸿飞第一次输入的四页代码是主文件,其后输入的都是库文件。为了防止木鸿飞临阵脱逃,哥哥故意温水煮青蛙,每次只要求输入部分代码,多次叠加后才全部完工。

木鸿飞就在温水中艰难地完成了所有的代码,但命运之神似乎休假去了,对他的打击才刚刚开始。

按照哥哥的指导,木鸿飞开始编译程序。他按下F9键,经过短暂的等待后,系统单独产生了一个编译错误和警告信息窗口,这可是个好东东,依照提示的内容可以修改程序,虽然全是英文,不过如此简单的单词应该难不住木鸿飞。

“在‘(’处有一个错误,什么错误?”木鸿飞在屏幕和书本上玩起了“大家来找茬”游戏,只见他一只手将书本举在屏幕边,另一只手在代码行上缓缓地划过,一个字母一个字母的比对,大约五分钟过去后,“好像这里少了一个右括号。”补上后在编译,此行错误提示终于消失。然后又进入下一个找茬游戏。

茬不是那么好找的,还没找几个,木鸿飞就已经两眼冒金星,揉了揉眼睛,做了n次眼保健操,还是大白天看到了漫天星星。

“到底有多少个错误提示?”找茬过程中,突然一个想法在脑海里油然而生,于是他在编译错误提示窗口中向下移动光标,直到窗口的底部,上面赫然提示:“108个错误”,心里稍稍安定,108条好汉,虽然比较多,但貌似耐心点还是可以解决的,只是奇怪,最后一个错误不在程序末,而在代码的10%行处,另外的90%行代码没有在编译错误提示框中提及过,难道那些代码完全正确,没有错误?肯定是这样的,一定是这样的,木鸿飞心中窃喜,然后再朝下看去,一行提示跃入眼帘:“每次只显示108处错误,还有更多的错误提示没有列出。”木鸿飞差点当场晕倒过去。

屋漏偏逢连夜雨,行船又遇打头风,“更多错误”的风波还没有结束,木鸿飞又遇上了一个难题:有一行代码,编译提示有什么东西没有定义,但是经过无数次的“找茬”,输入的代码完完全全与书本上的一模一样,木鸿飞只好请教哥哥。

哥哥似乎早已料到木鸿飞编译的困惑,直截了当的提出木鸿飞在不懂C语言和图形学的情况下,即使照抄程序也不能成功。

“不懂C语言,就只能逐个比对的方式修改程序,但是这种方法既费神又费时,成功比对一个错误的平均时间大约是两分钟,如此多的错误要猴年马月才可以比对完?知道这个文件中有多少个错误吗?绝对不止108个,后面还有好多错误信息都没有列出了,看架势至少加个零,仅仅一个文件就如此多错误,全部程序只会更多,等你比对完全部文件,黄花菜都凉了。”

“相反如果懂C语言的话很快就可以发现错误。这里提示缺少分号,其实C语言要求每行代码以‘;’结束,了解了这一点就没有必要找茬本,直接在行末加上分号就可以了,敲,多块啊!”

“退一万步说,即使可以一一找茬成功,也不见得可以成功运行程序。因为书上的内容可能是错误的,比如这一行,这个变量名称显然是错误的,估计作者打字是输入错位了。不懂C语言,只是照抄程序,怎么判断排版错误?”

“还有一种可能,就是作者的程序设计上存在逻辑错误,虽然这种情况比较少,但毕竟可能发生,这时即使程序编译通过,也可能在运行时报错,没有相关知识,到时根本不能处理。”

“所以你想照抄一个程序的想法行不通!”最终,木鸿飞的企图如肥皂泡般无情地破碎,留下的只有失望和惋惜。

“赶快放弃照抄程序的行动,认真学习基础,相信有一天你会卷土重来的,那时候你在把设计好的程序秀给大家看,不更好吗。”哥哥一语惊破梦中人,“不要觉得这几天辛辛苦苦的输入可惜,至少你练习了指法,难道没有发现你的打字速度提高了吗?”

 

 

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




版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
python+soket实现UDP协议的客户/服务端中文聊天程序
没什么特别的东西,网上烂大街的C/S框架。(基于windows 7 + python 3.4)   为了实现中文聊天,我加入了一点修改: msg.encode('utf-8') # msg 为输入(且将要发送出)的信息 data.decode('utf-8') # data 为接收的信息 这样做的原因是 sendto 函数只能发送ASCII字符,不支持发送中文(在 python3 中,中文默认是unicode编码)。
1250 0
不需要计算机的程序员
译文链接:不需要计算机的程序员
474 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载