程序语言的基本原理.docx
《程序语言的基本原理.docx》由会员分享,可在线阅读,更多相关《程序语言的基本原理.docx(21页珍藏版)》请在冰豆网上搜索。
程序语言的基本原理
程序语言的基本原理
■什么是语言
想要理解什么是「计算机程序语言」,我们有必要探究它当初是究竟如何被发展出来的;而想要理解计算机程序语言是如何发展出来的,最好能够仔细推敲探究一下人类语言在最原始之初是怎么开始的。
■人类语言基础
让我们想象一下活在很古早古早以前的人类,他们并没有所谓的「语言」,也没有「文字」。
他们只能用「比手划脚」来表达自己的想法。
一个年轻人刚学会打猎。
有一天早上,他第一次自己一个人进到森林里去狩猎。
接近傍晚的时候,这个年轻人慌张地从森林里跑回村子,神情紧张地对着村子里的人们「比手画脚」。
村民们都不能明白为什么他对「鸟」会感到如此慌张,又不是没见过鸟。
这年轻人又一阵「比手划脚」,村民们还是不了解为何他因为「老鼠」而如此激动,又不是没见过老鼠。
这年轻人无法完整表达他在森林里所看到的「东西」,他很难让村子里的其他人也能知道他所看到的那样东西。
他很懊恼。
于是,隔天一早,他又进森林里打算抓它一只回来给大家看。
就在一个山洞里,他终于抓到了一只并带回村子给大家看。
原来是一只像是「长了翅膀的老鼠」之类的东西…
这年轻人他没见过这种动物;村里的人们有许多人也没见过这种动物。
当大家看见他抓回来的这只「会飞的老鼠」,于是就明白了这年轻人昨天想要表达的是什么了。
这东西在飞的时候发出一种「ㄆㄟㄈㄨ、ㄆㄟㄈㄨ」的声音,大家就模仿这声音指着那个长得像老鼠又长了翅膀的东西叫「ㄅㄧㄢˇㄈㄨˊ」,所以后来这个村落的人只要说「蝙蝠」,大家就知道是什么意思了。
不同村落的人们有不同的经历,对一些东西的叫法和表达方式也不一样。
像有些别的地方的部落把这同样的东西叫做「ㄅㄟ\ㄊ」BAT。
也许他们那边当初发现这种「会飞的老鼠」是发出像这样的声音...
于是人类就有了各种不同的语言。
后来,人们又学会了画一些符号来代表那些语言,于是就有了「文字」,然后人与人之间除了可以用发出声音(讲话)来传达讯息以外,还能在树皮、竹板或兽皮上刻划一些符号线条(写字)来表达一个想法或概念。
以上就是「人」语言的基础。
■计算机的语言基础
「人」能够藉由发出各种不同的声音来表达非常多不同的意思,也能藉由「画」出许多不同变化的图形与线条来代表那些声音和其中的意义。
根据这个「语言基础原理」,我们也就可以藉由「电」来产生各种不同的变化,然后制定每一种变化所代表的含意,如此便能创造出一种「电的语言」。
然而,一条电线所能表示的讯息就只有「没电」或「有电」两种而已;这好像一个人只能用「摇头」或「点头」来表达一样。
但是如果有一条以上的电线,就能有更多的不同变化来表示更多的讯息。
只要能用电产生足够的变化来表示各种不同的讯息,我们就可以发展出使用电的讯号表示的「语言」。
然后,我们当然就能创造出辨认这种「语言」的机器--计算机。
让我们用一个黑色方块■来代表「没电」;用一个白色方块□来表示「有电」。
如果只有一条电线,就只能有两种不同的变化,只能来表示两种讯息:
假设现在我们有两条电线,就能产生4种变化,于是就可以用来表示4种不同的讯息:
可以把这电子线路想象成是「灯泡」。
■代表没电,灯泡不亮;□代表有电,灯泡亮。
如果有4条电线用4灯泡来表示,就能产生16种变化组合,可以用来表示16种不同的讯息:
假如有8个呢?
好吧!
让我们再来算算看…
哇!
当我们使用8条电线以8个灯泡显示的时候,能产生256种不同的变化,可以用来表示256种不同的讯息。
如果你很有耐心的对照一下这8个「灯」(电子线路)的256种变化组合,除了能确认它们真的没有重复以外,你还会发现一些东西—它们的顺序排列有规律
。
右边的4个「灯」每16个就会重复一次。
如果你再更仔细看,就会发现以最右边3个为一组的「灯」每8个就会重复一次。
要是再看仔细点儿,还会发现最右边两个为一组的「灯」每4个就会重复一次。
那么,如果只保留最右边的1个「灯」来看看呢?
你会发现就是每两个就重复一次…很有意思吧?
!
如果你还没看出来,你应该先停下来,把前面那张表好好研究对照一下。
如果还是看不出来,建议你去找一张空白纸,遮住左边的「灯」,然后分别只露出右边1个、2个、3个、4个为一组的「灯」再看一次,就应该更容易看出它们的规律了。
我们能利用这个「规律」来制定出让计算机用以表示数量的数字系统,这又是另一个较进阶的分支主题,以后有机会再来更详细的探讨这些。
让我们先回到这篇的主题重点上面。
虽然「电」只能以「没电」、「有电」两种变化来表示仅有的两个讯息,但是当一次使用8条电线,如此便能用来表示256个不同的讯息了。
这不是很妙吗?
根据这种方式就能发展出一套类似人用来沟通的「语言」了。
而且也能设法将这一大堆由「有电」□、「没电」■组成的各种不同讯息存放在能蓄电的电子装置上,这不就类似人使用书写文字或画图来记载数据的方式了吗?
这真是太妙了!
为了沟通方便,我们就用数字1代表□「有电」,数字0来代表■「没电」。
然后再把任何能存放一个0或1的「电线」或电子装置,或者任何只要能表示「有电」与「没电」的一个存放位置叫做1个「位」,有8个的话就叫做8位。
8位又称为1个「字节(Byte)」,也就是每8个一组…
哈!
突然明白了许多东西吗?
非常好
。
这个星球上的第一部计算机,就是以这个基本原理创造出来的。
8位能直接产生的变化有256种,但并不表示就只能表示256种不同讯息而已。
想想看,英文字母也只有26个就能拼凑出那么多的英文单字,然后用那些单字就能够表达几近无数的讯息!
而只要8位就有256个「字母」。
以此来发展一套「语言」是绰绰有余了。
根据以上的原理,计算机就这样被创造出来了。
所以,
实际上计算机所处理的数据就是0与1,也就是前面用■表示「没电」、□表示「有电」的一大串电的讯息。
而所谓几位计算机就是指那部计算机的CPU能一次处理几个位。
一部计算机的速度就是看CPU一次能处理几个位,以及每次要花费多久的时间,通常是以每秒几次来计算,而这就是CPU的频率。
由此可知一部计算机的所有硬设备大都是用来处理这些0与1的讯号。
RAM事实上就是可用来存放0与1的电子装置,而其他储存装置也是利用磁性(软盘与硬盘)或反光度的不同(光盘)来表示0与1。
很早期以前的计算机真的是用一大堆类似灯泡的东西做出来的,而且真的还以发亮来代表1、不亮来代表0,而这种长得像灯泡的零件就叫做「真空管」。
当时用真空管来当内存,一个位就要用一支,每一支真空管的体积约是一般打火机的1~2倍大,这样你就能想象一下早期计算机的体积有多庞大了。
有了一部能辨认0与1的机器之后,接下来就是制订一套用一串串的0与1来表示各种不同定义的规则,而这就是给计算机使用的「语言」。
用一大串的0与1所直接制订出来的这套语言就叫做「机械语言」,要一个人记住这种语言的每个「字母」、「单字」与「文法」简直比登天还难,所以在制订好语言规则并在计算机中设定完成之后,还需要有一份对照表,于是工程师能参考这份对照表来编写「文章」,这份文章输入计算机之后计算机就会按照文章的指示来做事,这种「文章」就被称为「程序」。
而编写这种「文章」就称为「程序设计」。
用机械语言来设计程序谈何容易,这会把一个正常人给弄疯掉!
所以聪明的工程师就用机械语言设计了一种「翻译程序」,让人们可以直接用「代码」来编写程序,然后再经过「翻译程序」翻译成计算机的原始语言—机械语言。
进行这种翻译的过程就称为「组译」或「编译」,而用来执行组译的程序就称为「组译程序」或「编译程序」,通常也叫「编译程序」。
首先发展出来的这种用「代码」设计程序的方式,就叫「汇编语言」。
发展出汇编语言之后,编写程序就比较不会把人弄得发疯,因为不必再一直翻阅机械语言对照表来写程序。
然而,汇编语言所用的「代码」仍是不易理解,所以后来就有人发展出越来越像英文的「计算机语言」,所使用的方式也是设计能转译为「机械语言」的程序。
「程序」就是用计算机语言所写出来的「文章」;程序内容所使用的「单字」叫做「指令」;这些指令在计算机语言中的「文法」就叫「语法」。
「文法」即是文字的用法;「语法」则是指令的用法。
■计算机语言的种类
我们已从前述的两篇文中知道了最原始的计算机语言是「机械语言」,而最接近「机械语言」的计算机语言则是「汇编语言」。
以上这两种皆被称为「低级语言」,而后来发展出比较接近「英文」的计算机语言称为「高级语言」。
也就是说,越接近人的语言方式的计算机语言就越「高阶」;越是接近机械使用的0与1表达方式的计算机语言就越「低阶」。
由于低级语言是与机械「沟通」最直接的方式,所以需要的组译过程会较简化与快速,对计算机硬件的控制也较直接,因此能够彻底的发挥计算机的功能,制作出来的程序软件所占用的内存空间也较小。
低级语言的缺点就是程序不容易理解,也不容易编写。
越高阶的语言就越接近人沟通的语言方式,所需要的组译过程就相对的增加复杂度,不过这些组译工作都是由编译程序自动执行的,所以不必太担心。
由于越高阶的语言所需要的组译工作越复杂,因此制作成的程序软件所占用的内存空间也相对较大。
高级语言的好处就是编写起来较轻松容易,而且容易阅读与理解。
低级语言
机械语言[MachineLanguage]:
「机械语言或」也称为「机器语言」,就是前面一直在说明这个以电来表示0或1所制定给计算机直接使用的「语言」。
机械语言看起来就像这样…
汇编语言[AssemblyLanguage]:
使用机械语言来写程序谈何容易,所以就有了一种「组译程序」,让人们可以直接用「代码」来设计程序,再经过「组译程序」翻译成机械语言让计算机执行。
这种以「代码」组合方式的语言就是「汇编语言」。
汇编语言看起来就像这样…
B80300MOVAX,0003
CD10INT10
CD20INT20
使用像这样的「代码」组合而成的「文章」,我们称原始程序,此时计算机还不能够执行,还必须经过组译程序翻译成「机械语言」。
虽然汇编语言已经比原始的「机械语言」要方便许多,但仍然是不太容易学习与理解,所以就渐渐发展出越来越多让人能容易学习与理解的「高级语言」。
高级语言
使用低级语言必须要写上好多好长才能让计算机执行的程序,若使用高级语言则只要简短的几句就可以办到...然后「组译程序」会自动翻译成一大串的机械语言。
编写完成的原始程序必须以编译程序进行组译,成为一个机械语言程序档案(可执行文件)之后,计算机才能执行该程序。
有许多高级语言不但能使用「编译程序」组译成可执行文件,也可以用一种叫「直译器」的程序直接执行刚写好的程序。
若不使用直译器就必须在每次组译完成并执行之后,从中发现错误,再修改原始程序,然后再用编译程序进行组译一次。
这样的动作必须做好几次,直到程序错误完全排除并能正常执行为止。
原始程序透过「直译器」执行时,速度会明显减慢许多,但好处就是可以边写程序边修改错误,然后当确定所写的程序可正常执行之后,再用编译程序进行组译,如此可以节省许多程序除错的时间。
以下各种语言的编译程序与直译器,都曾经有过许多种不同的版本,不同版本之间所使用的指令和语法结构都大同小异。
在微软公司发展出图型化操作使用接口的Windows操作系统之后,许多在该操作系统环境下的程序语言版本就因应而生。
在此之前的计算机语言则都还是使用MS-DOS操作系统。
这种在Windows操作系统之下所使用的计算机语言通常都会在前面加一个「Visual」,例如:
VisualBasic、VisualC++…等等。
Visual的意思是:
可视化的;形象化的;直观的。
Visual版本的计算机语言,使程序编写比以前MS-DOS版本的计算机语言还要更容易与方便。
使用的指令和语法结构与传统MS-DOS版本的计算机语言类似,主要的不同在于能以可视化的图型工具来制作程序画面,使得传统繁杂的画面设计流程只需要使用鼠标操作就能轻松完成。
BASIC:
这是个最典型的高级语言。
Basic是「Beginner'sAll-purposeSymbolicInstructionCode」的缩写,它的完整原文意思是指「初学者通用符号脚本」。
Basic刚好正是意为「基础;基本」的一个英文字。
Basic使用一般的英文单字作为指令,而且语法也相当容易理解,所以很适合初学计算机的用户。
初学者可以先藉由了解Basic的指令和语法结构来练习程序设计的技巧与原则,所以有许多学校或计算机语言教学机构都喜欢以此语言来当做入门教学课程。
可以把Basic当成是学习程序设计的入门语言。
Code:
*以下是一个简单的Basic程序例子…*
For I=2 to 9 Step 1
For J=2 to 9 Step 1
Print I ;“*”J ;“=”; I*J
Next J
Next I
这个Basic程序将印(显示)出一个九九表在屏幕上。
FORTRAN:
可以算是第一个被发展出来的高级语言。
FORTRAN是「FormulaTranslation」这两个字前面几个英文字母的组合简写,意思是「公式转译」。
由IBM公司在1950年开始发展,于1957年正式推出。
由于FORTRAN在数学方面的运算功能特别好,所以主要用在科学与工程方面。
但是由于该语言本身缺乏结构性功能,目前已经很少人使用。
COBOL:
COBOL是「CommonBusinessOrientedLanguage」的缩写,意思是「通用商业语言」,由名称就知道这是专门为商业上的应用而设计的计算机语言。
COBOL的语法十分英语化,所以使用COBOL编写程序需要记较长的英文单字,但总比记一大堆密密麻麻的0与1要容易得多,指令的格式也十分像叙述句,所以相对于其他的计算机语言,COBOL的程序相当容易阅读与理解。
PASCAL:
Pascal是十七世纪时代的一位数学家,PASCAL程序语言以他的姓而命名。
Pascal是类似Basic的一种通用型程序语言,但是比Basic更具有良好的结构性功能,适合于各种不同的应用,使用者可就此发展各式各样的应用软件。
C语言:
C语言是AT&T贝尔实验室的两位程序设计师于1970年所发展出来的,当时他们是为了要设计一种叫「UNIX」的操作系统而开发出命名为C的多功能计算机程序语言。
UNIX是一种可供多人同时使用的服务器操作系统,操作方式与古老的MS-DOS相似,都是以文字指令方式操作的;可以将MS-DOS想象成是精简型的UNIX,不同之处是DOS只能提供单人单机始用。
现在有许多网页服务器都是使用UNIX或其他被称为Unix-Like的其他兼容操作系统(例如:
Linux)。
C语言有一个特点,它本身其实算是是一种高级语言,然而却能做到低级语言的许多功能,再加上直接与汇编语言配合使用,C语言几乎可以用来发展任何型态的软件、做到任何计算机程序的功能,所以有人也称它为「中阶语言」。
有许多计算机操作系统软件都是以C语言发展出来的。
而且同一个C语言的源代码可以拿到不同的计算机系统中用编译程序再进行组译一次就可以用,只需要做很小的修改或甚至不必再修改。
因此,目前C语言在全世界广泛地受到程序设计师的喜爱,几乎每一种计算机系统都有C语言的编译程序。
Windows版本的C语言有:
微软公司推出的VisualC++,和Borland公司推出的BorlandC++。
Delphi:
Delphi是由美国Borland(现已改名为Inprise)公司于1995年推出,在Windows系统下使用的一个快速应用程序开发工具,以希腊的一个古都而命名。
Delphi是由早期MS-DOS系统下的PASCAL演进发展而来的,透过Delphi可开发各种不同层面的应用程序。
这一套程序开发工具自1995年3月推出以来,在国外造成相当大的震撼,某国外杂志甚至将其称为『VisualBasic杀手』。
Delphi最大的优点在于程序所编译出来的执行档是纯粹的执行档,号称比VisualBasic执行速度快5~10倍,对于热爱Windows窗口环境,但却又不满于执行效率的程序设计师而言,除了VisualBasic、VisualC++之外,终于有了另一种选择,爱好Delphi这种介于C与Basic语言的程序设计师也越来越多。
数据库程序语言
这种专门用来处理以计算机建立数据文件的数据库程序语言,有许多诸如数据库建立、检索、查阅、删除…等功能,可以不必再编写长串程序代码就能以类似「选项设定」的「交谈」方式让计算机自动转译程序代码。
这种「交谈」方式是计算机会提出各种问题让你输入或选择你所需要的设定内容,例如数据域的数目与种类,是文字数据还是数字数据,数据长度是几个字…等等。
数据库程序语言比前面那些通用类型的计算机语言还更高阶,使用这种计算机语言来设计数据库管理方面的应用程序最为合适。
以下是较常见的数据库程序语言。
dBase:
这可以说是元老级的数据库语言,从早期的DOS操作系统时期就相当受到程序设计师的喜爱,直到现在的VisualdBase还是相当受欢迎。
dBase所采用的指令语法非常口语化,使用起来很容易,几个小时的学习就能制作出一个简易的数据库管理程序,例如「客户数据管理」。
在Windows尚未流行的DOS时代(大约是1990年代)当年许多使用古代16位PC的工商企业与政府机关等团体,以计算机进行自动化数据管理,所使用的程序有大多数都是用dBase设计出来的应该软件。
FoxPro:
这是微软公司所推出的数据库程序开发工具软件,有Macintosh(麦金塔)、UNIX、MS-DOS、Windows四种操作系统版本,程序开发者在上述任何一种操作系统平台上开发程序,都能很容易地将原始程序移植到不同操作系统的计算机上面执行。
Windows版本的FoxPro加入可视化图型操作接口,称为VisualFoxPro。
FoxPro是属于交谈式的程序语言,使用者下达命令之后,由FoxPro直译器转换成处理数据库的动作,然后储存成档案,便能成为数据库的管理程序。
FoxPro所提供的项目管理程序,能让用户将程序编译成独立可执行的执行档,而不需要先执行FoxPro软件就能独立执行。
SQL︰
SQL是「StructuredQueryLanguage」的缩写,意思是「结构化查询语言」,由IBM公司在1970年所发展出来,用在「关系型索引数据库」当中的一种数据库查询语言。
利用SQL可以定义数据库的结构、指定数据库表格,以及字段型态与长度、新增数据、修改数据、删除数据、查询数据,以及建立各式复杂的表格关连。
透过这种结构化查询语言,可省去许多设计长串繁杂程序代码的时间。
目前的数据库系统,如VisualFoxPro、VisualdBASE,甚至VisualBasic等语言,都提供了SQL语言的功能。
网页应用程序语言
也有专门应用在动态产生网页信息的程序语言。
HTML:
HTML是「HyperTextMarkupLanguage」的简写,意思是「超文本卷标语言」。
这种语言不需要经过编译程序的组译过程,而是以网页浏览器程序直译执行,所显示出来的结果即是一页页图文并茂的网页。
HTML与一般的程序语言非常不同,它的内容实际上是纯文本文件,加入许多代表不同功能的「卷标」来产生文字的字体、字型、颜色等不同变化;网页上的图型也是以加入具有显示图片功能的卷标方式编写的,除此之外还有播放音乐、重复动作之动态图…等功能的各种卷标。
这里有个HTML语法的例子:
大家好!
我是初学者
是指定红色的6倍大字体卷标
大家好!
是要在浏览器上显示的文字
是指定该卷标的功能到此结束
这行HTML卷标会产生一个显示红色6倍大的「大家好!
」,接着后面是显示「我是初学者」的黑色小字。
大家好!
我是初学者
HTML的网页显示功能很有限,所以有了其他辅助性的语言,用来与HTML搭配产生能与用户互动的「动态网页」。
以下是用以辅助HTML的各种语言。
JavaScript:
Java是以「爪哇」产的咖啡而命名,Script则是「剧本」的意思。
可以想象用这种脚本所写的「文章」,其实就是要求网页浏览器依照指示做出「表演」的「剧本」。
JavaScript所使用的指令语法类似Basic,然而却是内嵌在HTML文件里运作,它能让网页内容、图型、颜色、位置随时依程序内容指示而更动,而这是仅用HTML的网页无法做到的。
JAVA:
由美国升扬公司的两位工程师所开发出来的,原本的目的是为了开发在一般电子设备产品上所使用的新程序语言,并不是专为网页设计而发展出来的。
由于JAVA能在各式各样不同计算机系统上执行,这种特性很适合需要在各种不同操作系统上显示的「超文本文件」网页,所以后来JAVA语言就逐渐在WWW被广泛地应用起来。
JAVA是类似C的一种语言,也是需要经过编译程序进行转译,不过并不是转译为可以让计算机直接执行的「机械语言」,而是译成一种透过网页浏览器直译执行的程序语言。
网页所使用的Java应用程序称为「JavaApplet」是个独立的程序档案,由浏览器从服务器下载回来后执行,这与内嵌于HTML文件中的JavaScript是完全不同的两种语言。
交互式网页语言:
除了以上这些以外,还有许多种专门使用在利用网页来与全世界各地用户进行双向信息互动的各种程序语言。
与直接由浏览器执行的