发信人: riffle()
整理人: wenbobo(2002-12-24 09:19:54), 站内信件
|
几年前,我是 PASCAL 的忠实支持者,对 PASCAL 可谓恩宠有加。
PASCAL 以其规范的语法和严谨的编程风格一直使我自我感觉十分良
好。我想,既然所有C能做到的PASCAL同样能做到,而且做得同样好,
那我为什么要用C呢?
这种想法和做法我一直坚持了五年,直到后来一位同事说:“大
家都用C,就你用PASCAL,就算你水平再高,难道你不觉得寂寞?”这
句话对我触动很大。其实寂寞不寂寞倒在其次,关键是没有了交流,
水平又如何提高呢?一个人闭门造车并不一定总是能造出好车的。
于是我决定改用C,不为别的,只为能和朋友们,同事们多交流。
在学校的时候当然是学过C的,只是一直喜欢上了PASCAL,便冷落了C。
重新深入C世界,才发现,原来我一直没有认识到她居然是那么的好!
不断地深入了解和熟悉C以后,再回过头来看PASCAL,对两者进行
一番比较,我终于明白为什么PASCAL不如C流行了,虽然我一向认为大
家都说好,不一定就真的好。
具体的说,我觉得PASCAL和C相比有以下地方令人生厌:
一、笨拙的for语句
PASCAL 的for语句实在是太笨了,用起来碍手碍脚的,很不顺
畅。循环变量的控制方法太简单,想对循环变量每次加个1以上的数的
话,对不起,用while吧。
二、无聊的repeat
有了while和for语句就够了,干吗来个repeat呢?也许有的人会
说,你不喜欢,不用就是,但是代码毕竟不是一个人在写,就象在软件
设计中多一个逻辑分支就多一个故障点一样,有repeat语句,就一定会
有人用,于是代码的维护就多了这么一个怪胎了,再说repeat和while
及for相比,毫无优点可言。
三、恶心的VAR语法
VAR语法真的是太恶心了,不象C,在函数体内,想在何处声明变
量就在何处声明。在写代码过程中,如果我想声明一个临时的变量,就
得跑到Begin前面去VAR(挖)一把(哇,真的好恶心)。这也是导致for语句
笨拙的原因之一。
四、痛苦的I/O检查
以前在DOS下用PASCAL时,有个非常痛苦的事情就是文件操作了,
由于PASCAL采用I/O检查机制,不象C,每个I/O函数都通过返回一个具体
的值来反映本次操作是否成功。因此在PASCAL中,一个较好的方法是在
函数前面进行编译设置,要求编译器不做I/O检查,末了再取消该设置,
否则的话,如果文件I/O失败,就会出现运行错误。但是取消了I/O检查,
也并不是就此万事大吉了,每次文件I/O操作,都得访问一下IOResult
全程变量,否则,如果出错,以后所有的文件I/O操作都被忽略。于是就
出现了这样一个问题,本来用C几句话就可以解决的问题,在PASCAL中得
罗罗嗦嗦地使用临时变量=IOResult;这样的语句去去掉由于可能的文件
I/O操作失败而导致的以后的不正常操作。
很庆幸的是,PASCAL语言潜伏很久以后,突然以全新的面目出现了,
那就是DELPHI,原以为I/O恶梦不再了,很可惜,DELPHI并没有纠正这个毛
病,只是换了一种形式出现了,那就是try语句块,这同样是个恶梦,而且
更胜从前,因为你得在任何可能出现问题的地方加上try语句块,否则的话,
说不定程序什么时候弹出一个英文的对话框,说“出错了”,专业性大打折
扣,于是我只好不停地写try,try,try……。你看,C多好,都是函数,想
检查错误,if一下就可以了,简单明了。
五、愚蠢的过程与函数
过程也好,函数也好,无非就是一次调用罢了,非得要分个什么过
程和函数,真的好愚蠢。procedure,function写的真是累。C多好,想返
回一个值,声明类型就行了,不想返回,加个void罗。
当然DELPHI其实是很不错的,所有可视化开发工具里,我觉得用DELPHI
的开发小程序的开发速度(不是执行速度,PASCAL使用P代码编译,执行速度
是不如C的)一定是最快的。做小程序开发时,我也常常用它。
但是PASCAL语法,真的令人好伤心……
-- ※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.104.37.59]
|
|