免费智能真题库 > 历年试卷 > 数据库系统工程师 > 2009年上半年 数据库系统工程师 上午试卷 综合知识
  第25题      
  知识点:   程序设计语言的分类
  关键词:   语言        章/节:   计算机软件基础知识       

 
关于程序语言的叙述,错误的是(25)。
 
 
  A.  脚本语言属于动态语言,其程序结构可以在运行中改变
 
  B.  脚本语言一般通过脚本引擎解释执行,不产生独立保存的目标程序
 
  C.  php、JavaScript属于静态语言,其所有成分可在编译时确定
 
  D.  C语言属于静态语言,其所有成分可在编译时确定
 
 
 

 
  第23题    2021年上半年  
   62%
  第20题    2013年上半年  
   27%
以下关于解释程序和编译程序的叙述中,正确的是(20)。
  第24题    2022年上半年  
   63%
()是一种解释性、面向对象、动态类型的脚本语言。
   知识点讲解    
   · 程序设计语言的分类
 
       程序设计语言的分类
        程序语言有交流算法和计算机实现的双重目的,现在的程序语言种类繁多,它们在应用上各有不同的侧重面。若一种程序语言不依赖于机器硬件,则称为高级语言;若程序语言能够应用于范围广泛的问题求解领域,则称为通用的程序设计语言。
               程序语言发展概述
               各种程序语言都在不断地发展之中,许多新的语言也相继出现,各种开发工具在组件化和可视化方面进展迅速。
               Fortran(Formula Translation)是第一个被广泛用来进行科学和工程计算的高级语言。一个Fortran程序由一个主程序和若干个子程序组成。主程序及每一个子程序都是独立的程序单位,称为一个程序模块。该语言自诞生以来广泛地应用于数值计算领域,积累了大量高效而可靠的源程序。Fortran语言的最大特性是接近数学公式的自然描述,具有很高的执行效率,目前被广泛地应用于并行计算和高性能计算领域。
               ALGOL(ALGOrithmic Language)诞生于晶体管计算机流行的年代,ALGOL 60是程序设计语言发展史上的一个里程碑,主导了20世纪60年代程序语言的发展,并为后来软件自动化及软件可靠性的发展奠定了基础。ALGOL 60有严格的公式化说明,即采用巴科斯范式BNF来描述语言的语法。ALGOL 60引进了许多新的概念,如局部性概念、动态、递归等。
               Pascal是一种过程式、结构化程序设计语言,由瑞士苏黎世联邦工业大学的沃斯(N. Wirth)教授设计,于1970年发表。该语言是从ALGOL60衍生的,但功能更强且容易使用。Pascal语言曾经在高校计算机软件教学中一直处于主导地位,其集成开发工具Turbo Pascal曾经非常流行。1985年发布了Object Pascal。
               C语言是20世纪70年代初发展起来的一种通用程序设计语言,UNIX操作系统及其上的许多软件都是用C编写的。它兼顾了高级语言和汇编语言的特点,提供了一个丰富的运算符集合以及比较紧凑的语句格式。由于C提供了高效的执行语句并且允许程序员直接访问操作系统和底层硬件,因此在系统级应用和实时处理应用开发中成为主要语言。
               C++是在C语言的基础上于20世纪80年代发展起来的,与C兼容,但是比C多了封装和抽象,增加的类机制使C++成为一种面向对象的程序设计语言。
               C#(C Sharp)是由Microsoft公司所开发的一种面向对象的、运行于.NET Framework的高级程序设计语言,相对于C++,这个语言在许多方面进行了限制和增强。
               Objective-C是根据C语言所衍生出来的语言,继承了C语言的特性,是扩充C的面向对象编程语言,其与流行的编程语言风格差异较大。由于GCC(GNU Compiler Collection,GNU编译器套装)含Objective-C的编译器,因此可以在GCC运作的系统中编写和编译。该语言主要由Apple公司维护,是MAC系统下的主要开发语言。与C#类似,Objective-C仅支持单一父类继承,不支持多重继承。
               Java产生于20世纪90年代,其初始用途是开发网络浏览器的小应用程序,但是作为一种通用的程序设计语言,Java得到非常广泛的应用。Java保留了C++的基本语法、类和继承等概念,删掉了C++中一些不好的特征,因此与C++相比,Java更简单,其语法和语义更合理。
               Ruby是松本行弘(Yukihiro Matsumoto,常称为Matz)大约在1993年设计的一种解释性、面向对象、动态类型的脚本语言。在Ruby语言中,任何东西都是对象,包括其他语言中的基本数据类型,比如整数;每个过程或函数都是方法;变量没有类型;任何东西都有值(不管是数学或者逻辑表达式还是一个语句,都会有值)等等。
               PHP(Hypertext Preprocessor)是一种在服务器端执行的、嵌入HTML文档的脚本语言,其语言风格类似于C语言,由网站编程人员广泛运用。PHP可以快速地执行动态网页,其语法混合了C、Java、Perl以及PHP自创的语法。由于在服务器端执行,PHP能充分利用服务器的性能。另外,PHP支持几乎所有流行的数据库以及操作系统。
               Python是一种面向对象的解释型程序设计语言,可以用于编写独立程序、快速脚本和复杂应用的原型。Python也是一种脚本语言,它支持对操作系统的底层访问,也可以将Python源程序翻译成字节码在Python虚拟机上运行。虽然Python的内核很小,但它提供了丰富的基本构建块,还可以用C、C++和Java等进行扩展,因此可以用它开发任何类型的程序。
               JavaScript是一种脚本语言,被广泛用于Web应用开发,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常,将JavaScript脚本嵌入在HTML中来实现自身的功能。
               Delphi是一种可视化开发工具,在Windows环境下使用,其在Linux上的对应产品是Kylix,其主要特性为基于窗体和面向对象的方法、高速的编译器、强大的数据库支持、与Windows编程紧密结合以及成熟的组件技术。它采用面向对象的编程语言Object Pascal和基于构件的开发结构框架。
               Visual Basic.NET是基于微软.NET Framework的面向对象的编程语言。用.NET语言(包括VB.NET)开发的程序源代码不是直接编译成能够直接在操作系统上执行的二进制本地代码,而是被编译成为中间代码MSIL(Microsoft Intermediate Language),然后通过.NET Framework的通用语言运行时(CLR)来执行。程序执行时,.NET Framework将中间代码翻译成为二进制机器码后,使它得以运行。因此,如果计算机上没有安装.NET Framework,这些程序将不能够被执行。
               程序语言的分类
               程序语言的分类没有统一的标准,这里根据设计程序的方法将程序语言大致分为命令式和结构化的程序设计语言、面向对象的程序设计语言、函数式程序设计语言和逻辑型程序设计语言等范型。
               (1)命令式程序设计语言。命令式语言是基于动作的语言,在这种语言中,计算被看成是动作的序列。命令式语言族开始于Fortran,Pascal和C语言都可以体现命令式程序设计的关键思想。
               通常所称的结构化程序设计语言属于命令式语言类,其结构特性主要反映在以下几个方面:一是用自顶向下逐步精化的方法编程;二是按模块组织的方法编程;三是程序只包含顺序、判定(分支)及循环构造,而且每种构造只允许单入口和单出口。结构化程序的结构简单清晰、模块化强,描述方式接近人们习惯的推理式思维方式,因此可读性强,在软件重用性、软件维护等方面都有所进步,在大型软件开发中曾发挥过重要的作用。目前仍有许多应用程序的开发采用结构化程序设计技术和方法。C、Pascal等都是典型的结构化程序设计语言。
               (2)面向对象的程序设计语言。程序设计语言的演化从最开始的机器语言到汇编语言到各种结构化高级语言,最后到支持面向对象技术的面向对象语言,反映的就是一条抽象机制不断提高的演化道路。
               面向对象的程序设计在很大程度上应归功于从模拟领域发展起来的Simula,其提出了对象和类的概念。C++、Java和Smalltalk是面向对象程序设计语言的代表,它们都必须支持新的程序设计技术,如数据隐藏、数据抽象、用户定义类型、继承和多态等。
               (3)函数式程序设计语言。函数式语言是一类以λ-演算为基础的语言,其基本概念来自于LISP,这是一个在1958年为了人工智能应用而设计的语言。函数是一种对应规则(映射),它使定义域中每个元素和值域中唯一的元素相对应。
               函数定义1:Square[x]:=x*x
               函数定义2:Plustwo[x]:=Plusone[Plusone[x]]
               函数定义3:fact[n]:=if n=0 then 1 else n*fact[n-1]
               在函数定义2中,使用了函数复合,即将一个函数调用嵌套在另一个函数定义中。在函数定义3中,函数被递归定义。由此可见,函数可以看成是一种程序,其输入就是定义中左边括号中的量。它也可将输入组合起来产生一个规则,组合过程中可以使用其他函数或该函数本身。这种用函数和表达式建立程序的方法就是函数式程序设计。函数式程序设计语言的优点之一就是对表达式中出现的任何函数都可以用其他函数来代替,只要这些函数调用产生相同的值。
               函数式语言的代表LISP在许多方面与其他语言不同,其中最为显著的是,其程序和数据的形式是等价的,这样数据结构就可以作为程序执行,程序也可以作为数据修改。在LISP中,大量地使用递归。常见的函数式语言有Haskell、Scala、Scheme、APL等。
               (4)逻辑型程序设计语言。逻辑型语言是一类以形式逻辑为基础的语言,其代表是建立在关系理论和一阶谓词理论基础上的Prolog。Prolog代表Programming in Logic。Prolog程序是一系列事实、数据对象或事实间的具体关系和规则的集合。通过查询操作把事实和规则输入数据库。用户通过输入查询来执行程序。在Prolog中,关键操作是模式匹配,通过匹配一组变量与一个预先定义的模式并将该组变量赋给该模式来完成操作。以值集合ST上的二元关系R为例,R实现后,可以询问:
               ①已知ab,确定Rab)是否成立。
               ②已知a,求所有使Ray)成立的y
               ③已知b,求所有使Rxb)成立的x
               ④求所有使Rxy)成立的xy
               逻辑型程序设计具有与传统的命令型程序设计完全不同的风格。Prolog数据库中的事实和规则是形式为“P:-P1,P2,…,Pn”的Hore子句,其中n≥0,Pi(1≤in)为形如Ri(…)的断言,Ri是关系名。该子句表示规则:若P1,P2,…,Pn均为真(成立),则P为真。当n=0时,Hore子句变成P,这样的子句称为事实。
               一旦有了事实与规则后,就可以提出询问。测试用户询问A是否成立时,采用归结方法。
               ①如果程序中包含事实P,且P和A匹配,则A成立。
               ②如果程序中包含Hore子句“P:-P1,P2,…,Pn”,且P和A匹配,则Prolog转而测试P1,P2,…,Pn。只有当P1,P2,…,Pn都成立时才能断言P成立。当求解某个Pi失败时,则返回到前面的某个成功点并尝试另一种选择,也就是进行回溯。
               ③只有当所有可能情况都已穷尽时,才能推导出P失败。
               Prolog有很强的推理功能,适用于书写自动定理证明、专家系统和自然语言理解等问题的程序。
   题号导航      2009年上半年 数据库系统工程师 上午试卷 综合知识   本试卷我的完整做题情况  
1 /
2 /
3 /
4 /
5 /
6 /
7 /
8 /
9 /
10 /
11 /
12 /
13 /
14 /
15 /
 
16 /
17 /
18 /
19 /
20 /
21 /
22 /
23 /
24 /
25 /
26 /
27 /
28 /
29 /
30 /
 
31 /
32 /
33 /
34 /
35 /
36 /
37 /
38 /
39 /
40 /
41 /
42 /
43 /
44 /
45 /
 
46 /
47 /
48 /
49 /
50 /
51 /
52 /
53 /
54 /
55 /
56 /
57 /
58 /
59 /
60 /
 
61 /
62 /
63 /
64 /
65 /
66 /
67 /
68 /
69 /
70 /
71 /
72 /
73 /
74 /
75 /
 
第25题    在手机中做本题