发信人: 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]
  | 
 
 
 |