admin 管理员组文章数量: 887053
2024年1月25日发(作者:指针赋值为0)
计算机语言调查报告
一.当前主流计算机语言
语言特性对比表:
类型
静态/动态
支持面向过程
支持基于对象
支持范型
支持模板
支持面向对象
C
无类型
静态
是
否
否
否
否
C++
强类型
静态
是
是
否
是
是
JAVA
强类型
静态检验类型
否
否
是
否
是
NET
强类型
动态解释执行
否
是
是
否
是
RUBY
强类型
动态
否
是
否
否
否
JavaScript
强类型
动态
是
是
否
否
否
主流计算机语言发展史:
C语言优劣考
C语言由来
让我们先回顾一下历史。
电脑使用CPU指令,通过寄存器,内存等物件执行计算。最早的编程,是直接使用代
表CPU指令的机器码编写的。
直接使用二进制的数据编程,当然很容易出错。
于是,人们后来发明了一种方法,就是使用英语单词作为助记符,代表各条CPU指令。
这就是汇编语言。现在,程序员可以使用英语单词进行编程,然后使用一个解释程序,把汇编指令翻译成机器语言,再交给计算机执行。
1970年,UNIX操作系统的研制者丹尼斯·里奇(Dennis Ritchie)和肯·汤普逊(Ken
Thompson)为了更好地编写操作系统,发明了C语言。
C语言比汇编语言更先进。它使用了面向过程的编程范式。同时它仍是一门十分接近汇编语言,面向机器的编程语言。适合编写操作系统和其他直接操纵硬件硬件的编程。
面向过程编程范式
下面是我查到的过程式设计的定义:
过程式设计:
1、自上而下(top-down)的设计方式:是一个自顶向下,逐步求精的过程;
2、以main函数概括出整个应用程序需要做的事情,而main函数由对一系列的子函数的调用组成;
main中的每一个子函数都可以被精炼成更小的函数。重复这个过程,即可完成一个过程式的设计;
3、特征是以函数为中心,以函数作为划分程序的基本单位,数据往往处于从属地位。
过程式设计的优点:易于掌握与理解,符合人们的思维习惯;
过程式设计的缺点:
1、不能适应问题比较复杂,或者需求经常变化的情况;
2、数据与操作分离开,对数据与操作的修改变得很困难;
3、程序架构的依赖关系不合理:main函数依赖于子函数,子函数又依赖于更小的子函数;
而子函数往往是细节的实现,这些实现是经常变化的,造成的结构就是:
程序的核心逻辑依赖于外延的细节,一个细节上的小改动,会引起一系列的变动。
我对于面向过程编程范式是这样理解的:
面向过程编程,就是使用函数代表处理的过程。这些函数使用的数据,要么是参数,要么是外部的数据。
使用函数编程,这看上去很像函数式编程。但面向过程的编程范式不同于函数式编程。函数式编程的函数,一般不使用外部的数据。不维持外部的状态。这有很多优点,但也同样有了很大的局限性,不似面向过程编程这样方便。
C语言就是典型的面向过程编程语言。它通过函数抽象了过程处理。函数,就是C语言的接口。
C语言中,数据常常作为全局的变量保存起来。这样,使用C语言编程就很难保证其他代码不破坏函数依赖的数据的状态。这是C++基于对象编程范式出现的原因。这个我们稍后
再说。
我们再看看C语言对机器指令的抽象。
C语言是一门十分接近汇编语言的语言。所以有人说C语言既是一门高级语言(面向过程,函数),也是一门低级语言(面向机器,直接反映计算机的实际计算过程)。
C语言使用原生类型,数组,Struct等来表示数据。C语言中,数据在内存中的表示是十分确定的。程序员可以充分控制。如,C语言中可以使用memcpy()直接复制内存中的数据。
现在,大多数的操作系统原生函数库,都使用C语言作为其接口。绝大多数的语言都具备与C语言函数库进行互操作的能力。
C语言可以说是程序世界的世界语。
C语言的优点
1, 面向过程开发,以函数为中心。简单有效。实现了简单的接口。
2, 面向机器,让用户可以完全的操纵机器,效率较高。
C语言运行高效,广泛应用于各种计算领域。对于简单的任务,非常有效。
C语言的缺点
1, 函数无法有效控制需要的数据。不能保证外部状态不变。容易出现Bug。
2, 对于机器的控制太强,也就是依赖太强。由于过于强调效率,使用C语言编程时,更多的需要考虑机器,而不是问题本身。
由于过于关注机器,而不是问题域本身,因此抽象能力不足。容易出现各种Bug。对于编写大型的程序,常常力不从心。
C语言的使用方法
C语言作为一种简单高效的编程语言,适用于编写简单的程序。在编程中,应该注意扬长避短,使用面向过程的编程范式,少用对机器的依赖。
1, 使用函数编程时,应该尽量使用函数参数传递状态,少用全局数据。因为,你无法保证全局数据不被其他代码改变。
这样使用函数,叫作“纯函数”。类似于函数式编程的用法。而且,使用这种方式编程,由于不存在全局数据,在进行多线程开发时,还不需要考虑多线程问题。
2, 使用结构化的编程方式。不要卖弄技巧。
3, 函数是接口。尽量使用函数调用,而不是直接的代码。通过层层分层,分配职责,编写出短小精悍,易于维护的代码。
4, 尽管C语 言是一种面向机器的语言。但是,我们还是应该尽量少地依赖机器。多从问题域来考虑和抽象问题。如,少用内存假设等等。因为,我们会使用很多种语 言,C,C++,Java,C#等语言的很多语法类似。但是实际的表现,各个语言都是不同的。如果
过分考虑C的机器特性,那么很可能会因为记错而编写出错 误的代码。
5, 代码,首先是给人看的。顺便给机器执行!
不要处处优化代码。只应该优化性能瓶颈。因为优化的代码,常常表示很难看懂!
6, 应该大量使用Struct组织相关的数据。在用C语言编程时,也应该树立类型和对象状态的概念。把Struct作为函数的参数传递数据。
C++语言优劣考
在C语言优劣考中曾经说过:C语言中,数据常常作为全局的变量保存起来。这样,使用C语言编程就很难保证其他代码不破坏函数依赖的数据的状态。这是C++基于对象编程范式出现的原因。
C++最初是作为C语言的扩展出现的,最初的名字就叫“带类的C”。后来,C++逐渐演化成一门独立的语言。但还是和C语言兼容
基于对象的编程范式
基于对象的编程范式,又称“抽象数据类型”(ADT)。
面向过程的编程范式中,函数无法控制函数外的共享数据。这使面向过程的编程语言不能很好地编写大型系统。为了解决这个问题,人们发明了基于对象的编程范式。
就是把数据和处理数据的函数都封装在一个类中。这样,共享的数据就不会再被外部的代码改变了!
下面是我查到的定义:
抽象数据类型(Abstract Type简称ADT)
ADT是指抽象数据的组织和与之相关的操作。可以看作是数据的逻辑结构及其在逻辑结构上定义的操作。
ADT的描述规范
一个ADT可描述为:
ADT ADT-Name{
Data://数据说明
数据元素之间逻辑关系的描述
Operations://操作说明
Operation1://操作1,它通常可用C或C﹢﹢的函数原型来描述
Input:对输入数据的说明
Preconditions:执行本操作前系统应满足的状态//可看作初始条件
Process:对数据执行的操作
Output:对返回数据的说明
Postconditions:执行本操作后系统的状态//"系统"可看作某个数据结构
Operation2://操作2
„„
}//ADT
抽象数据类型可以看作是描述问题的模型,它独立于具体实现。它的优点是将数据和操作封 装在一起,使得用户程序只能通过在ADT里定义的某些操作来访问其中的数据,从而实现了信息隐藏。在C﹢﹢中,我们可以用类(包括模板类)的说明来表示 ADT,用类的实现来实现ADT。因此,C﹢﹢中实现的类相当于是数据的存储结构及其在存储结构上实现的对数据的操作。
ADT和类的概念实际上反映了程序或软件设计的两层抽象:ADT相当于是在概念层(或
称为抽象层)上描述问题,而类相当于是在实现层上描述问题。此外,C﹢﹢中的类只是一个由用户定义的普通类型,可用它来定义变量(称为对象或类的实例)。 因此,在C﹢﹢中,最终是通过操作对象来解决实际问题的,所以我们可将该层次看作是应用层。例如,main程序就可看作是用户的应用程序。
C++支持多范型的开发方式:面向过程,基于对象,面向对象,模版。
C++和C语言是兼容的。因此,你完全可以使用C++编译系统编写C语言的程序,因此,支持面向过程编程是很自然的。
但是,使用面向过程编程,还能说是在使用C++编程吗?
另外,需要注意,C++语言,实际上是一种不同于C语言的新语言。在内存上,除了一些C语言的元素之外,新的语言元素并不像C那样面向机器。
对于C++,你不能使用memcpy等内存操作的函数,很可能会出现错误。因为C++语言建立在一些高级概念的规范上,这些规范并没有规定内存如何分配等机器方面的细节。
二.当前主流计算机语言特点及应用范围
C语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。因此,它的应用范围广泛。
C语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它解释型高级语言,有一些大型应用软件也是用C语言编写的。
C语言具有绘图能力强,可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
Delphi是Borland公司研制的新一代可视化开发工具,可在Windows3.x、Windows95、WindowsNT等环境下使用。当前,DELPHI 也可以为LINUX平台上开发应用,其在LINUX上的对应产品Kylix。
DELPHI 拥有一个可视化的集成开发环境(IDE),采用面向对象的编程语言ObjectPascal和基于部件的开发结构框架。Delphi它提供了500多个可供使用的构件,利用这些部件,开发人员可以快速地构造出应用系统。开发人员也可以根据自己的需要修改部件或用Delphi本身编写自己的部件。主要特点如下:
(1)直接编译生成可执行代码,编译速度快。由于Delphi编译器采用了条件编译和选择链接技术,使用它生成的执行文件更加精炼,运行速度更快。在处理速度和存取服务器方面,Delphi的性能远远高于其他同类产品。
(2)支持将存取规则分别交给客户机或服务器处理的两种方案,而且允许开发人员建立一个简单的部件或部件集合,封装起所有的规则,并独立于服务器和客户机,所有的数据转移通过这些部件来完成。这样,大大减少了对服务器的请求和网络上的数据传输量,提高了应用处理的速度。
(3)提供了许多快速方便的开发方法,使开发人员能用尽可能少的重复性工作完成各种不同的应用。利用项目模板和专家生成器可以很快建立项目的构架,然后根据用户的实际需要逐步完善。
(4)具有可重用性和可扩展性。开发人员不必再对诸如标签、按钮及对话框等Windows的常见部件进行编程。Delphi包含许多可以重复使用的部件,允许用户控制Windows的开发效果。
(5)具有强大的数据存取功能。它的数据处理工具BDE(BorlandDatabaseEngine)是一个标准的中介软件层,可以用来处理当前流行的数据格式,如xBase、Paradox等,也可以通过BDE的SQLLink直接与Sybase、SQLServer、Informix、Oracle等大型数据库连接。 Delphi既可用于开发系统软件,也适合于应用软件的开发。
(6)拥有强大的网络开发能力,能够快速的开发B/S应用,它内置的IntraWeb和ExpressWeb使得对于网络的开发效率超过了其他任何的开发工具。
(7)Delphi使用独特的VCL类库,使得编写出的程序显得条理清晰,VCL是现在最优秀的类库,它使得Delphi在软件开发行业处于一个绝对领先的地位。用户可以按自己的需要,任意的构建、扩充、甚至是删减VCL,以满足不同的需要。
(8)从Delphi8开始Delphi也支持.Net框架下程序开发。
当前DELPHI 已经成为一个品牌,而不仅仅是一个开发平台或开发语言的名称。 当前DELPHI产品已经由CodeGear公司继续发展,该公司是BORLAND公司的全资子公司。当前,CodeGear为广大开发者提供了DELPHI FOR PHP,以高度可视化的方式全面支持面向对象的PHP 网站开发,大大提高了PHP开发网站的代码复用程度,成为WEB应用开发的新利器
Java是一种简单的,面象对象的,分布式的,解释的,健壮的安全的,结构的中立的,可移植的,性能很优异的多线程的,动态的语言。
Java的开发环境有不同的版本,如sun公司的Java Developers Kit, 简称 JDK。后来微软公司推出了支持Java规范的Microsoft Visual J++ Java开发环境,简称 VJ++。
Java的特点
1. 平台无关性
平台无关性是指Java能运行于不同的平台。Java引进虚拟机 原理,并运行于虚拟机,实现不同平台的Java接口之间。使 用Java编写的程序能在世界范围内共享。Java的数据类型与 机器无关,Java虚拟机(Java Virtual Machine)是建立在 硬件和操作系统之上,实现Java二进制代码的解释执行功能, 提供于不同平台的接口的。
2. 安全性
Java的编程类似C++,学习过C++的读者将很快掌握Java的精 髓。Java舍弃了C++的指针对存储器地址的直接操作,程序 运行时,内存由操作系统分配,这样可以避免病毒通过指 针侵入系统。Java对程序提供了安全管理器,防止程序的 非法访问。
3. 面向对象
Java 吸取了C++面向对象的概念,将数据封装于类中,利用类 的优点,实现了程序的简洁性和便于维护性。类的封装性、 继承性等有关对象的特性,使程序代码只需一次编译,然后 通
过上述特性反复利用。程序员只需把主要精力用在类和接 口的设计和应用上。Java 提供了众多的一般对象的类,通 过继承即可使用父类的方法。在 Java 中,类的继承关系是单一的非多重的,一个子类 只有一个父类,子类的父类又有一个父类。Java 提供的 Object 类及其子类的继承关系如同一棵倒立的树形,根类 为 Object 类, Object 类功能强大,经常会使用到它及其 它派生的子类。
4. 分布式
Java建立在扩展TCP/IP网络平台上。库函数提供了用HTTP和FTP协议传送和接受信息的方法。这使得程序员使用网络上的文件和使用本机文件一样容易。
5. 键壮性
Java致力于检查程序在编译和运行时的错误。类型检查帮助检查出许多开发早期出现的错误。Java自己操纵内存减少了内存出错的可能性。Java还实现了真数组,避免了覆盖数据的可能。这些功能特征大大提高了开发Java应用程序的周期。Java提供: Null指针检测、
数组边界检测、 异常出口、 Byte code校验。
SQL广泛地被采用正说明了它的优点。它使全部用户,包括应用程序员、DBA管理员和终端用户受益非浅。
(1) 非过程化语言
SQL是一个非过程化的语言,因为它一次处理一个记录,对数据提供自动导航。SQL允许用户在高层的数据结构上工作,而不对单个记录进行操作,可操作记录集。所有SQL 语句接受集合作为输入,返回集合作为输出。SQL的集合特性允许一条SQL语句的结果作为另一条SQL语句的输入。 SQL不要求用户指定对数据的存放方法。 这种特性使用户更易集中精力于要得到的结果。所有SQL语句使用查询优化器,它是RDBMS的一部分,由它决定对指定数据存取的最快速度的手段。查询优化器知道存在什么索引,哪儿使用合适,而用户从不需要知道表是否有索引,表有什么类型的索引。
(2) 统一的语言
SQL可用于所有用户的DB活动模型,包括系统管理员、数据库管理员、 应用程序员、决策支持系统人员及许多其它类型的终端用户。基本的SQL 命令只需很少时间就能学会,最高级的命令在几天内便可掌握。 SQL为许多任务提供了命令,包括:
● 查询数据
● 在表中插入、修改和删除记录
● 建立、修改和删除数据对象
● 控制对数据和数据对象的存取
● 保证数据库一致性和完整性
以前的数据库管理系统为上述各类操作提供单独的语言,而SQL 将全部任务统一在一种语言中。
(3) 是所有关系数据库的公共语言
由于所有主要的关系数据库管理系统都支持SQL语言,用户可将使用SQL的技能从一个RDBMS转到另一个。所有用SQL编写的程序都是可以移植的。
三.当前计算机语言在各个领域所使用比例
編程語言應用領域
現流行的編程語言不存在好和不好的說法,不同軟件系統,應該運用合適的語言,殺雞焉用牛刀,就是這個道理。
根據以上編程語言排名情況,簡要概述Java、C、Visual Basic、PHP、C++、C#、Delphi語言的開發應用領域。
1)Java開發應用領域
調查顯示,Web應用57.9%,C/S應用佔11.7%;移動或嵌入式應用佔15.0%;系統編程佔15.4。從開發領域的分佈情況上看Web開發佔了一半以上。
Java的主要應用場景是企業應用開發。JavaEE在長期的發展和演化之後,已經成爲開發Web應用的可靠工具。整體而言,Java技術已經非常成熟,達到了應用的高峰期。
1.科学计算(或称为数值计算)
早期的计算机主要用于科学计算。目前,科学计算仍然是计算机应用的一个重要领域。如高能物理、工程设计、地震预测、气象预报、航天技术等。由于计算机具有高运算速度和精度以及逻辑判断能力,因此出现了计算力学、计算物理、计算化学、生物控制论等新的学科。
2.过程检测与控制
利用计算机对工业生产过程中的某些信号自动进行检测,并把检测到的数据存入计算机,再根据需要对这些数据进行处理,这样的系统称为计算机检测系统。特别是仪器仪表引进计算
机技术后所构成的智能化仪器仪表,将工业自动化推向了一个更高的水平。
3.信息管理(数据处理)
信息管理是目前计算机应用最广泛的一个领域。利用计算机来加工、管理与操作任何形式的数据资料,如企业管理、物资管理、报表统计、帐目计算、信息情报检索等。近年来,国内许多机构纷纷建设自己的管理信息系统(MIS);生产企业也开始采用制造资源规划软件(MRP),商业流通领域则逐步使用电子信息交换系统(EDI),即所谓无纸贸易。
4.计算机辅助系统
1)计算机辅助设计(CAD)是指利用计算机来帮助设计人员进行工程设计,以提高设计工作的自动化程度,节省人力和物力。目前,此技术已经在电路、机械、土木建筑、服装等设计中得到了广泛的应用。
2)计算机辅助制造(CAM)是指利用计算机进行生产设备的管理、控制与操作,从而提高产品质量、降低生产成本。缩短生产周期,并且还大大改善了制造人员的工作条件。
3)计算机辅助测试(CAT)是指利用计算机进行复杂而大量的测试工作。
4)计算机辅助教学(CAI)指利用计算机帮助教师讲授和帮助学生学习的自动化系统,使学生能够轻松自如地从中学到所需要的知识。
版权声明:本文标题:计算机语言调查报告 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1706144797h501679.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论