龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > asp.net编程 >

学习.NET架构设计系列:Hello world的时代(2)

时间:2009-12-21 11:47来源:未知 作者:admin 点击:
分享到:
中学时期应该是一个人的思维最灵活的时期,以后的时期经验逐渐的丰富,但是学习新知识的能力实际上是在走下坡路。除非特地去培养,很多方面的知识

中学时期应该是一个人的思维最灵活的时期,以后的时期经验逐渐的丰富,但是学习新知识的能力实际上是在走下坡路。除非特地去培养,很多方面的知识也就停留在中学的水平。比如对于一个搞计算机的专业人员来说,他的历史、语文、物理、化学知识很可能就永远的停留在中学时期的水平。那段时间我疯狂的写着程序,最大的愿望就是家里能有一台电脑,安装着GWBASIC的编译器,我可以每天把自己关在屋子里,用GWBASIC写出超级玛丽,或者坦克大战一样的游戏。

GWBASIC使用一种非常原始的方式进行流程控制――GOTO。他也有函数的概念,但是实际上也是GOTO到某段代码上去(使用GOSUB指令),执行完了再GOTO回来(使用RETURN指令)。按照当时流行的观念,程序中使用GOTO并无不妥,这是实现条件循环的一种很正常的方式。例如下面这段代码:

50 LET I = 0
60 I = I + 2
70 PRINT I
80 IF I < 100 THEN GOTO 60

下面是我当时写出的一段代码,这是一个猜数字的游戏,他就是在GOTO来GOTO去的兜圈子,像是进入了一个迷宫。还好这个迷宫的规模不大,很容易就能找出他在干什么。这段代码之所以能够保存到现在,是因为他没有象其他代码一样保存在软盘里,而是随手记录在了书的空白处。

10 PRINT "Guess a number"
20 INPUT A
30 IF A > 5 THEN GOTO 60
40 IF A < 5 THEN GOTO 80
50 IF A = 5 THEN GOTO 100
60 PRINT "Too big"
70 GOTO 20
80 PRINT "Too small"
90 GOTO 20
100 PRINT "Right"
110 END

这样的编程方式就是:面条式代码。这是一种最简单的编码方式,不需要长时间的学习或太多的经验就可以立即掌握。但是他能解决的问题也是有限的,也就只能写一个猜数字的小游戏,或者画出一个Y=A*SIN(X)+B的函数曲线图。如果要真的用他来写一个超级玛丽,那将是很很很很很困难的。

后来进入了结构化编程的时代,GOTO成了破坏程序结构化的罪人,渐渐的被大家抛弃,现在只在的很少的地方仍然发挥着作用(比如在VB或者C语言中进行异常处理)。但是这种GOTO式的编程方法影响了我很久。直到我大学时期,学习FORTRAN77的时候,仍然在采用这种编程方式。这样的方式很简单,不用想的太多就能解决问题,也使我小富即安,懒得去研究别的编程方式。

结构化编程方式是面条式代码的一种改良。他首先把需要处理的问题划分成若干个模块,然后再把每个模块划分成更小的模块,这样一步步细化下去,直到每个模块的功能可以用一个程序语句实现,这就完成了程序的设计。在划分模块的时候,结构化编程的原则是:一个模块只能有一个入口和一个出口,并在要按照基本结构完成模块之间的连接。这就意味着GOTO只能与IF配合使用,以构成分支和循环的结构。分支和循环结构在任何一种编程语言中都有更简单明确的关键字来实现,GOTO自然就失去了存在的意义。


精彩图集

赞助商链接