1.1 计算机语言
程序是用计算机语言写成的。编程的实质就是用计算机语言来表达要解决的问题的逻辑。
那么,什么叫计算机语言呢?
先不必去解释。因为,计算机是机器,机器不是生物,它怎么能有语言呢?小猫小狗有语言我尚可相信。机器也有语言,还要我们去学习,这似乎有渎人类之尊严。
如果不把这个结解开,可能部分特别在意人类尊严的学生对学习编程从此产生心理障碍,无法继续学习……
狭义上说,人们讲的语言包括汉语、英语、广东话,它是语言,有声音。小鸟之间的唧唧喳喳,大抵也是语言。但其实“语”“言”二字虽都带口,却不是说非得有声才称为语言;哑语无声,但它也是语言。广义上讲,语言是沟通、交流的一种手段。基于此,人们认为所有的机器或工具,也包括计算机,都有它们自己的语言。比如锤子,它的语言是敲打;比如螺丝刀,它的语言是拧。如果你非要拧锤子,非要敲打螺丝刀,那么就像你用法语和广东人交谈,用粤语和法国人说话一样莫名其妙。
一般来说,越复杂的机器,人类与其沟通的语言也越复杂。比如汽车,你想驾驭它,你就必须去驾校参加学习。想一想,开车的时候,人们的确是在和车进行沟通。如果你俩之间的沟通出现差错——你心里右转,手却一个劲向左转方向盘,向机器发出了错误的命令——这将多么可怕呀!
至此,人们的心理障碍可以消除了。小猫小狗有语言是因为它们聪明,而机器有语言却是因为它们的笨。它们笨,没办法像动物一样可以通过培训来理解人类的意愿,所以,让人类反过来为它们制定一套沟通的规则,然后去学会这些语言,从而方便控制机器。
可以说,凡是机器语言都是笨笨的语言。机器语言可以分低级语言和高级语言,但无论何者,都笨得可爱——学得越多你就会越发现它的笨和可爱。另外,当我说越复杂的机器其语言也越复杂时,我用“一般来说”加以修饰。这是因为,发明和发展机器的智者们会为机器制造出越来越高级的语言,这些高级语言,最终越来越接近人类的自然语言。就像计算机,我们有信心相信,终有一天,它能听懂人们的语言——这就是流传在程序员中的一个梦。当程序员熬红眼敲打出数万行代码时,他们便会想起这个梦。闭上双眼,伸腰,对计算机说:“BEGIN……”,深呼吸一次,然后说:“END”,睁眼时发现计算机已完成了所有工作……
下面回到计算机,它是机器,也是人类有史以来,继发明使用火、电、电子这些改善人类生活的工具后,最为重要、最为先进、最为广泛使用的工具。它的机器语言的复杂程度可想而知,已经复杂到必须成为大学的一门专业课程。然而别忘了前面的结论,语言只是沟通的手段。在这个意义上,当你用鼠标或键盘在计算机上进行输入时,只要你输入的是正确操作,人们都认为你在使用计算机语言,因为你确实是在用一种特定的方式或动作进行着和计算机的交流。
当然,这里的课程并不特意教你任何有关计算机的基本操作。计算机的基本操作主要是指如何使用计算机内已有的软件产品,比如Windows(操作系统是软件,称为系统软件)、办公系统MS Office或WPS Offic(e 这些实现工作和生活中具体应用需求的软件称为应用软件)、游戏(一种特定的,只拿来玩的应用软件,称为游戏软件)。但我们不同,人们学的是如何编写软件。也就是说,人们将是发明人、设计师、创造者;而他们(到今天仍拒不学习编程的家伙)都只是使用者。
程序(或软件)是用计算机语言写出来的。
写一个程序,大致是这么一个过程:
(1)人有一个问题或需求想用计算机解决。
(2)人想出解决问题或实现需求的思路。
(3)人将思路抽象成数学方法和逻辑表达或某种流程的模式。
(4)程序员将数学方法、逻辑表达中的数据和流程用计算机语言表达,称为编码。
用计算机高级语言写成的代码被语言的实现工具(VC、VB或C++Builder等)转换成计算机的最低级机器语言,这就完成了人与机器在程序制定上的最后沟通。
可见,人的思路是先用人类自己的语言思考,然后用一门计算机语言写成代码,最终需要一个语言工具来将它转换成机器可以理解的机器语言。这里要学的就是一门承上启下的计算机语言。这样语言有很多:BASIC, Pascal, C、C++, Java, C#,等等,本书的C语言是使用最多的语言。有关C语言的更多特点,将在以后的章节谈到。
尽管人们完全可以直接用最低级的计算机语言——机器语言来写代码,那样就不需要语言工具了,但在这里要弄清楚,本书是教机器语言。下一节里,你会明白用机器直接能懂的语言——不妨称之为原始的机器语言写软件,在今天是多么的不现实。