一、 为什么要学习程序设计语言原理
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 它是大量精巧的软件 开发工具的集合,这些工具都可通过视窗界面来使用。
编程环境已经成为软件开发系统的重要组成部分,程序设计语言只是其中的一部分。
网友评论