📄 第01章 程序漫谈.htm
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0045)http://d2school.com/bcyl/bhcpp/newls/ls01.htm -->
<HTML><HEAD><TITLE>第01章 程序漫谈</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>P {
MARGIN: 1px 2px; LINE-HEIGHT: 150%
}
.节标题 {
FONT-WEIGHT: bold; FONT-SIZE: 12pt
}
TD {
FONT-SIZE: 9pt
}
.tdtitle {
FONT-SIZE: 20pt
}
.celltopline {
BORDER-TOP: #000000 1px solid
}
.menucell {
FONT-SIZE: 10pt
}
#glowtext {
FONT-SIZE: 10pt; FILTER: glow(color=red, strength=1); WIDTH: 100%
}
A:link {
FONT: 10pt 宋体; COLOR: blue; TEXT-DECORATION: none
}
A:visited {
FONT: 10pt 宋体; COLOR: purple; TEXT-DECORATION: none
}
A:active {
FONT: 10pt 宋体; COLOR: red; TEXT-DECORATION: underline
}
A:hover {
COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY leftMargin=0 topMargin=3><A name=页首></A><!-- 标题 --><!--标题结束 -->
<CENTER>
<TABLE height=154 cellSpacing=4 cellPadding=4 width=760 border=0>
<TBODY>
<TR>
<TD
style="FONT-SIZE: 10pt; MARGIN: 10px 12px; TEXT-INDENT: 20px; LINE-HEIGHT: 150%; FONT-FAMILY: 宋体"
width="100%" height=148>
<H2>第一章 程序漫谈 </H2>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#硬件、软件、程序">1.1
硬件、软件、程序</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#计算机语言">1.2
计算机语言</A></P>
<P><A href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#语言和实现语言的工具">1.3
语言和实现语言的工具</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#机器语言">1.3.1
机器语言</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#汇编语言">1.3.2
汇编语言</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#高级语言">1.3.3
高级语言</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#语言实现工具">1.3.4
语言实现工具</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#C++Builder的基本功能">1.3.4.1
C++ Builder的基本功能</A></P>
<P> <A
href="http://d2school.com/bcyl/bhcpp/newls/ls01.htm#VCLvsMFC">1.3.4.2 VCL
vs. MFC</A></P>
<P> </P>
<H3>1.1 <A name=硬件、软件、程序>硬件、软件、程序</A></H3>
<P> </P>
<P>对于计算机,也许你是老鸟,也许你是菜鸟……</P>
<P> </P>
<P>但不管怎样,如果你此时此地你要学习编程,那么你应该多多少少知道点什么叫硬件什么叫软件——反正我不管你懂不懂,为了面子,我很不乐意你问我什么叫硬件什么叫软件——我做在这凳子半个小时了,一直想不出如何给二者下个定义。<BR>美国一个电脑神童说:“凡是摔到地上会坏的就是硬件。”我深感不妥,众所周知,如果把硬盘摔到地上,那么硬盘坏了,里头的那些数据——都是软件——也一样地坏得让你我心疼。</P>
<P> </P>
<P>倘若按字面上理解,那就更加的矛盾重重:硬盘硬是硬件;软盘软也是硬件。<BR>还一种说法是:看得见摸得着的为硬件,看不见摸不着的为软件。刚觉得它说得不错,但马上我就发觉了它的破绽:我现在用的Word2000,它就在屏幕上,界面美观,操作方便……</P>
<P> </P>
<P>无奈之下,我搬出金山词霸,它说:“硬件:计算机及其它直接参与数据运算或信息交流的物理设备”。挺好。硬件就是设备。平常我们生活中的各种设备,洗衣机,冰箱,电视,还有螺丝刀,钳子,都是硬件。</P>
<P> </P>
<P>软件呢?“软件:控制计算机硬件功能及其运行的指令、例行程序和符号语言”。指令、程序和符号语言是什么且不说,至少我们得知:软件是用来控制硬件的运行的。</P>
<P> </P>
<P>这就好办点。我们可以打比方:譬如汽车,其本身自然是硬件,但关于驾驶车的那一套技术,及有关交通规则,我们可称为软件,因为后者控制了前者的运行方式。</P>
<P> </P>
<P>(一般不传之秘笈:如果你英语一般,学习编程时,别忘装上金山词霸。并且装上后立即上网升级词霸)<BR></P>
<P>现在来谈“指令、程序、和符号语言”。我想交通方面的“软件”确实就是这些东西。我不会驾车,但曾多次看到警察在我上班坐的班车前用指头一指,就令我们的司机脸色发青。之后,一套既定的处罚程序被执行。很快,听说我们的司机又在学习那些用来表示“单行”、“只许右拐”、“不许停车”、“禁鸣”等奇奇怪怪的符号语言了……
</P>
<P> </P>
<P>事实上,说软件看不见摸不着其实也正确。因为它们是思想,精神,规则,逻辑。本身是抽象的,确实不可触及。但软件总是要有载体来存放,要有表达或表现方式,这些使得它们变得形象具体起来。在此意义上,说软件是摔在地上坏不了的东西,也相当行得通,神童毕竟是神童。
</P>
<P> </P>
<P>最后,什么是程序?我决定斗胆来给它下个定义:<BR></P>
<P>程序是一组按照一定的逻辑的进行组合的指令。 </P>
<P> </P>
<P>因此,在以后的学习过程上,很多时候,我们会觉得程序就是指令;同样很多时候,我们会觉得程序就是逻辑。 </P>
<P> </P>
<P>当然,更多的时候,我们并不区分程序和软件二者。也许前者更趋于抽象,而后者趋于具体。比如我们在写那些表达我们的思想逻辑时,我们喜欢说“写程序”;而当程序完成,可以待价而沽时,我们称它为软件产品。
</P>
<P> </P>
<H3>1.2 <A name=计算机语言>计算机语言</A><BR></H3>
<P>程序用计算机语言写成。编程的实质就是你用计算机语言来表达你解决问题的逻辑。 </P>
<P> </P>
<P>那么,什么叫计算机语言? </P>
<P> </P>
<P>先不必去解释。因为,计算机是机器,机器不是生物,它怎么能有语言?小猫小狗有语言我尚可相信,机器也有语言,还要我们去学习,这似乎有渎人类之尊严。<BR></P>
<P>如果我不把这个结解开,可能部分特别在意人类尊严的学生对学习编程从此产生心理障碍,无法继续学习…… </P>
<P> </P>
<P>狭义上,我们讲的语言,汉语英语广东话,它是语言,有声音。小鸟之间吱吱喳喳,大抵也是语言。但其实语言二字虽都带口,却不是说非得有声才称为语言:哑语无声,但它也是语言。广义上讲,语言是沟通、交流的一种手段。基于此,我们认为所有的机器或工具,也就包括计算机,都有它们自己的语言。比如锤子,它的语言是敲打;比如螺丝刀,它的语言是拧,如果你非要拧锤子,非要敲打螺丝刀,那么结果就像你用法语和广东佬交谈,用粤语和法国佬说话一样莫名其妙。</P>
<P> </P>
<P>一般地,越复杂的机器,人类与其沟通的语言也越复杂。譬如汽车,你想驾驭它,你就必须去驾校参加学习。想一想,开车的时候,我们的确是在和车进行沟通。如果你俩之间的沟通出现差错——你心里右转,手却一个劲向左转方向盘,向机器发出了错误的命令——这将多么可怕!</P>
<P> </P>
<P>至此,我们的心理障碍可以消除了。小猫小狗有语言是因为它们聪明,而机器有语言却是因为它们的笨:它们笨,没办法像动物一样可以通过培训来理会人类的意愿,所以,让人类来反过来为它们定一套沟通的规则,然后人自己去学会这些语言,从而可以方便控制机器。</P>
<P> </P>
<P>再所以,我们推论,凡是机器语言都是笨笨的语言。机器语言可以分低级语言和高级语言,但无论何者,都是笨得可爱——学得越多你就会越发现它的笨和可爱。另外,当我说越复杂的机器,其语言也越复杂时,我用“一般地”加以修饰。这是因为,发明和发展机器的智者们会为机器制造出越来越高级的语言,这些高级语言,最终越来越接近人类的自然语言。就像计算机,我们有信心相信,终有一天,它能听懂我们的语言——这就是流传在程序员中的一个梦。当程序员熬红眼敲打数万行代码时,他们便会想起这个梦:闭上双眼,伸腰,对PC说:“BEGIN……”;深呼吸一次,然后说:“END”。张眼时发现计算机已完成了所有工作……
</P>
<P> </P>
<P>(一般不传之秘笈:程序员必备之工具:日产乐敦牌眼药水一瓶,用于预防角膜炎;韩产777牌指甲刀一枚,用于铰除因击键刺激而疯长的指甲;国产肛泰若干,治疗因长期坐姿不当而导致的痔疮)
</P>
<P> </P>
<P>回到计算机。它是机器,也是人类有史以来,继发明使用火、电、电子这些改善人类生活的工具后,最为重要,最为先进,最为广泛使用的工具。它的机器语言之复杂程度可想而知,已经复杂到必须成为一门大学的专业课程。然而别忘了我们前面的结论,语言只是沟通的手段。在这个意义上,当你用鼠标或键盘在计算机上进行输入时,只要你输入的是正确操作,我们都认为你在使用计算机语言,因为你确实是在用一种特定的方式或动作,进行和计算机的交流。</P>
<P> </P>
<P>当然,这里的课程并不特意教你任何有关计算机的基本操作。计算机的基本操作主要是指如何使用计算机内已有的软件产品,比如Windows本身(操作系统是软件,称为系统软件);比如办公系统MS
Office或WPS
Office(这些实现工作生活中具体应用需求的称为应用软件);比如游戏(一种特定的,只拿来玩的应用,称为游戏软件)。但我们不同,我们学的是如何编写软件。也就是说,我们将是发明人,设计师,创造者;而他们(到今天仍拒不学习编程的家伙)都只是使用者。(我突然有些不安:这么说其实纯属煽情。公平地讲,任何人的任凭创造都是别人的劳动成果之上,任何人也都在创造自己的杰作)</P>
<P> </P>
<P>程序(或软件)是用计算机语言写出来的。</P>
<UL>
<LI>写一个程序,大致是这么一个过程:
<LI>人有一个问题或需求,想用计算机解决……
<LI>人想出解决问题或实现需求的思路……
<LI>人将思路抽象成数学方法和逻辑表达或某种流程的模式……
<LI>程序员将数学方法,逻辑表达中的数据和流程用计算机语言表达,称为代码…… </LI></UL>
<P> 用计算机高级语言写成的代码被语言的实现工具(VC,VB,Delphi,或C++
Builder)转换成计算机的最低级机器语言。这就完成了人与机器在程序制定上的最后沟通。 </P>
<P> </P>
<P>可见,你的思路是先用人类自己的语言思考,然后用一门计算机语言写成代码,最终,需要一个语言工具来将它转换成机器可以理解的机器语言。我们要学的就是一门承上启下的计算机语言。这样语言有很多:BASIC,Pascal
,C, C++, Java, C#……我们学C和C++。它是使用最多的语言。有关C,C++的更多特点,我们将在下一节谈到。</P>
<P> </P>
<P>尽管你完全可以直接用最低级的计算机语言——机器语言——来写代码,那样就不需要语言工具了,但在这里你要弄清了,我们不是教机器语言。下一节,你会明白用机器直接能懂的语言——不妨称之为原始的机器语言——写软件,在今天是多么的不现实。</P>
<P> </P>
<H3>1.3 <A name=语言和实现语言的工具>语言和实现语言的工具</A><BR></H3>
<H4>1.3.1 <A name=机器语言>机器语言</A><BR></H4>
<P>你知道香蕉叫什么吗?就叫香蕉?叫banana? </P>
<P> </P>
<P>错,都错。 </P>
<P> </P>
<P>香蕉叫“牙牙”。 </P>
<P> </P>
<P>这是一个baby的语言,一个婴儿还没学会人类的主要语言,所以面对喜欢的东西总是发出咿咿呀呀的声音,也许你听不懂,但这是她的语言。符合小孩特点的语言。
</P>
<P> </P>
<P>计算机的机器语言也一样,必须符合计算机的硬件特点。而痛苦就在这里,越符合机器的特点,同时也就越不符合人类的特点。 </P>
<P> </P>
<P>计算机,全称电子计算机,20世纪40年代,无线电技术和无线电工业的的发展为电子计算机的研制准备了物质基础。1943年~1946年美国宾夕法尼亚大学研制的电子数字积分和计算机ENIAC(Electroic
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -