第 1章 预备知识
第 1章 预备知识
1.1 目前流行的编程语言简介
1.2 从 C/C++到 Java
第 1章 预备知识
1.1 目前流行的编程语言简介
随着信息技术的快速发展与进步,电脑已渐渐成
为当前人类社会中最重要的信息获取工具之一。同时
由于国际互联网 (Internet)与其上相关应用系统的快速普
及,可以说我们当前正处于一个“信息爆炸”时代。
不同国家、行业被 Internet连接在一起,相互通信,共
享全世界的计算机资源和信息。
第 1章 预备知识
如何保证不同格式的数据或信息安全、高速、自由的
交流、传输就成为一个需迫切解决的问题。 TCP/IP网
络传输协议为我们提供了统一的传输协议,但该协议
只是允许程序之间以无格式的二进制数据流来进行信
息的传送,对语义的解释及维护还需程序双方共同进
行,因而难以实现程序代码交换。 1996年 Sun公司 Java
语言的正式发表可以说是 Internet的一次技术革命,它
实现了程序的运行与平台无关,在网络上不仅可以进
行无格式的数据信息交换,还可以进行程序交换。自
从 Java推出以后,马上在全世界范围得以普及,现在,
越来越多的程序设计人员开始用 Java进行程序开发。
第 1章 预备知识
在国外, 80%以上的企业都在利用 Java技术, 各个
数据中心大大小小的机器上更是离不开 Java。 最近, 我
们常常能从广播上听到, 全球各手机公司都在利用 Java
推出其第三代手机, Sony公司所做的游戏机 (以后能上
网 )里也嵌入了 Java。 不远的将来, 我们在下班的路上
驾驶着汽车, 甚至远在千里之外, 将仍可以调节家中空
调的温度, 可以控制家里的电饭煲给亲人做饭 ……这一
切, 听起来是那么不可思议, 但有了互联网, 有了 Java
语言, 有了其他先进的技术的结合, 它们就会渐渐成为
现实 。 难怪比尔 · 盖茨发出感叹:, Java是最卓越的程
序设计语言 !,
第 1章 预备知识
为了使读者对 Java有一个更好的理解, 我们首先介
绍 C,C++的一些基本特点, 比较二者与 Java的一些差
异, 为后续的学习作准备 。
第 1章 预备知识
我们知道, 当前的程序开发语言多种多样, 比如
说有微软公司 (Microsoft)的 VC,VB及 Borland公司的
C++ Builder,Delphi,Sun公司的 Java等等 。 其中, 最
典型的当属 C,C++及 Java。 C语言曾是国际上广泛流
行的计算机高级语言 。
第 1章 预备知识
1.1.1 C/C++的一些概念
C语言是贝尔实验室的 Dennis Ritchie在 B语言的基
础上开发出来的,于 1972年在一台 DEC PDP-11计算机
上实现了最初的 C语言。 C是作为 UNIX操作系统的开
发语言而开始广为人们所认识的。当今许多新的、重
要的操作系统都是用 C或 C++编写的。在过去 20年内,
C语言已经能够用在绝大多数计算机上了。由于 C语言
的一些显著特点,如与硬件无关、设计严谨,使得用 C
语言编写的程序移植到大多数计算机上成为可能。
第 1章 预备知识
到 20世纪 70年代末, C已经演化为现在所说的, 传
统的 C语言, 。 Kernighan及 Ritchie在 1978年出版的
,The C Programming Language,一书中全面地介绍了
传统的 C语言, 当前, 该书已经成为最权威的计算机学
术著作之一 。 C语言的不断发展导致出现了许多 C语言
版本, 虽然大多版本是类似的, 但通常都不兼容, 这
对希望开发出的代码能够在多种平台上运行的程序开
发者来说是一个严重的问题 。 为了明确地定义与机器
无关的 C语言, 1989年美国国家标准协会制定了 C语言
的标准 (ANSI C)。 Kernighan和 Ritchie编著的, The C
Programming Language,(第二版 )介绍了 ANSI C的全部
内容 。
第 1章 预备知识
C语言具有其独特的优点, 包括:
(1) 语言简洁, 紧凑, 使用方便, 灵活 。 C语言只有
32个关键字, 程序书写形式自由 。
(2) 丰富的运算符和数据类型 。
(3) C语言可以直接访问内存地址, 能进行位操作,
能够胜任开发操作系统的工作 。
(4) 生成的目标代码质量高, 程序运行效率高 。
(5) 可移植性好 。
第 1章 预备知识
虽说 C语言具有以上的一些优点, 但在实际的程序
开发过程中也暴露出了一些不足:
(1) C类型检查机制比较薄弱, 使得程序设计中的
一些错误不能在编译时被发现 。
(2) C本身几乎没有支持代码重用的语言结构, 因
此一个程序员精心设计的程序, 很难为其他程序共用 。
(3) 当程序的规模达到一定程度的时候, 程序员很
难控制程序的复杂性 。
第 1章 预备知识
为了满足管理程序的复杂性要求, 贝尔实验室的
Bjarne Stroustrup开始对 C进行改进和扩充 。 最初的成果
称为, 带类的 C”,1983年正式取名为 C++。 在经历了 3
次修订后, 于 1994年制定了 ANSI C++标准的草案 。 以
后又经过不断完善, 成为目前的 C++。 C++包含了整个
C,C是建立 C++的基础 。 C++包括 C的全部特征, 属性
和优点, 同时添加了面向对象编程 (OOP)的完全支持 。
第 1章 预备知识
1.1.2 从 C到 C++
经过上面的描述,大家对 C语言的优、缺点有了
一个具体的认识。 C语言从本质上说是属于过程性语言,
其程序设计方法也是遵从于结构化程序设计。结构化
程序设计的主要思想是功能分解并逐步求精,比如,
当一些任务非常复杂以至无法描述时,可以将它拆分
为一系列较小的功能部件,直到这些自完备的子任务
小到易于理解的程度。但是,采用结构化程序设计方
法的程序员很快发现,每一种相对于老问题的新方法
都要带来额外的开销,通常称这为重复投入。
第 1章 预备知识
基于可重用性的思想是指建立一些具有已知特性
的部件, 在需要时可以插入到程序之中 。 这可以说是
一种模仿硬件组合方式的做法, 当工程师需要一个新
的晶体管时, 当然不用自己去发明, 只要去电子市场
买一个就行了, 对于软件工程师来说, 在面向对象程
序设计出现之前, 一直缺乏具备这种能力的工具 。
C++语言包括过程性语言部分和类部分,类部分
是 C中所没有的,它是面向对象程序设计的主体。可想
而知,结构化程序设计随着 C++的出现也过渡到了面
向对象程序设计,所以从 C到 C++也是自然而然的事了。
第 1章 预备知识
不过, C语言程序设计的经验非常有益, 因为 C程
序设计开发锻炼了程序员进行抽象程序设计的能力,
这正是 C++更为抽象的概念和技术的基础 。 而且, C++
是 C语言的扩展, 它分享了 C的许多技术风格 。 程序员
使用 C的经验越丰富, 编写 C++程序也就越容易, 所以,
对 C的学习, 能够促进对 C++的学习, 换句话说, C++
的发展并没有完全抛弃 C的一些特点 。
第 1章 预备知识
1.1.3 面向对象初步知识
面向对象程序设计的本质是把数据和处理数据的
过程当成一个整体 ——对象 。 面向对象程序设计的实现
需要封装和数据隐藏技术, 需要继承和多态性技术 。
下面我们对这些概念作一描述 。
第 1章 预备知识
1,封装和数据隐藏
当一个工程师要安装一台电脑时, 他将各个设备
组装起来, 如果需要一个声卡时, 不需要用原始的集
成电路芯片和材料自己去做, 而是去电脑公司买一个
符合其需要的声卡就行了 。 工程师所关心的是声卡的
功能, 并不关心声卡内部的工作原理, 因为声卡是由
电子厂商所提供, 是自成一体的 。 这就是所谓的封装
性 ——无需知道封装单元内部是如何工作的 。 声卡的所
有属性都封装在声卡中, 不会扩展到声卡之外, 用户
无需知道其工作原理就可以有效地使用 。
第 1章 预备知识
面向对象的程序设计通过建立用户定义类型或类
支持封装性和数据隐藏 。 完好定义的类一旦建立, 就
可看成是完全封装的实体, 可以作为一个整体单元使
用 。 类的实际内部工作应当隐藏起来, 使用完好定义
的类的用户不需要知道类是如何工作的, 只要知道如
何使用它就行了 。
第 1章 预备知识
2,继承和重用
要制造新的电视机, 可以有两种选择:一种是从草
图开始, 另一种是对现有的型号加以改进 。 因为现有的
型号可能已经令人满意, 如果多加一个功能, 就会更加
完美, 因而电视设计人员决不会推倒重来, 一切从头开
始, 而是在原有的型号基础上增加一组电路或多加某些
芯片来增强其已有的功能, 完成之后, 新型号的电视机
就诞生了 。 这就是继承和重用的生活实例 。
面向对象的程序设计也采用继承和重用的思想:程
序可以在扩展现有类型的基础上声明新类型;新的子类
是从现有类型派生出来的, 称为派生类, 但已在原有类
的基础上增加了新的功能 。
第 1章 预备知识
3,多态性
类是通过继承的方法构造的, 采用多态性可为每
个类指定表现行为 。 举例来说, 学生类应该有一个计
算成绩的操作:对于中学生, 计算成绩的操作可表示
为对语文, 数学, 英语等课程成绩的计算;对于大学
生, 应可以继承中学生的基类, 计算成绩的操作表现
为对高等数学, 计算机, 大学物理等课程成绩的计算 。
实际的应用中, 继承和多态经常会用到, 这是因
为:有了继承性, 使得多个对象可以共享许多相似的
特征;有了多态性, 一个对象可以有其独特的多种表
现方式 。
第 1章 预备知识
1.2 从 C/C++到 Java
前面我们已讨论了 C及 C++语言的一些特点, 相信
大家对二者有了一定的认识 。
C++语言虽在计算机行业广为使用, 但它的复杂与
繁琐也令一般用户为之伤透脑筋 。 所以, 为使程序开
发或设计人员从 C++“返朴归真,, 就需开发一种全新
的程序设计语言 。
第 1章 预备知识
Java是由 Sun公司开发的新一代程序设计语言,正
在逐步成为 Internet应用的主力开发语言,成为 Internet
上的世界语。为了开拓消费类电子产品市场,Sun公司
于 1991年成立了一个项目开发小组,其小组负责人是
James Gosling。在研究开发过程中,Gosling感到消费
类电子产品和工作站产品的开发存在较大的差异:消
费类电子产品要求可靠性高、费用低、标准化、使用
简单,而工作站用户需要较强的计算能力,不考虑价
格以及操作的复杂性。消费类电子产品并不关心 CPU
的型号,只是要求整个系统与平台无关。
第 1章 预备知识
Gosling首先尝试从改写 C++编译器着手, 但在改
写过程中, 感到 C++无法满足要求, 这促使他打算开
发一个新的语言 ——后来命名为 Java。 该系统运行于一
个巨大的, 分布的, 异质的网络环境中, 以完成电子
设备之间的通信与协同工作 。 为达到此目的, 设计过
程中采用了虚机器码技术 (Virtual Machine Code)。 编好
的程序经过编译后产生的就是虚机器码, 其不能单独
运行 。 当操作系统安装了对应的解释器后, 可通过该
解释器解释执行虚机器码, 至此, 与平台无关的 Java
语言就产生了 。
第 1章 预备知识
Java的开发主要是以 C++作为蓝图, 因此它的大部
分语法与 C++相似, 但为了达到真正的面向对象, C++
中很多过程式程序设计语言必须舍弃掉 。 Java开发的
目标是期望其能成为一个简单, 但面向对象的程序语
言 。 为使读者有一个初步的印象, 我们用 C,C++,
Java 各 举 一 个 例 子 来 输 出 字 符 串, Welcome to
C/C++/Java World!”,读者可自行作一比较 。
第 1章 预备知识
● C语言实现:
#include <stdio.h>
main()
{
printf("Welcome to C World! ");
}
● C++语言实现:
#include <iostream.h>
void main()
{
cout<<"Welcome to C++ World! \n";
}
第 1章 预备知识
● Java语言实现:
public class A {
public static void main(String args[])
{
System.out.println("Welcome to Java World! ");
}
}