编程的语言分类
一、 Pascal 语言:
Pascal 是一种计算机通用的高级程序设计语言,由瑞士 Niklaus Wirth 教授六十年代末设计并创立的。
Pascal 的主要特点有:严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强等特点。
由于上述特点, Pascal 可以方便用于描述各种算法和数据结构。对于程序设计的初学者, Pascal 语言有益于培养良好的程序设计风格和习惯。 IOI (国际奥林匹克信息学竞赛)把 Pascal 语言作为三种程序设计语言之一。 NOI (全国奥林匹克信息学竞赛)把 Pascal 语言定为唯一提倡的程序设计语言,在大学中 Pascal 语言也常常被用作学习数据结构与算法的数学语言。
二、 C 语言:
C 语言是介于汇编语言和高级语言之间的语言,属于高级语言,也称为中级语言,是集汇编和高级语言优点于一身的程序设计语言。于 1972 年在美国贝尔实验室里问世。早期的 C 语言主要用于 UNIX 系统。由于 C 语言的强大功能和各方面的优点逐渐为人们认识,到了九十年代, C 语言开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到广泛的应用。成为当代最优秀的程序设计语言之一。
C 的特点
1 . 是一种结构化语言。层次清晰,便于按模块化方式组织程序,易于调试和维护。
2 . C 语言的表现能力和处理能力极强。不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,它还可以直接访问内存的物理地址,进行位级别的操作。
3 . 由于 C 语言实现对硬件的编程操作,所以既可用于系统软件的开发,也适合于应用软件的开发。 C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类计算机上,从而形成了多种版本的 C 语言。
4 . 由于 C 语言允许直接对位、字节和地址进行操作,能实现汇编语言的大部分功能。
5 . 目标代码质量高,程序执行效率高。
总体上来说, C 语言的优点是简洁、紧凑、使用方便、灵活、易于学习和应用。仅有 32 个关键字。 9 种控制语句,程序的书写形式也很自由。
C 语言的弱点:非强类型;语法限制不严格,使得编程者无法过多地依赖 C 编译程序去查错;缺少实时检查,如数组越界等。
从严格上来说, C 语言是块结构语言,这是因为它在结构上类似于 ALGOL 、 Pascal 和 Modula-2 。从技术上讲,块结构语言允许在过程和函数中定义过程和函数。因为 C 语言不允许在函数中定义函数,所以不能称为通常意义上的块结构语言。
C 语言作为一门面向过程的计算机语言,至今已有三十多年历史,应用广泛,无论是 Windows 还是 Linux ,你所看到的底层都是用 C 写的。大部分的网络协议也都是用 C 实现的。你看到的最漂亮的游戏画面也是用 C 实现的,工业控制程序也是用 C 实现的。不过 C 不是万能,只是某些方面它适用而已。
三、 C ++语言
C ++是于 1986 年由 AT&T 贝尔实验室开发的,语言开发的目的在于通过数据封装减少程序变量的副作用,从而降低程序的复杂性并提高程序的可靠性。(笔者曾经听到的开发 C ++的目的是由于懂得 C 语言的人越来越多,所以需要再出一门更难的、比 C 语言强大的语言,才能保住饭碗, so 。 C ++出世啦) C ++是 C 语言的直接扩展, C ++的多继承机制能更好地描述对象的属性和行为。
C ++是 C 的扩展,但 C ++可以作为一种全新的语言来看。
C++ 的特点:面向对象、继承、封装、多态性。
由于 C ++是 C 的扩展,所以也具有 C 的特点。
C ++在 C 的基础上,加入了面向对象编程思想,也就决定了 C ++的效率在某一方面是不如 C 的。比如定义一种类型, C ++用类( Class )来封装,而 C 可能就直接几个变量的组合就成了一个结构体( Struct ),类不仅具有成员变量,还具有成员函数等,在精细的比较其效率时, C 会比 C ++的效率要高。但由于时代的发展,项目或工程的庞大化,基于面向对象的思想显然更能适应。即 C ++在这方面能比 C 要做得更漂亮。现在不少系统级编程都是用 C ++实现,许多应用级别的软件也是用 C ++实现。
一、 Pascal 语言:
Pascal 是一种计算机通用的高级程序设计语言,由瑞士 Niklaus Wirth 教授六十年代末设计并创立的。
Pascal 的主要特点有:严格的结构化形式、丰富完备的数据类型、运行效率高、查错能力强等特点。
由于上述特点, Pascal 可以方便用于描述各种算法和数据结构。对于程序设计的初学者, Pascal 语言有益于培养良好的程序设计风格和习惯。 IOI (国际奥林匹克信息学竞赛)把 Pascal 语言作为三种程序设计语言之一。 NOI (全国奥林匹克信息学竞赛)把 Pascal 语言定为唯一提倡的程序设计语言,在大学中 Pascal 语言也常常被用作学习数据结构与算法的数学语言。
二、 C 语言:
C 语言是介于汇编语言和高级语言之间的语言,属于高级语言,也称为中级语言,是集汇编和高级语言优点于一身的程序设计语言。于 1972 年在美国贝尔实验室里问世。早期的 C 语言主要用于 UNIX 系统。由于 C 语言的强大功能和各方面的优点逐渐为人们认识,到了九十年代, C 语言开始进入其他操作系统,并很快在各类大、中、小和微型计算机上得到广泛的应用。成为当代最优秀的程序设计语言之一。
C 的特点
1 . 是一种结构化语言。层次清晰,便于按模块化方式组织程序,易于调试和维护。
2 . C 语言的表现能力和处理能力极强。不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构,它还可以直接访问内存的物理地址,进行位级别的操作。
3 . 由于 C 语言实现对硬件的编程操作,所以既可用于系统软件的开发,也适合于应用软件的开发。 C 语言还具有效率高,可移植性强等特点。因此广泛地移植到了各类计算机上,从而形成了多种版本的 C 语言。
4 . 由于 C 语言允许直接对位、字节和地址进行操作,能实现汇编语言的大部分功能。
5 . 目标代码质量高,程序执行效率高。
总体上来说, C 语言的优点是简洁、紧凑、使用方便、灵活、易于学习和应用。仅有 32 个关键字。 9 种控制语句,程序的书写形式也很自由。
C 语言的弱点:非强类型;语法限制不严格,使得编程者无法过多地依赖 C 编译程序去查错;缺少实时检查,如数组越界等。
从严格上来说, C 语言是块结构语言,这是因为它在结构上类似于 ALGOL 、 Pascal 和 Modula-2 。从技术上讲,块结构语言允许在过程和函数中定义过程和函数。因为 C 语言不允许在函数中定义函数,所以不能称为通常意义上的块结构语言。
C 语言作为一门面向过程的计算机语言,至今已有三十多年历史,应用广泛,无论是 Windows 还是 Linux ,你所看到的底层都是用 C 写的。大部分的网络协议也都是用 C 实现的。你看到的最漂亮的游戏画面也是用 C 实现的,工业控制程序也是用 C 实现的。不过 C 不是万能,只是某些方面它适用而已。
三、 C ++语言
C ++是于 1986 年由 AT&T 贝尔实验室开发的,语言开发的目的在于通过数据封装减少程序变量的副作用,从而降低程序的复杂性并提高程序的可靠性。(笔者曾经听到的开发 C ++的目的是由于懂得 C 语言的人越来越多,所以需要再出一门更难的、比 C 语言强大的语言,才能保住饭碗, so 。 C ++出世啦) C ++是 C 语言的直接扩展, C ++的多继承机制能更好地描述对象的属性和行为。
C ++是 C 的扩展,但 C ++可以作为一种全新的语言来看。
C++ 的特点:面向对象、继承、封装、多态性。
由于 C ++是 C 的扩展,所以也具有 C 的特点。
C ++在 C 的基础上,加入了面向对象编程思想,也就决定了 C ++的效率在某一方面是不如 C 的。比如定义一种类型, C ++用类( Class )来封装,而 C 可能就直接几个变量的组合就成了一个结构体( Struct ),类不仅具有成员变量,还具有成员函数等,在精细的比较其效率时, C 会比 C ++的效率要高。但由于时代的发展,项目或工程的庞大化,基于面向对象的思想显然更能适应。即 C ++在这方面能比 C 要做得更漂亮。现在不少系统级编程都是用 C ++实现,许多应用级别的软件也是用 C ++实现。
这里要注意一点,就是
C
++并不是完全的面向对象语言。它是提供了面向对象的模型以及思路,但是同时兼容了面向过程的模型。
四、 Java 语言
Java 语言来自于 Sun 公司的一个叫 Green 的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们就可以把 email 发给电冰箱、电视机等家用电器。对他们进行控制和信息交流。开始,准备用 C ++,但 C++ 太复杂,安全性差,最后用一种新的语言 Oak ( Java 的前身), Oak 是一种用于网络的精巧而安全的语言, Sun 公司曾依此投标一个交互式电视项目,但被 SGI 打败。可怜的 Oak 几乎无家可归,恰巧这时 Mark Ardreesen 开发的 Mosaic 和 Netscape 启发了 Oak 项目组成员,他们用 (Java) 编制了 HotJava 浏览器,得到了 Sun 首席执行官 Scott McNealy 的支持,触发了 Java 进军 Internet 。 Java 的取名有一段趣闻:有一天,几位 Java 成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着 Java (爪哇)咖啡,有一个人灵机一动说就叫 Java 怎样,得到了其他人的赞赏,于是, Java 这个名字就这样传开了。
Java 的特点:
1 . 简单性:风格类似于 C++ , Java 摒弃了 C++ 中容易引发程序错误的地方,如指针和内存管理。
2 . 面向对象: Java 是一种完全面向对象语言。从这点来看, Java 类似于 SmallTalk ,但其特性、尤其是适用于分布式计算环境的特性远远超越了 SmallTalk 。
3 . 分布式: Java 包括一个支持 HTTP 和 FTP 等基于 TCP/IP 协议的子库。因此, Java 应用程序可凭借 URL 打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
4 . 健壮: Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。 Java 自己操纵内存减少了内存出错的可能性。
5 . 结构中立: Java 将程序编译成一种结构中立的中间文件格式。只要有 Java 运行系统的机器都执行这种中间代码。这种中间语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
6 . 安全:
1 )删除了香指针和手动释放内存等功能,避免了非法内存操作。
2 )当 Java 用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来。
Java 在机器上执行前,要经过很多测试,它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。
7 . 可移植的:同体系结构无关的特性使得 Java 应用程序可以在配备 Java 解释器和运行环境的任何计算机系统上运行。任何 Java 代码会被解释成一种中间语言,然后通过不同机子的特定环境(如机器指令)运行程序。实现方便移植的特点。
8 . 解释性。 Java 解释器能直接运行目标代码指令。链接程序通常比编译程序所需资源少。
9 . 高性能。如果解释器速度不慢, Java 可以在运行时直接将目标代码翻译成机器指令。 Sun 用直接解释器一秒钟内可调用 300,000 个过程。
10 . 多线程: Java 提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的更大好处是更好的交互性能和实时控制性能。
11 . 动态:动态特性允许程序动态地装入运行过程中所需要的类。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。
Java 在诞生之后不久,便受到广大群众的欢迎,甚至有人说出有了 Java ,可以不要 C/C++ 了。一度把 Java 提到了很高的地位。这当然是对 Java 的一种赞赏,只是有点过了。到今天, Java 依然不能取代 C , C++ ,而且还出现了新的对手 ――.Net (后面将会介绍)。
Java 目前主要应用: Web 浏览器、网络应用系统。
五、 C# 语言。
C# 是一种精确、简单、类型安全、面向对象的语言。说到 C# ,就不得不先简单介绍一下 .net 。到底什么是 .net 呢,按照微软总裁兼首席执行官 Steve Ballrner 把它定义为: .Net 代表一个集合,一个环境,它可以作为平台支持下一代 Internet 的可编程结构。 C# 是 .net 的代表语言。
C# 的特点:
1. 完全面向对象。
2. 支持分布式,之所以有 C# ,是因为微软相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上。所以 C# 一出生就注定了能很好解决分布式问题。
3. 跟 Java 类似, C# 代码经过编译后,成为了一种 IL (中间语言)。在运行时,再把 IL 编译为平台专用的代码。
4. 健壮, C# 在检查程序错误和编译与运行时错误一点也不逊于 Java , C# 也用了自动管理内存机制。
5. C# 不像 Java 那样完全摒弃了指针和手动内存管理。 C# 默认情况下是不能使用指针的,程序员在有必要时可以打开指针来使用。这样可以保证编程的灵活性。
6. 安全性: C# 的安全性是有 .net 平台来提供的。 C# 代码编译后成为 IL 语言。是一种受控代码, .net 提供类型安全检查等机制保证代码是安全的。
7. 可移植性:由于 C# 使用类似 Java 的中间语言机制。使得 C# 也跟 Java 类似,可以很方便的移植到其他系统。在运行时,再把中间代码编译为适合特定机器的代码。
8. 解释性: C# 也是一种特殊的解释性语言。
9. 高性能: C# 把代码编译成中间语言后,可以高效的执行程序。
10. 多线程:与 Java 类似,可以由一个主进程分出多个执行小任务的多线程。
11. 组件模式: C# 很适合组件开发。各个组件可以由其他语言实现的,然后集成在 .net 中。
C# 是在 Java 流行起来后所诞生的一种新的语言。由于微软在操作系统上占有很大的优势。在以往的开发中累积了不少经验,所形成的 .net 平台,所以 C# 在 Windows 方面可以说比 Java 具有更大的优势。如果单纯从技术上来讲, C# 在网络编程上可以与 Java 匹敌。 C# 还在 Windows Forms 也有一定的优势。
C# 是一种非常类似于 C++ 的语言,风格是更接近于 Java ,不管是 C++ 程序员还是 Java 程序员,都可以很方便的转到 C# 上来。
C# 的强大是依赖于 .net 的发展,而 .net 的发展是看微软在 .net 上的决心和投入有多少。从 Windows 2003 和 Vista 系统可以看出(前者内置 .net1.1 ,后者内置 .net2.0 。) .Net 在 Windows 编程中具有重要的战略意义。
C# 目前主要是应用在网络编程上,其他领域比如数据库、窗体编程,都逐渐在增大
四、 Java 语言
Java 语言来自于 Sun 公司的一个叫 Green 的项目,其原先的目的是为家用消费电子产品开发一个分布式代码系统,这样我们就可以把 email 发给电冰箱、电视机等家用电器。对他们进行控制和信息交流。开始,准备用 C ++,但 C++ 太复杂,安全性差,最后用一种新的语言 Oak ( Java 的前身), Oak 是一种用于网络的精巧而安全的语言, Sun 公司曾依此投标一个交互式电视项目,但被 SGI 打败。可怜的 Oak 几乎无家可归,恰巧这时 Mark Ardreesen 开发的 Mosaic 和 Netscape 启发了 Oak 项目组成员,他们用 (Java) 编制了 HotJava 浏览器,得到了 Sun 首席执行官 Scott McNealy 的支持,触发了 Java 进军 Internet 。 Java 的取名有一段趣闻:有一天,几位 Java 成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着 Java (爪哇)咖啡,有一个人灵机一动说就叫 Java 怎样,得到了其他人的赞赏,于是, Java 这个名字就这样传开了。
Java 的特点:
1 . 简单性:风格类似于 C++ , Java 摒弃了 C++ 中容易引发程序错误的地方,如指针和内存管理。
2 . 面向对象: Java 是一种完全面向对象语言。从这点来看, Java 类似于 SmallTalk ,但其特性、尤其是适用于分布式计算环境的特性远远超越了 SmallTalk 。
3 . 分布式: Java 包括一个支持 HTTP 和 FTP 等基于 TCP/IP 协议的子库。因此, Java 应用程序可凭借 URL 打开并访问网络上的对象,其访问方式与访问本地文件系统几乎完全相同。
4 . 健壮: Java 致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。 Java 自己操纵内存减少了内存出错的可能性。
5 . 结构中立: Java 将程序编译成一种结构中立的中间文件格式。只要有 Java 运行系统的机器都执行这种中间代码。这种中间语言被设计在虚拟机上运行,由机器相关的运行调试器实现执行。
6 . 安全:
1 )删除了香指针和手动释放内存等功能,避免了非法内存操作。
2 )当 Java 用来创建浏览器时,语言功能和浏览器本身提供的功能结合起来。
Java 在机器上执行前,要经过很多测试,它经过代码校验,检查代码段的格式,检测指针操作,对象操作是否过分以及试图改变一个对象的类型。
7 . 可移植的:同体系结构无关的特性使得 Java 应用程序可以在配备 Java 解释器和运行环境的任何计算机系统上运行。任何 Java 代码会被解释成一种中间语言,然后通过不同机子的特定环境(如机器指令)运行程序。实现方便移植的特点。
8 . 解释性。 Java 解释器能直接运行目标代码指令。链接程序通常比编译程序所需资源少。
9 . 高性能。如果解释器速度不慢, Java 可以在运行时直接将目标代码翻译成机器指令。 Sun 用直接解释器一秒钟内可调用 300,000 个过程。
10 . 多线程: Java 提供的多线程功能使得在一个程序里可同时执行多个小任务。多线程带来的更大好处是更好的交互性能和实时控制性能。
11 . 动态:动态特性允许程序动态地装入运行过程中所需要的类。在运行时确定引用的好处是可以使用已被更新的类,而不必担心会影响原有的代码。如果程序连接了网络中另一系统中的某一类,该类的所有者也可以自由地对该类进行更新,而不会使任何引用该类的程序崩溃。
Java 在诞生之后不久,便受到广大群众的欢迎,甚至有人说出有了 Java ,可以不要 C/C++ 了。一度把 Java 提到了很高的地位。这当然是对 Java 的一种赞赏,只是有点过了。到今天, Java 依然不能取代 C , C++ ,而且还出现了新的对手 ――.Net (后面将会介绍)。
Java 目前主要应用: Web 浏览器、网络应用系统。
五、 C# 语言。
C# 是一种精确、简单、类型安全、面向对象的语言。说到 C# ,就不得不先简单介绍一下 .net 。到底什么是 .net 呢,按照微软总裁兼首席执行官 Steve Ballrner 把它定义为: .Net 代表一个集合,一个环境,它可以作为平台支持下一代 Internet 的可编程结构。 C# 是 .net 的代表语言。
C# 的特点:
1. 完全面向对象。
2. 支持分布式,之所以有 C# ,是因为微软相信分布式应用程序是未来的趋势,即处理过程分布在客户机和服务器上。所以 C# 一出生就注定了能很好解决分布式问题。
3. 跟 Java 类似, C# 代码经过编译后,成为了一种 IL (中间语言)。在运行时,再把 IL 编译为平台专用的代码。
4. 健壮, C# 在检查程序错误和编译与运行时错误一点也不逊于 Java , C# 也用了自动管理内存机制。
5. C# 不像 Java 那样完全摒弃了指针和手动内存管理。 C# 默认情况下是不能使用指针的,程序员在有必要时可以打开指针来使用。这样可以保证编程的灵活性。
6. 安全性: C# 的安全性是有 .net 平台来提供的。 C# 代码编译后成为 IL 语言。是一种受控代码, .net 提供类型安全检查等机制保证代码是安全的。
7. 可移植性:由于 C# 使用类似 Java 的中间语言机制。使得 C# 也跟 Java 类似,可以很方便的移植到其他系统。在运行时,再把中间代码编译为适合特定机器的代码。
8. 解释性: C# 也是一种特殊的解释性语言。
9. 高性能: C# 把代码编译成中间语言后,可以高效的执行程序。
10. 多线程:与 Java 类似,可以由一个主进程分出多个执行小任务的多线程。
11. 组件模式: C# 很适合组件开发。各个组件可以由其他语言实现的,然后集成在 .net 中。
C# 是在 Java 流行起来后所诞生的一种新的语言。由于微软在操作系统上占有很大的优势。在以往的开发中累积了不少经验,所形成的 .net 平台,所以 C# 在 Windows 方面可以说比 Java 具有更大的优势。如果单纯从技术上来讲, C# 在网络编程上可以与 Java 匹敌。 C# 还在 Windows Forms 也有一定的优势。
C# 是一种非常类似于 C++ 的语言,风格是更接近于 Java ,不管是 C++ 程序员还是 Java 程序员,都可以很方便的转到 C# 上来。
C# 的强大是依赖于 .net 的发展,而 .net 的发展是看微软在 .net 上的决心和投入有多少。从 Windows 2003 和 Vista 系统可以看出(前者内置 .net1.1 ,后者内置 .net2.0 。) .Net 在 Windows 编程中具有重要的战略意义。
C# 目前主要是应用在网络编程上,其他领域比如数据库、窗体编程,都逐渐在增大