HAPPY电脑编程族 目录 1·CFAN的宗教 2·计算机的发展 3·个人电脑的诞生 4·初探神奇编程世界 5·步入奇妙数字世界 6·编程语言的选择 7·编程书籍的选购 8·与编程世界同步 9·后记 正文: 1、CFAN的宗教 曾几何时,无数次于梦中与我的电脑相会。梦中的电脑,是那样的冰雪聪明, 惹人怜爱,我用它描绘出一篇篇壮丽的“诗篇”,谱写出一曲曲学习之歌。那时候 对电脑的虔诚,便是我的宗教。和志同道合的穷朋友们一起聊起电脑,言必INTEL微 软,一句一个IT、编程……俨然一副专业精深人士大家风范。可以毫无顾忌的说着 令洋人呕吐的英文术语而自以为得意。脸上总有一股珠穆朗玛不是我造的,但我把 它踩在脚下的那副令“业内人士”须得仰视,外行人士反感的自大神态。那时节的 我,心灵与电脑大概已经合一了,我甚至怀疑我是否是一个神秘莫测的电脑精灵在 人间的映像。 终于有了自己的电脑。欣喜的我再也不用于梦中和它七夕相会。但令人奇怪的 是,一种说不清的懒惰渐渐腐蚀了我。在我曾经朝思暮想的电脑上,我却仅仅用它 来玩玩游戏,装装软件,上上网,打打字。每当潜意识提醒自己快点学习电脑编程 ——它不是你一直期待许久的吗——我却像古文里那个书非借不能读也的书生一样, 暗想:反正电脑是我的,什么时候学都可以。时间,不因为我的荒废而停止脚步, 当这台电脑拖着沉重的步伐再也跟不上WIN2000匆匆的脚步,我才突然意识到:我失 去了多么宝贵的东西——一生中再也不能重复的时间。我叹息着,而在这声声叹息 中,我失去了叹息的时间。 相信许多FANS大概都有和我一样的情形,买机子的时候自己对自己“敦敦教导”, 告诫自己一定要好学学电脑,但是机子到手,就忘到九宵云外去了,成天价游戏人 间,上网聊天,乐此不返。偶尔想起,还会说:“反正机子是我的,明天再学也不 迟。”电脑不是从天上掉下来的,是用血汗银子换来的。而消逝的时间,更是用再 多的银子也换不回来的。我期望着这些“浪子”早日觉醒。 而对很多仅仅是因为工作而接触电脑的朋友,可能压根谈不上对电脑的喜欢。 对他们,没有共同语言,我也无从说起。然而我相信每个人生来具有好奇之心,人 类正是用他天生的好奇心和伟大的智慧创造了今日的世界,也将创造明日更精彩的 世界。这些朋友经常接触电脑,难道从没有一刻曾在心里萌发出一个问题:我所使 用的计算机程序,它们到底是怎么造出来的?猩猩无数次用木箱做为垫脚石去拿挂 在半空中的香蕉,然而它却没有一次疑问木箱是怎么造出来的,或是人为什么安排 木箱给我。我们,自然的主人,睁开我们神奇的人类之眼,疑问着动物从不产生的 疑问。 电脑编程,说句老实话,并不怎么难。无数人觉得困难是因为他们压根儿从没 正眼看过它,没有下点功夫去研究它。他们都说,我忙呀。以忙为借口,你甚至不 能了解最简单的问题。而你下了功夫,再难的问题你都可以登堂入室。或并肩和专 家研究鲁迅、红楼梦,或和艺术家探讨凡高的内心世界…… 很多FANS可能会说,我并没有浪费时间,你看,我DIY水平很高,我装WINDOWS 技术很好……然而我是一个罢黜百家,独尊编程的人。我建议FANS来编程。理由很 简单。我想打这样的譬喻。有两个专家,一个专家可以发明电视机,另一个专家, 可以组装图纸上的电视机。那么,你认为,这两个专家,谁最有“含金量”呢?是 的,我之所以罢黜百家,是因为你DIY水平再高,你装软件水平再高,你也不具有什 么技术含量。我们知道全国有计算机等级考试,有程序员水平考试,却没有什么吃 鸡蛋水平考试。 有一部分FANS,出于对美术的喜爱,擅长使用各式电脑美术软件进行设计,包 括二维的PHOTOSHOP,三维的3DS MAX,MAYA等等。这很好,比起那些DIY“专家”, 装机“专家”,强了不知多少倍,然而我仍然感到有点遗憾,如果在你还有精力的 条件下,为什么不尝试一下编程呢?相信你明白,PHOTOSHOP、3DS MAX、MAYA,它 们都是由程序员编出来的。而计算机编程,不过都是从最简单的形如C=A+B发展起来 的(当然这样说是为了给大家起个形象概述)。相信这些用户也明白,有时候需要 用这些软件做出某种特效却无法实现的时候,高级用户会自己编程编写相应软件插 件,以完成自己的特效。这方面的例子就不列举了。 那么,有FANS会问,既然编程创造了一切,你就推荐我们学编程,那么为什么 不推荐我们学计算机硬件——即学如何造计算机呢?恩,我要说明一下。选择向大 家推荐编程的理由很简单:它很有实际意义。而且它是每个人(从小学就可以开始) 都可以接受的。向后发展,它的前途无量。而关于学如何造计算机,我只说明一点, 世界上只有美国能造个人电脑。你明白了吗?一个相关例子是:我国的计算机专业 的硬件课本是和8086CPU配套的,而现在的K7、P4,换算成X86,大概是80886、809 86吧。计算机硬件知识学习所需起点知识太高,一般人无法接受。且需要含金量极 高的设备,大概只有美国的高级大学才有配套设备吧。而编程只需要一台个人电脑 就可以了,一般而言,CFAN都有具有电脑的客观条件。在编程上,我们和美国最聪 明的电脑天才是站在同一起跑线上的,因为我们和他看的都是同一本技术书籍。在 此插一个小故事:有专家曾就中国最适宜发展什么项目回答,建议数学。因为数学 只要笔和纸就成。听到这个故事,我只有苦笑。幸而今天的中国人没这么傻不拉呆 地听专家的话,所以哪怕借钱,都要研究生物基因工程。 坚定了学习编程的信念之后,让我们初探神奇编程殿堂。 2·计算机的发展 在开始我们的初探神奇编程之旅前,让我们穿梭在历史的时空洪流中,查看计 算机发展的源头。 毫无疑问,人类最早使用的全天然生物型计算机便是我们的十指。原始人学会 直立行走之后,十指便被“打造”成“计算机”,随之而来的副产品,是深深影响 我们生活直到现在还在使用的十进制。 我们伟大的中国祖先除了贡献出自己的四大发明,还为我们带来了世界上第一 台机械计算机——算盘,正如中国古代的火箭对现代火箭的启迪,现代计算机忘记 不了自己的祖先。如果未来有一天,我们的计算机拥有了自己真正的智能,他们也 许会吟出这样的抒情诗:“人类在蒙昧中/我们的祖先/球体和棍的组合/生活在木质 的家园/为人类/贡献自己的光和热/完美的组合/在人类灵巧的手指下/祖先唱出自然 之神的赞歌/和人类一起成长/直到/我们的诞生……” 欧洲人在智力上并不输于中国人,在几乎不了解算盘的情况下,公元1623年, 图根大学教授设计并建造了一台自动实现加减乘除四种算术运算的计算机,它是由 机械零件构成的,想一想一大堆的齿轮、链条之类的组合,你就会察觉到它和今天 的计算机的差别。沿着机械式计算机发展的轨迹,它越来越接近现代电子计算机的 原理。正如原始人渐渐甩掉了自己身上的长毛,终于有一天,原始人会成为现代人。 在机械式计算机设计的浪潮中,其中一位机械式计算机设计的先驱,他超越了 他的时代,他在图纸上的设计,使得人们怀疑他提早降临在那个时代。因为他的设 计,在没有电的时代是件废物,然而电的时代人们知道他的价值。(抱歉我把他的 名字忘记了)我想这位天才的在天之灵大概永不能安息。也许有一天我去那个神秘 的世界之时,我会告诉他,人们了解他工作的价值,那他或许可以瞑目。 1946年,汹涌澎湃的战争浪潮催化了计算机的诞生。我们不无遗憾的发现,电 子计算机的母亲是战争。第一台计算机诞生于美国。 匈牙利计算机科学家冯·诺曼深深的影响了现代计算机。他对计算机的贡献在 于,他使计算机能够存储自己的指令,今天,几乎所有的计算机都是冯·诺曼型计 算机。有了冯·诺曼型计算机,我们才能谈得上自动化。注意:今天的计算机并不 具备智能,它们仅仅是看上去象是有智能(而不是真正有智能),正如盲人也许能 够感觉阳光与灯光的区别,却无法真正“看”清它们的区别。 那么,什么时候人们才能研制出来真正具有智能的计算机呢?一想起这个话题, 就教人热血流动。多少年,人类一直孤单的成长,人类的伙伴,只有自己,会有这 么一天,人类创造出和自己一样却不是人的伙伴么? 我的答案是,应该会的。 正如我们刚才所说的,现代计算机并不具有智能,它们仅仅是看上去具有智能。 那么怎样才能使它们具有真正的智能呢?先让我们看看,在自然界,谁具有真正的 智能?是啊,在一秒钟内,你告诉我,是人类。要想使计算机具有真正智能(或者 说,要想使我们研制出真正具有智能的某物),我们必须了解人类的大脑的思维的 原理。在这里,再次把遗憾带给你,我们对于我们大脑真正的认识,远远低于对我 们大腿的认识。可以说,在这方面,我们的知识和0差不了多少。只有在真正了解人 类大脑思维的原理之后,那扇神奇大门才会向我们打开。我们才能实现包括研制真 正智能在内的许许多多过去人类所无法实现的梦想。青少年朋友,学习的重要性, 你们现在大概才真正了解。自然界的许多真正探索和贡献,来自于今天你们一节课 一节课的积累。不要忘记,爱因斯坦、牛顿、比尔盖茨,他们都从1+1=2学起。 3·个人电脑的诞生 当世界首富比尔盖茨在湖滨中学上学的时候,他接触到影响他一生的转折点: 计算机。那时候,计算机又差又奢侈,而且,盖茨所用的计算机,几乎不是一台计 算机,仅仅是一台计算机的终端。然而这终端的代价是昂贵的,它不是我们现在所 想象在机房以3、4元/小时的计量单位,它的(上机费)计量单位是千美圆,或万美 圆。盖茨和他的计算机战友们应该感谢湖滨中学的家长们和校方,或许他们敏锐的 嗅觉察觉了在美国中小学几乎不曾登陆的这个庞然大物能够改变这个世界的神奇力 量,他们支付了上机费。盖茨和他的朋友们,于是用上了比今天计算机贵得多的代 价、差得多的性能,学会了编程(象我开始讲的那样,A=0代表我们编程之旅的开始)。 这个时候,伟大的《时代》杂志封面人物:个人电脑还没有被发明出来。 今天,鼎鼎大名的INTEL和MICROSOFT黄金组合,在他们发迹之前的时代,同美 国大街四处矗立的邮筒,或是垃圾箱,没有什么区别——一样的默默无名。然而, 伟大的个人电脑的出现,使得他们顺势脱颖而出,在今天的计算机界,如果你不知 道微软和INTEL,就如一个不知道Coca Cola的地球人,人们也许会将你当成外星派 来的间谍。个人电脑的父亲是IBM,或者我们可以说,INTEL和微软的父亲是IBM。 1971年末,还是小毛头的INTEL发明了微型CPU 4004,几乎没有什么人嗅到将改 变世界的味道。那时的人们,没有人意识到个人电脑的重要性,一些专家甚至认为, 这个世界,只要N台计算机就行了(N为一位数)。踌躇满志的IBM在70年代或80年代, 决定制造一个新玩具,他们把这种新玩具叫个人电脑Personal Computer,即微型计 算机。IBM不了解他们新玩具的重要性,以至于在今天的个人电脑市场,我们只知道 IBM硬盘。 IBM的新玩具IBM PC的CPU采用INTEL公司(一家不出名的小公司)产品,操作系 统采用比尔“领衔主演”的微软公司研制的MS DOS操作系统。比尔实在不是一个怎 么好的生产商,虽然IBM提出的条件相当苛刻,但是让我们看看,直到比尔带着它的 产品去交货,在开往IBM总部的飞机上,比尔还在他的编程之旅。 Intel的CPU+微软的MS DOS操作系统构成的个人电脑,绽放了巨大的能量。并且 到今天,它的能量还在释放着,只不过换成了Intel P4(可换AMD K7)+Microsoft W indows2000(可换LINUX)。现在我在给你写关于个人电脑的文章,就是极好的证明。 4·初探神奇编程世界 今天的个人电脑世界,被INTEL的CPU(当然他多了个著名竞争对手AMD,AMD今 生唯一的兴趣与爱好就是和INTEL唱对台戏,因此电脑世界才这么多姿多彩)和微软 的WINDOWS系列雄霸着(WINDOWS多了个竞争对手LINUX,不过现在看来LINUX象只小 蚂蚁,尽管WINDOWS这只大象左踩右踩费尽心机,却撼动不了小蚂蚁半根毫毛。也许 有一天LINUX会变成大象,而WINDOWS变成小蚂蚁——这正是微软天天夜里上演的精 彩噩梦之一)。关于WINDOWS,容后叙述。 究竟什么是程序呢?粗浅的说(其实要深奥也深奥不起来),即是计算机命令 (指令)的顺序集合。可以说,程序就是步骤。让我们看看一个初涉爱情火坑的小 伙子的“程序”。 程序名:深陷爱情火坑的小伙子 1、 遇见姑娘; 2、 爱上姑娘; 3、 为姑娘辗转反侧; 4、 追求姑娘; 5、 如果 追上姑娘 则 欢天喜地+步入婚姻殿堂 反之则 人生灰暗、世界无聊, 再返回第一步重新开始,当然要换一位新姑娘 6、 程序结束。 怎么样,很有意思吧,一个程序员的恋爱,可能就受这样的“程序”驱使。下 面来看一个比较“真正”的程序。我们给出两个数1和2,计算它们的和。那么,相 应的程序可能是如下的: A=1 B=2 C=A+B PRINT C 让我们用我们的自然语言来分析一下计算机程序的特点。上述程序由4条计算机 语句构成。计算机执行程序的顺序是从上至下依次执行,因此,本程序应该先执行 语句1,再执行语句2……直到最后一条语句。前3条语句都由形如X=Y的语句构成, 它们被称为赋值语句,=号不是等号,而是赋值号,它的真正意义为,将赋值号右面 的值赋给赋值号左面的变量。因此,赋值语句的执行顺序是自右至左的。语句1的含 义是将赋值号右边的1赋给左面的变量A,这样,语句1执行后,A的值即为1。 刚才我们把A、B、C称为变量,那么,什么是变量呢?顾名思义,变量是可以改 变的量。计算机使用变量来记录程序中所需的数据。变量的特性在于,没有赋初值 之前,它是“空”的,一旦赋值后,它就有了具体的值。如语句1,赋值之后,A的 值为1。由于变量具有可以赋值的特性,当一个变量赋值之后,还可以无限次地再对 它赋值,当然,每次赋新值之后,旧值就没了。这很象磁带,一卷磁带,录了新歌 后可以永远播放,但一旦再录新歌,那么老歌就没了。 好了,今天你已经学到计算机编程最重要的起步知识,变量和赋值语句初步架 构了神奇的编程世界。超过它们的伟大的特性不会再有两三条。它们依次是函数或 过程、数据结构、面向对象编程。这五大特性构成了今天的程序世界。你可以在其 后我将介绍的编程书籍中继续你的神奇编程之旅,只不过换了一个老师而已。记住 我说的话,计算机编程并不难。好了,在结束本小节之前,有人问,刚才那段程序 的最后一条语句是什么意思?Print是一条打印语句,意为在屏幕(或其他设备)上 输出值。最后,让我用自然语言复述一下刚才的真正的计算机程序,你来对照一下, 是否跟你理解的有误。 当执行A=1的时候,计算机把1的值赋给变量A,那么这时A的值即为1;当执行B =2时,计算机把2赋给B,这时变量B的值为2;当计算机执行C=A+B时,计算机先计算 赋值号右边的算式A+B的值,A+B的值为3,计算机在算出3时,把3赋给变量C,这时 C的值为3;当执行PRINT C时,计算机把C的值输出到屏幕上,那么,计算机屏幕上 将显示3。所有的程序语句执行完毕。程序结束。那么,这世界上的一个新程序员— —你——诞生了。 5·步入奇妙数字世界 实际上,我们刚才接触的计算机程序,是用专有的计算机语言完成的。这种计 算机语言,很象人类的自然语言,你看A=1,跟人们理解的自然语言几乎完全吻合, 是不是?我们把这种计算机语言称为高级语言。也许从没接触计算机编程的你会发 牢骚,这算什么高级语言,比我的中国话次甚。没有办法,我在开始就说过现代计 算机只是“看起来象是有智能”而已,它并不具有真正的智能。事实上,计算机根 本不懂A=1这句计算机语言。那么你可能会大叫,那计算机怎么会算出来1+2=3?当 我揭示出其中看起来神奇实际上却很简单的奥秘时,你会由衷地佩服我们聪明的计 算机科学家。 先用这句话开头:现代几乎所有的计算机只会做加法。这是计算机“了解”世 界的基础。你可能又要着急地问,那它怎么会做加减乘除?还有其他许许多多的神 奇功能?不要急,让我们开始一个新的计算机漫游之旅。 这要从二进制说起。日常生活中,人们一般使用十进制,如果使用二进制,那 么二进制的数和十进制的数存在着下列的关系: 二进制 十进制 --------------------- 0 0 1 1 10 2 11 3 100 4 101 5 110 6 111 7 1000 8 1001 9 1010 10 …… 我们可以看到,二进制的进位非常迅速。那么,为什么人们要在计算机中使用 繁琐的,不能被人们直观了解的二进制,而不使用根深蒂固、直观形象的十进制呢? 因为,在自然界中,表示二进制非常方便,例如“关”代表0,“开”代表1。我们 中国传统的“阴”、“阳”八卦概念,相信对计算机二进制的采用有启发意义。如 果在计算机中使用10进制,由于在自然界很难找到代表10种对应状态的物质,远没 有“开”、“关”这么“爽”,因此计算机使用二进制。 我们知道,我们的硬盘和内存是电脑的存储设备,不妨把它们想象成一个开关 组的集合,当计算机用它们存储信息的时候,它使用“加电”或“磁化”代表“开”, 即二进制中的数字1,使用“断电”或“非磁化”代表“关”,即二进制中的0。这 样,所有的信息就有了栖身之地。我们可以把所有的十进制或N进制数依相应的数学 公式转化为二进制数,这样所有的数字有了进入电脑的通行证。那么文字呢?让我 们先看英文字母。计算机科学家把所有的英文字母和一系列特殊字符编为ASCII码, 这样,相应的英文字母可以用数字来表示,如字母A的ASCII码为65,这样,英文字 母有了进入计算机的通行证;那么,汉字呢,同样的,我们把它进行数字编码,每 个汉字对应一个唯一的数字,这样,它也有了进入计算机的通行证;那么,计算机 是如何处理图画的呢?是的,它用的同样是数字编码的魔术,这样计算机也能处理 图画了,于是,声音,音乐,电影……等等,使用数字编码的魔术,什么都可以送 进计算机。这就是无所不能的计算机魔术:数字编码。使用它,计算机和现实生活 建立了沟通的桥梁。这也是为什么你经常能听到“数字世界”、“数字地球”之类 时髦词语的原因。 我们可以这样粗浅的理解现代计算机为:“一个开关组的集合。”“开关”们 用它们的开和关表述1和0。从而创造了今天的数字世界。想不通吧,“开关”竟然 有这么神奇的力量——错!真正具有神奇力量的,不是“开关”,而是我们人类的 计算机科学家。是他们赋予“开关”生命! 那为什么我刚才说计算机只懂得加法运算呢?这是因为计算机科学家使用补码 技术(这基于二进制 ),使得计算机内中所有的运算都被转化为加法,这也是为什 么聪明的电脑只会做加法的原因,限于篇幅,不再阐述其原理了。你可以通过减法 运算可以转化为加一个负数的加法运算来想象这种神奇的魔术。 计算机发展的初期,人们使用“机器语言”来编制程序,它们都是由一长串的 二进制数组成的,如01111011101110011111 011110111001,这里面的数,可能其中 之一代表一次加法操作,一个代表一个具体的数,那么,人们在这样的“机器语言” 面前头晕则是件不难理解的事情。当然,我们要说明的是,计算机唯一能理解的计 算机语言就是机器语言,除此之外,它不懂别的计算机语言。人们后来发明了比机 器语言“高级”一点的“低级语言”:汇编语言。汇编语言可以说是计算机的母语。 它由一串串诸如Add助记符和数据构成,每一条汇编语言,都可以直接翻译成相应的 机器语言。这个负责把汇编语言翻译成机器语言的“翻译”,我们把它叫编译程序。 由于汇编语言还是比较“低级”,现代人们不怎么学它(计算机专业的还是要学的, 并且相当重视)。 “高级语言”的诞生是一条革命,象开头我们举例的程序便是用高级语言里的 BASIC语言编制的。高级语言看起来已经相当象人类的自然语言(与我一同经历了计 算机语言发展历程,相信你不会再反对我这句话)。当然,计算机并不懂高级语言, 同样的,由编译程序负责翻译成机器语言,这不用我们操心。 6·计算机编程语言的选择 6·1·概述 现代个人电脑的操作系统被微软的WINDOWS雄霸着,因此现代人们选择的计算机 (高级)语言大都基于WINDOWS。在WINDOWS下常用的编程语言有: Visual Basic、 DELPHI、Visual C++,Borland C++Builder,Visual J++,Borland J Builder。让我 绘制一张表格来揭示它们之间的关系。 微软 Inprise(原Borland) ---------------------------------------------------------- Visual C++ C ++Builder Visual Java J Builder Visual Basic Delphi 看完这张表,你会发现,正如INTEL在CPU制造领域存在着强硬的竞争对手AMD一 样,微软在计算机编程语言的对手是INPRISE(原Borland)。这2对冤家无时不刻地 做着把对手大卸八块生吞活剥的美梦,却至今无恙的生活在彼此的梦魇之中,时有 小胜小负。 6·2·Visual Basic 先看VISUAL BASIC。VISUAL BASIC是微软的VISUAL STUDIO可视化工作室的成员。 VISUAL BASIC是基于(DOS下的)BASIC发展起来的WINDOWS下事件驱动化程序语言。 这句话说起来很拗口,你只需知道,如果DOS下的BASIC 是一个裸体野人,那么WIN DOWS下的VISUAL BASIC 则是裹满裘皮大衣的文明人。 那么,到底什么是BASIC呢?BASIC英文原意是指Beginners All-purpose Symb olit Code,意为初学者使用的通用目的符号指令代码。产生于60年代中期,由美 国的凯梅尼和库尔茨首先提出。Visual Basic在原有BASIC语言的基础上进一步发展, 至今包含了数百条语句、函数及关键词,其中很多和WINDOWS GUI(图形用户接口)有 直接关系。专业人员可以用Visual Basic实现其他任何WINDOWS编程语言的功能,而 初学者只要掌握几个关键词就可以建立实用的应用程序(据微软Visual Basic联机 文档。好象有点夸大)。VISUAL BASIC的最新版本是微软于1998年推出的VISUAL B ASIC 6.0,它包含于微软的VISUAL STUDIO 6.0编程系列中。(VISUAL STUDIO 6包 含VB6、VC6、VF6、VJ6等系列编程语言,价值约几千美圆。)它的新版本Visual B asic7可能于2001或2002发布,这真是一件令人期待的大事。(注意,在Visual Ba sic爱好者看来,并不亚于球迷对世界杯的期盼)谁知道最新的Visual Basic7会带 来什么崭新的编程理念呢!人类一次次革新,才从原始人的自然之火,到今天的打 火机。 在这里,我比较赞同(可能是第一次赞同,在其他场合下,面对的都是对微软 强权的屈从。这句话,我想很多微软的竞争对手比我感受更深)微软的话,微软说 得没错,Visual Basic确实适合完全不懂得编程的人(例如你)学习、使用,它的 功能很强大,上手也快。 6·3·DELPHI 再来看DELPHI。DELPHI按其字面意义上来讲,为古希腊著名城市特尔斐( 因有 阿波罗神殿而出名)。我们知道,西方文明实际上是古希腊文明的继承者,外国人 (指INPRISE)以其命名,自然含有自豪之意,就如我们中国人喜欢以长城、盘古、 龙之类令我们感到自豪的字眼包装某物一样。看来地球人(不管东方人西方人)还 都喜欢摆谱玩古。那么,用祖先靓丽字眼包装的DELPHI,是否如祖先带给人们的震 撼一样震撼着(计算机编程世界)? 是的,DELPHI是一个震撼,这个震撼并不亚于绝无仅有的Visual Basic带来的 震撼。DELPHI和Visual Basic,在我们目前进行的计算机历史进程中,是一对灿烂 的双子星座。来看详细资料。最早WINDOWS推出以来,程序员要想开发WINDOWS下的 软件,必须使用难度相当大的C或C++来编程,这是WINDOWS“唯一指定”的编程语言 (C与C++的概述见后节)。由于WINDOWS本身与DOS相比,不知道复杂了多少个数量 级,因此WINDOWS下的程序开发不亚于秦朝老百姓修长城。为了普及WINDOWS及确定 其霸主地位(当时WINDOWS只是件新玩具,虽然华丽,却易碎。不少用户还在DOS下 观望),微软当然不遗余力的“笼络”程序员,于是,它推出了VISUAL BASIC语言。 Visual Basic确实相当优秀,我只用一句话来表述它的特点。使用C或C++,在WIND OWS下显示一句“你好,WINDOWS!”,源程序就要占满2、3页A4纸。而Visual Bas ic的魔力,使得它只用一句编程语言就可漂亮的完成同样的编程任务。自然,Visu al Basic引起了很多过去想作程序员而畏难而退的“伪程序员”,真正的程序员也 带着很感兴趣的目光注视着Visual Basic,在相当一部分场合下,他们也使用Visu al Basic完成一定的任务。当然,初期的Visual Basic1.0比起现在的Visual Basi c6.0,远远不是尽善尽美。 微软的老对手BORLAND再也坐不住了,他们决定“包装”自己的优秀“选手”和 Visual Basic竞争,这就是DELPHI。从今天市场占有度来看,在10年左右的血腥搏 杀中,DELPHI似乎坐上了老大的位子,Visual Basic不得已屈居亚军,但是胜负并 不悬殊,谁也无法保证Visual Basic在下一回合——也许是5年,也许是10年、20年 ——的难以预测的较量中,将DELPHI强行压倒在地,或者使出泰森的“世纪之咬” 也说不定——计算机界的精彩竞争,永远是这样多姿多彩,彻底改变了中国传统谚 语“三个女人一台戏”,取而代之的则是,2 CORPs ,1 PLAY。即“俩公司,一台 戏”。 DELPHI,自微软推出Visual Basic以来,由INPRISE公司全力包装,唯一可以和 Visual Basic做公平竞争并且毫不示弱的“靓丽人物”。它在和Visual Basic的搏 杀中彼此飞快成长,很难说清它和Visual Basic之间的关系,它们之间,彼此撕杀, 彼此借鉴,虽是敌人,却象是孪生兄弟(似乎验证了最凶狠的敌人实际上你最亲密 的人)。 再来看DELPHI的“绝对隐私”。DELPHI是基于DOS下的PASCAL语言发展而来的。 PASCAL是面向程序语言教育的结构化高级语言。由语言设计家沃思设计。以法国哲 学家Pascal的名字命名,为的是纪念这位最先(或最先者之一)发明和制造 可归入数字计算机装置的人。 类似Visual Basic,DELPHI在原有PASCAL基础上“包装”、扩充,发明了Obje ct Pascal语言,一同构成了DELPHI开发环境。我积极的向毫不懂得编程的你推荐D ELPHI,如同刚才推荐Visual Basic一样,因为它们确实是一对WINDOWS下极其优秀 的计算机高级语言。学Visual Basic或DELPHI,,相信你决不会有什么困难。而下面, 拦路虎来了。 6·4·C与C++ 在DOS年代,著名的C语言风靡一时(到现在都是)。C语言具有高级语言和低级 语言的优点,因此曾有人称它为“中级语言”。它是一种通用计算机程序设计语言。 由美国人里奇和卡尼航提出来的。它的产生与Unix操作系统密切相关。后来, 在C语言的基础上,人们提出了C++语言,C++语言可以说是一种新语言,为了保持兼 容性,C包含在C++语言中。它使用了类的概念。这是和C最大的不同。C和C++是著名 的计算机语言,真正学习编程的人,没有不会C与C++的。WINDOWS中的API(应用程 序接口,你可以把它理解为WINDOWS操作系统提供的不同功能的零件,使用这些不同 的零件API,WINDOWS可以放VCD,可以看图片,等等)就是以C语言的原型提供给程 序员调用的。然而,相对于BASIC和PASCAL,C太难学了。不过我相信有志者事竟成, 在确实掌握了Visual Basic或DELPHI之后,开始你的C或C++之旅,相信不会太困难。 那么,在WINDOWS下我们可以选择的C语言有什么呢?你可以选择微软提供的VI SUAL C++或INPRISE提供的C++Builder(真是永远的生死对手)。它们之间可以说是 大同小异,但是还有区别。刚才提到,WINDOWS 操作系统的功能远远丰富于DOS。因 为它提供了成千上万的API供程序员使用。API你可以理解为零件。使用不同的WIND OWS API,可以编制不同的程序让WINDOWS实现不同的功能,如刚才提到的放VCD、D VD,上网,玩游戏等等,WINDOWS提供了巨型的无所不包的API库,完全够程序员使 用。虽然WINDOWS API功能强大,但是它的缺点在于它太“多”了,它几乎是无序的 集合,程序员学习的时候,会十分困难。于是微软的Visual C++包装了WINDOWS AP I库,基于其上开发了MFC库,它使用了类的概念包装了WINDOWS API,因此大大减轻 了程序员的记忆量;而INPRISE在它的C++Builder中,包装WINDOWS API后的库为OW L库。可以说Visual C++和C++ Builder的不同就在于它们的库不同。然而,我们知 道这俩库虽有不同,但却包装的是同一个对象,从这点上来说,它们又是大同小异 的。 有一点我必须要声明,虽然MFC和OWL包装了大部分WINDOWS API,但仍有相当一 部分WINDOWS API没有被包装进去,这意味着如果我们要使用这部分API,必须抛弃 MFC和OWL的封装而直接学习庞大的WINDOWS API。希望你不会觉得地球自转加速。最 后再给出一点提示,尽管Visual Basic和DELPHI没有相应的WINDOWS API包装库,它 们却可以使用某种方法直接调用WINDOWS API,但要注意,有特殊限制的API不能被 调用,这算是一点小小的遗憾吧。 关于学习Visual C++或C++ Builder,我要说明的是,你可以不学Visual Basi c,你可以不学DELPHI ,你可以不学JAVA……你不能不学C和C++。今天,流行于我 们地球上的世界语是什么?不是专家编出的“世界语”,而是大不列颠及北爱尔兰 联合王国的国语——英语。C,就是计算机界的英语,数学界的哥德巴赫猜想,人类 的基因工程,汉诗的屈李……(得,我得打住,肚里没墨水比喻了,拜托老弟你快 理解我的话,否则我实在@#%$T%^^%#$)。 那么,有人说,我已经学了Visual Basic或DELPHI,再学C,那不是浪费吗?学 那么多计算机语言干什么?问得好!可我知道有的人学了英语,他还在学德语,法 语,阿拉伯语,日语什么的。那么,这个人是不是在浪费? 学习多种计算机语言绝不是浪费,正如我们的工具箱里有十字螺丝刀,平口螺 丝刀,在我们干活的时候,我们总是选择当前最适合的螺丝刀,尽管有时候该用十 字螺丝刀的时候用平口螺丝刀也可以,但总是没使用十字螺丝刀有效率,反之,同 样适用于平口螺丝刀。 学习Visual C++或C++ Builder,你大概需要半年时间和它们“亲近”(上手), 用2、3年时间精通,而要做出划时代的创举,这要看你的造诣了(正如许多人具备 了和爱因斯坦、牛顿等相同的知识,却只有爱因斯坦写出了E=MC平方,牛顿写出了 牛顿三大定律)。学无止境啊。 不要担心会成为书呆子,我们是前无古人的编程呆子(哈,开个玩笑)。谁也 没有我们细心,谁也没有我们考虑周全,谁也没有我们有创造性,谁也没有我们同 现实社会的紧密联系性。 提到了C和C++的在计算机界的“霸权”地位,请你不要因此而轻视或瞧不起Vi sual Basic与DELPHI,它们是一样的博大精深。不要因为它们上手简单(可能1小时 就可上手,而不是C的半年上手),就以为它们不过如此。中国人学日语,确实比欧 洲人开头省事,但并不意味着日语比英语简单,比英语“低级”。同样的,你要精 通(我是指真正的完全消化精通)它们,需要2、3年的积累。一定要记住,C或Vis ual Basic或DELPHI ,它们都是你具有不同特性的同一种工具——请再想想十字螺 丝刀和平口螺丝刀。 6·5·JAVA 另一种计算机语言JAVA语言,是由SUN公司发明的,它宣称一次编译,终身运行。 我对它了解不是很深。但它确实是专家推崇备至的编程语言,如果说它现在的能量 没有释放出来,只不过相当于人们在原子弹发明之前没有找到E=MC平方这道“菜谱”, 一旦某人找到了“菜谱”,几乎无穷尽的能量,将会深远的改变太阳系的第3颗行星。 如果要在WINDOWS平台上学习它,你可以在微软和INPRISE这对老对手手里找到 相应的产品(生死难分的对手啊)。微软的是VISUAL JAVA,在VISUAL JAVA中,微 软故技重施,为VJ提供了WFC库(看起来很庞大的样子)。而INPRISE提供的是J Bu ilder。它又有什么宝贝?由于我对它了解不深,因此无法做更具体的阐述。神奇的 JAVA语言,在你今后的编程之旅,必将有其应得的地位。希望你不要忽略JAVA的地 位 6·6·远离我们和还没出世的编程语言 刚才我们叙述了WINDOWS平台下的编程语言,事实上,计算机界还有很多编程语 言,如ADA,FORTRAN ,COBOL……等语言,它们不是已经退出了历史舞台,就是应 用在其专有领域,另外,非WINDOWS平台下的,如UNIX,LINUX,,都有其专有的C语 言、JAVA语言等。 在这里,我还想提及还未曾出世的编程语言——这决不是废话。 程序员,意味着终身学习(实际上现代社会各个行业都需要终身学习,然而其 他行业的终身学习量远不如编程界)。程序员面对代有才人出的崭新编程语言或操 作系统,绝不可以忽视而固步自封。 这里有很惨痛的教训:著名的在DOS时代横扫千军的中文字处理软件WPS,在WI NDOWS悄悄登陆的微妙状态,并不重视WINDOWS平台下的开发,它没有推出WPS WIND OWS版(这意味着需要学习新的在WINDOWS下编程的语言:如Visual C++,C++ Buil der)。盛势凌人的微软挟WORD FOR WINDOWS气势汹汹横扫全球,在WPS超迟钝反应 下,一步步蚕食了WPS的地盘。当WPS“木然”回首,从梦中惊醒,准备反击——它 以为它是毛泽东,可以以弱击强,然而它忘记了它的对手不是蒋介石,而是手里只 有牙签也要武装起来的微软(微软的格言恐怕是:上帝不让你死,我要你死。我是 唯一。大概如果它需要,它连上帝都干了)。今天,WPS成了历史。而WIN WPS虽然 不想成为历史,还在苦苦挣扎,但在微软的铁蹄蹂躏下,我连为它祈祷的功夫都省 了。 所以程序员应该具有“战略性”眼光,可千万别一心投入编程世界而不闻窗外 事,世界格局日新月异,要随时调整自己的战略。世上可没后悔药。历史一旦错过, 就成为历史。要不,万一某天世界已经淘汰了C (当然这是举个假设),你还执着 于C。等你学成出山,你会陷于学会屠龙之技满世界找龙英雄无用武之地的困境。 目前个人电脑上的格局是:虽然WINDOWS现在还在横扫个人电脑,但新生代LIN UX正蠢蠢欲动。所以你有条件的话,不要忘记“脚踏两只船”,学学LINUX下的编程, 万一WINDOWS“挂”了。你不至于随WINDOWS一起殉葬。所谓狡兔三窟嘛。 同样的原则,需要你自己实践,时刻注意降临到这个世界上的BABY,说不定它 会成为未来世界的霸主,你这诸葛亮是找董卓这靠山,还是刘备,曹操……?做永 远的墙头草,谁有POWER跟谁走,有奶便是娘。脚踏N条船是我们永不变更的承诺。 (喂,我是教你们编程世界的适者生存,可别拿这做你的人生哲学) 7·编程书籍的选购 编程水平为0起点的朋友,我建议你购买老谭的《BASIC语言》或《QBASIC语言》, 它是为完全不懂编程的人们准备的,虽然老谭的书看得叫人打瞌睡。在读熟之后, 购买微软Visual Basic联机手册的印刷版,由希望出版社出版,共4册(不包括STE P BY STEP),平均每本100元,4本共400多元。再配上一本100元左右,七八百页厚 的外国Visual Basic专家写的Visual Basic书籍(和微软的Visual Basic书籍阐述 点不同)就行了。这就是你的全部行头。现在开始你的编程之旅,你就可以“万事 不求人”了。如果你觉得这些书很贵,很肉痛的话,我只能说那很遗憾,因为不看 全微软的Visual Basic联机手册,你无法深入学习Visual Basic,事实上,尽管微 软的VB手册总的算起来字数也不少,可是等你实际应用起来,恐怕脑子里想的还是 “书到用时方恨少”。若条件允许,请尽量备齐我所提到的书籍。我是毫无私心的 推荐,因为我不可能拿到书商的回扣的。一切出发点是为了我们的电脑编程。或者 我再提供这样一条信息,那么你的肉可能会不再那么痛:微软Visual Basic相应手 册的英文版每本售价35-40美圆,折合成人民币为300元人民币。想到美国人民的冤 大头相,你这所谓中国冤大头顶多是冤小头罢了。咬咬牙,买下这套书吧,以后你 会发觉这一切都值得!再给你一相关信息:清华出了一本《Visual Basic参考详解》, 用小字排版,售价62元,它包括了这4本Visual Basic手册里的“语言参考”(120 元)和“控件参考”(110元)部分,是你一个非常不错的替代选择。当然,由于是 “压缩”文档,所以有点“缩水”现象,不过不是太严重,你自己看着办吧。 关于DELPHI,我的想法类似刚才的Visual Basic推荐书籍,你应该选择INPRIS E的DELPHI联机文档的印刷版本。然而很遗憾,我好象没有看到。那么在这里给出我 的选书方案。如果你编程知识是0起点,那么你需要购买清华的课本《PASCAL程序设 计》,之后就可以选购DELPHI书籍了。在目前的书店里,分成这样几个档次,50块 以下的入门型,7、80块左右的入门与提高型,及100元左右的入门提高型,此外, 还有定价不菲的阐述DELPHI某些专题的书籍,如DELPHI数据库设计、DELPHI多媒体 程序开发等……每本均至少50-80不等。在这里,你可以根据自己的经济实力选购D ELPHI入门与提高型书籍,我建议你选择电子工业出版社的《DELPHI程序员指南》, 里面阐述得较好,约100元。等看熟后,可以根据你自己的需要购买DELPHI的专题书 籍。另外,你还需备齐DELPHI类参考手册,清华出的小字排版的《DELPHI4/5类参考 详解》(约50元)和《DELPHI4/5高级类参考详解》(约50元)是必不可少的。现在 开始你的DELPHI苦修之旅吧,除非你有特殊需要,目前我为你备齐的装备够抵挡一 阵子了。如果还想提高的话,你可以购买《DELPHI5开发人员指南》,135元,INPR ISE推荐,机械工业出版社。 关于Visual C++,请先阅读老谭的《C程序设计》,这是给编程知识为0起点的 读者讲述C语言的,在完全瞌睡之前别再忘了买本关于C++的书,这里我推荐的是 《C++——面向对象程序设计》,80块不到。之后,去书店买全微软的Visual C++手 册吧,希望出版社,共6本,约700元不到(是够黑的)。这还没完(坚持住,不要 晕倒,现在还没有到晕倒的时候),如果你想有所提高,你还需要购买以下经典书 《Programming Visual C++6.0》、《Programming Windows》、《Programming Wi ndows with MFC》、《Advance Windows》、《Network Programming》这些经典书 每本约100元左右,我曾无数次的在它们的面前流口水,如果你实力够摆平的话,记 得“一旦拥有,别无所求。”这些书的名字可能略有记错。同样地,我要告诉你, 它们的英文版在美国售价35-40美圆,所以我们只是冤小头,而不是冤大头。 关于C++ Builder,我没有什么经验,不过书店里C++ BUILDER的书也不少,你 可以参考我给你提供的方案,先选择购买一本入门型的,再买一本厚厚的提高型的, 再配齐它的参考手册就行了(清华出的小字排版的《BORLAND C++ BUILDER类参考详 解》和《BORLAND C++ BUILDER高级类参考详解》)。此外,你还可以经常购买专家 结合实例阐述的C++ BUILDER书籍,以学到人家实际编程经验。 关于VISUAL J++,微软的联机手册等着你,希望出版社,共4本,约300元出头; INPRISE的J Builder ,你需要自己去淘金。 当然,我的选书方案也不一定是完美的,你如果有能力,最好根据自己的实际 需要去选择合适的编程书籍。好了,终于把这些东东都说完了。希望在我的“敦敦 教导”下你能够“浪子回头”,踏上我们的编程之旅。其实我一直都在想编写一本 写给零起点用户的Visual Basic编程书,如果你有耐心,请等我的书写出来看吧 (哈哈,千万别等我,那黄花菜都不凉了?记住,现在是最好的学习时间!)。 最后给出上海和西安的朋友们购买计算机书籍的地点。西安的朋友请选择:钟 楼新华书店计算机专柜和钟楼外文书店,它们的优点是书较全,但不打折。不要紧, 我有张良计,请到西安书市来,这里的大部分书籍都打折(7-9折),挑选一本心爱 的计算机书籍吧?上海的朋友请选择:上海书城计算机专柜,上海书城对面的清华 计算机图书书店,及上海书城对面湖北路口的东方激光计算机图书专卖店(95折, 学生凭证9折),或者上海西南地区的交大昂立计算机书店(交大隔壁),打85-95 折。 其他地方的朋友:如果您所居住的城市没有合适的计算机书店,请尝试在网上 购书。试着用搜索引擎搜索较大的网上书店(如“当当”),一般它们都位于大城 市,如北京、上海等。或者直接去计算机书籍出版社的网页,如希望出版社,机械 工业出版社等,购买相应的书籍。 8·与编程世界同步 为了“开眼看世界”,建议你和编程世界同步,这是我们学习编程的一个有效 和不可缺少的辅助手段。我们看报纸,电视,听广播,可以了解世界最新动态。和 编程世界的同步,需要INTERNET的帮助。因为编程世界毕竟是“专业角落”,在大 众世界里,我们看不到它的踪迹。无所不能的INTERNET,为编程世界提供了栖身之 地。如果你英文水平过关,不要忘记时时锁定微软的编程网页:MSDN参考网页,它 相当于计算机界的大英百科全书,不过都打上了微软的烙印。如果你不想为微软牢 守贞操的话,请访问INPRISE网页。 此外,你可以在INTERNET上找到由各种专业组织或个人开办的C、Visual Basi c、DELPHI、JAVA、LINUX编程……等等的网页(其中包括我的编程网页cooltogeth er.com,希望能给你带来小小帮助),多观摩,多研究,多和同道商讨,和他们同 处一个大家庭里,你才不会感受寂寞带来的痛苦。由于中国编程爱好者对编程的重 视,我们的中文编程资料较全,通过搜索引擎,你不难找到你的罗密欧或朱丽叶。 当然,由于英文的霸主地位,且计算机学科的最高水平在美国,英文资料是最丰富 的。你没有理由不提高你的英文水平(这方面你可以通过小学到大学的英文课本来 学习,或者新概念英语等等……)。这并不掉价,学习英文并不意味着放弃汉语。 不要以为你是中国人你的汉语水平就过关了,你也应该提高自己的汉语学习水平 (从小学到大学的语文课本可以供你学习,另外自考中文系的全套课本也很不错), 这不仅有利于你漫步在编程世界,更有利于你在地球上栖身。很难想象,语文水平 差可以学好编程。编程是美的艺术,程序编写在屏幕上,它不仅具由自身逻辑结构 上的美,它也具有外在形式布局上的美,让人赏心悦目,所以需要你扎实的其他各 学科的学识为基础。 9·后记 事实上,虽然你可以按我的操作步骤循序渐进,但是你要估计到前进路上吃的 “苦头”,世上没有不付出汗水就可以得到的东西,尤其是如果你原来是个根本不 知道编程为何物的“外行”。说这番话的目的并不是打消你的进取心,而是给你个 准备,让你知道前途坎坷,从而预备更大的力量一鼓作气消灭前进道路上的一切障 碍。坚定的信心和信念,会使你到达成功的彼岸。想想当年红军的两万五千里长征, 何其苦何其不堪,然而在从指挥官到普通士卒坚定的信心和信念下,硬是杀出一条 血路,奠定了中华人民共和国的火种。论苦,我们有革命先辈苦吗?立志,后做, 带来成功;立志,后不做,空话罢了。 好了,文章到了这里,你再不是个懵懵懂懂徘徊于计算机编程世界之外的小 (女)子,让我看看,恩,你的眼睛又亮了几分,你的面庞又成熟了一些;在这个 世界上,你所不了解的未知之物又少了一件。成长,便在于无声处。 也许有时你会觉得如果在学习编程的道路上有人来辅助,将会少走很多弯路。 事实上,我想我可以助你一臂之力。说起来我是身无长技,唯好编程。想起古时孔 子弟子三千,真让人羡慕。咱就学孔子做个私塾先生,如何?上海的朋友可以打BP 95812-2135770呼我,或56833586(20:00以前),如果条件合适我将为大家开办编 程学习班。定于每周末8:00-12:00授课,每月收费88元,学制3个月(3个月学费 一次交齐为200元)。这条信息长期有效,也许你我再不用通过文字交流,而在我的 手把手教学下步入编程神奇殿堂。详细情形请看www.cooltogether.com。 愿我们在编程世界共同进步,同创美好世界! 注1:文中提到的老谭,为我对我国著名计算机教育家谭浩强先生的“爱称”。 谭浩强先生为我国计算机界“名人”,他是在我国普及计算机语言的第一人。在我 国的计算机史上占有重要地位,当然,他现在还活着呢,并且仍在为普及计算机知 识工作着。 注2:阅读本文后,如有任何关于编程的疑问,请发EMAIL向我查询。我将竭尽 全力解答。或登录我的网页亦可。