美文网首页
编程语言原理预备知识

编程语言原理预备知识

作者: 会飞的猪X | 来源:发表于2020-03-10 22:48 被阅读0次

    一、 为什么要学习程序设计语言原理

    1、增强表达思想的能力

    通常,人们思考问题受限于其所使用语言的能力,难以将口头或者书面无法表达的东西概念化。同样,程序员也受这一限制,其使用的开发语言限制了他们可用的控制结构、数据结构、抽象层次。了解更多的程序设计语言特性,能过在开发时减少这些心智。学会新的语言结果后,能够提升开发时的思维过程的层次。

    2、扩充选择合适语言的背景知识

    许多专业的程序员没有受过正规的计算机科学教育,而是自学或者培训获取编程技能。通常只会与工作相关的1、2种语言。在新项目选择语言时,无法有更多的选择,只能选择自己熟悉的语言。

    3、增强学习新语言的能力

    计算机程序设计仍然是一门相对年轻的学科,设计方法学、软件开发工具和程序设计语言仍然在不断的演进中。所有软件开发需要不断的学习,一旦完全理解了语言的基础原理,就能够很容易融入编程学习。就不会局限于1-2种语言。

    4、更深刻地理解实现的重要性

    (1)实现问题的时候能够更好的理解程序为什么设计成现在这样。(2)了解在使用不同的语言结果会带来不同的结果。(3)了解实现细节才能发现和修复现有程序的缺陷。提高编程效率。

    5、更好地使用已学的语言

    通过学习程序设计语言的原理,能够了解所学语言知识盲区(未使用过,不熟悉,不知道的部分)。

    二、 程序设计领域有哪些领域?

    1、科学应用

    2、商务应用

    3、人工智能(AI)

    4、系统程序设计(计算机系统中的操作系统和程序设计支持工具)

    5、网络软件

    三、语言评价标准有哪些?

    1、可读性(是否便于阅读和理解)

    2、可写性(衡量在指定问题领域内用语言创建程序有多容易的一个标准)

    3、可靠性(程序在任何情况下都能按设计的那样执行,就称该程序是可靠的)

    4、成本(学习成本、编写成本、编译成本、使用成本,维护成本)

    四、有哪些影响语言设计的因素?

    1、计算机体系结构

    冯·诺依曼结构

    过去 50 年中大多数的流行语言,都是围绕常见的计算机体系结构来设计的,这一结构用它的创始人 John von Neumann(发 音为 von Noyman)的名字命名为冯·诺依曼结构,这些语言称为命令式语言。

    冯·诺依曼计算机中,数据和程序都存储在同一内存在,执行指令的中央处理器(CPU)与内存是分开的。因此,指令和数据必须从内存出书到CPU,CPU的运算结果必须传回到内存。

    冯·诺依曼结构

    尽管事实上,命令式程序设计语言的结构是以计算机体系结构为模型的,而不是出于 程序设计语言使用者的能力和意愿,有人仍然认为使用命令式语言比使用函数式语言在某 种程度上更自然,因此许多人认为,即使函数式程序命令式程序运行效率一样高,命令 式程序设计语言的使用仍然会占据主导地位。

    2、程序设计方法学 

    面向过程 -> 面向数据 -> 面向对象

    (1)在 20 世纪 60 年代晚期和 70 年代早期,由于硬件成本下降,软件成本提升,人们从结构化程序设计运动开始,对软件 开发过程和程序设计语言的设计进行了深入的研究。

    (2)20 世纪 70 年代:产生了新的软件开发方法学,称为自顶向下设计和逐步求精。人们发现程序设计语言的主要缺点是类型检查不完备,控制语句不恰当(需要大量使用 goto 语句)。

    (3)在 20 世纪 70 年代晚期, 程序设计方法学开始由面向过程转变为面向数据,所设计的大多数语言都支持数据抽象

    (4)20 世纪 80 年代早期,面向数据的软件开发的最终演变为面向对象的设计。

    五、程序设计语言的分类

    程序设计语言通常可以分为 4 类:命令式语言、函数式语言、逻辑语言、面向对象的语言。

    另一类语言是可视化语言,是命令式语言的一个子类。如  .Net  

    逻辑程序设计语言是一种基于规则的语言. (如:Prolog)

    标记语言 HTML

    六、语言设计中的权衡

    在设计语言评价标准中,会存在重要但相互矛盾的标准,协调并满足这些标准是一个重要的工程任务。两个相矛盾的标准是可靠性和执行成本。

    例如,Java 语言的定义要求对数组元素的所有引用都进行检查,以确保数组下标在合法的范围内。这一步骤对于有大量数组元素引用 的 Java 程序来说,极大地增加了执行成本。C 语言不需要检查下标的范围,所以 C 程序比 语义上相同的 Java 程序执行得快,虽然 Java 程序更可靠。Java 的设计者以执行效率为代价换 取了可靠性。

    可写性和可读性间的矛盾在语言设计中是很常见的。C++语言中的指针可以以多种方 式来操作,支持极其灵活的数据寻址。由于指针潜在的可靠性问题,Java 语言中没有引入 指针。

    七、实现方法

    计算机设计中比较现实的选择是在硬件中实现一种非常低级的语言,提供最 普遍需要的基本操作,由系统软件来建立与高级语言程序的接口。

    语言实现系统不是计算机中唯一的软件,还需要称为“操作系统”的一个大程序集合 来提供比机器语言高级的基本操作。这些基本操作提供系统资源管理、输入和输出操作、文件管理系统、文本和程序编辑器,以及其他各种常用的功能。由于语言实现系统需要许 多操作系统的功能,它们与操作系统进行交互,而不是直接与处理器用机器语言进行交互。

    操作系统和语言实现系统在计算机的机器语言接口之上是分层的,这些层可以想象为 虚拟的计算机,在更高的层次上提供用户接口。例如,操作系统加上 C 语言编译器就是一台虚拟的 C 语言计算机,用其他的编译器,就能变成其他类别的虚拟计算机。大多数计算 机系统都提供几个不同的虚拟计算机。用户程序在虚拟计算机的顶层上形成另一层次。如图:

    典型计算机系统提供的虚拟计算机分层接口

    实现程序设计语言的主要方法是编译、完全解释和混合实现。

    八、编译环境

    编程环境是软件开发中使用的工具集。

    如:C语言编译环境  VC++6.0   

    如:Microsoft Visual Studio .NET 它是大量精巧的软件 开发工具的集合,这些工具都可通过视窗界面来使用。

    编程环境已经成为软件开发系统的重要组成部分,程序设计语言只是其中的一部分。

    相关文章

      网友评论

          本文标题:编程语言原理预备知识

          本文链接:https://www.haomeiwen.com/subject/dtbwdhtx.html