程序设计语言与软件开发方法学
程序设计语言的发展
形式语言与自动机
形式语义学
程序设计方法学
计算语言学
软件开发方法学程序设计语言的发展
算法,过程与程序
机器指令与机器语言
汇编语言与汇编程序
高级语言与编译程序
MAS与超级语言返回算法,过程与程序
算法,一个有穷规则的集合,其中之规则确定了一个解决某一特定类型问题的运算序列。算法的特性,
有穷性,确定性,输入,输出 和 能行性 。
过程,一个有穷规则的集合,其中之规则确定了一个解决某一特定类型问题的运算序列。过程的特性,
确定性,输入,输出 和 能行性 。
程序,是具有特殊功能的指令序列。
程序设计,编写程序的过程。 返回机器指令与机器语言
机器指令的格式,
机器指令的分类,1 控制指令 ;2 算术运算指令 ;3 逻辑运算指令 ;4 移位操作指令 ;5 传送操作指令 ;6 输入输出指令 。
机器语言,机器指令系统,机器语言程序
机器指令的实现,微指令与微程序
RISC:精简指令系统计算机 返回操作码 地址码汇编语言与汇编程序
程序的可读性
汇编指令,用英文字母和一些符号对机器语言指令和存储空间及数据进行编码,为 0,1串进行命名所得到的指令。
操作符,add(加法 ) mul(无符号乘法 ) idiv(有符号除法 ) neg(求补 ) xchg(交换 ) test(逻辑比较 ) jmp(无条件转移 )
汇编语言程序?汇编程序?机器语言程序
汇编语言的好处,使得程序设计人员从原来记忆 0,1串的烦恼中解放出来,变按二进制数字与地址空间的存取与操作为按名存取与操作。 返回高级语言与编译程序
高级语言的语句,把人们利用机器语言或汇编语言编程时所用数据的逻辑结构,和对数据进行处理时的操作序列的逻辑结构,归纳抽象为数据类型和语句,利用英文字母、数字和一些符号通过一定规则
(语法)对其编码,所用编码的自然语言含义与对应逻辑结构的意义尽量接近。
例如,if a?b then x:=a else x:=b ;
高级 语言程序?编译程序?机器语言程序
高级 语言分类
对 高级语言多态性的反思 返回高级 语言分类
过程型语言 认为计算机所解决的问题是由一个个小问题的顺次解决而解决的,把解决各个问题的动作及所参加的成员,抽象为操作(语句)和数据。前期高级语言大多是过程型的。常见的有:
FORTRAN,ALGOL60,COBOL,BASIC,PASCAL,C,ADA等。
函数型语言 认为计算机所解决的问题是从一个域到另一个域的函数映射,把要解决的问题划分成一个个相关成员的集合和集合间的函数关系。典型代表如 LISP
逻辑型语言 认为计算机所解决的问题是由已知事实及一定规则进行逻辑推理得到一定结论,把要解决的问题描述为一系列事实与规则的集合。典型代表 PROLOG
对象型语言 认为计算机要解决的问题是参与问题的所有个体及个体间的相互作用的结果,把问题描述为表述个体的对象集合及个体间相互作用的消息集合,典型代表如
SMALLTALK,C++,JAVA等。 返回对 高级语言多态性的反思计算机高级语言虽然种类繁多,但它的产生与发展也受到两方面的限制,其一是 实现它的物理机器原理等价性的限制 ;其二是 它所抽象与表术的现实世界同一性的限制 。所以会出现过程型、函数型、
逻辑型和对象型等高级语言,是因为 现实世界在不同领域以不同的表现形式为主,以其它表现形式为辅;还因为 人们对于现实世界认识的主观性与片面性 。
返回
MAS与 超级语言
把用高级语言解决某问题而设计的一个完整的程序作为整体抽象为一个 Agent,把由多个 Agent通过交互作用而形成的整体称为多 Agent系统( Multi-
Agent System,简称 MAS),把描述 MAS中各 Agent的组成成份及各 Agent间相互作用规则的程序设计语言称为 超级语言 。
程序设计语言的发展目标 一是为了 提高数据表示的抽象程度,如过程、对象类,Agent类等,二是为了 提高程序编制的自动化程度,如指令、语句,规划和目标等。 返回语言及其组成
自然语言,音义结合的符号系统。
程序设计语言,码义结合的符号系统。
形式语言,一个符号选自某个字母表的字符串集合。
词法,它规定了什么样的符号组成的字符序列或空间排列是这个语言合法的单词(或字)。
文法,是关于用语言的单词构成短语、句子和篇章的规则,在此基础上可以形成各种句子和文章。
语法,由词法和文法构成。
语义,就是指单词、短语、句子和文章的意义或含义。 如
,上马,的语义
语用,是指在一定的语言环境中语言和它的使用者之间的关系。
语境,语言的使用环境。 返回形式语言与自动机
语言及其组成,
语法与巴科斯范式,
转换生成语言学理论,语言可以通过字母表和表上定义的一组语法规则经演绎过程生成。乔姆斯基
语言与自动机的等价性,语言也是一种计算模型,它在计算机裸机系统与人的思维、描述方式之间架起了一座沟通的桥梁,只是在描述、刻画、表达计算时所处层面和方便程度不同而已 。
返回语法与巴科斯范式
自然语言的语法结构:
〈 句子 〉? 〈 名词短语 〉〈 动词短语 〉
〈 名词短语 〉? 〈 形容词 〉〈 名词短语 〉
〈 名词短语 〉? 〈 名词 〉
〈 名词 〉? boy
〈 形容词 〉? little

程序设计语言的语法结构:
〈 表达式 〉? 〈 表达式 〉 +〈 表达式 〉
〈 表达式 〉? 〈 表达式 〉 *〈 表达式 〉
〈 表达式 〉? ( 〈 表达式 〉 )
〈 表达式 〉? id

形式语言的语法结构,返回形式语言的语法结构
上下文无关文法:
CFG=( V,T,P,S),其中:
V:变元的有穷集合;
T:终极符的有穷集合,V?T=0;
P,产生式的有穷集合,每个产生式的形式是 A,A是变元,?是
( V?T) *中的符号串;
S:是开始变元。
例子,CFG =( {E},{+,*,(,),id},P,E),其中 P为:
E?E+E
E?E*E
E?( E)
E? id

巴科斯 — 瑙尔范式( BNF) 返回形式语义学
自然语言,语法、语义、语用、语境与 本质
条件子句与条件语句嵌套的语义问题,
条件子句,if B then S;
条件语句,if B then S1 else S2 ;
条件子句与条件语句嵌套:
if B1 then if B2 then S1 else S2 ;
条件子句与条件语句嵌套的两种语义解释:
1,if B1 then (if B2 then S1 else S2 );
2,if B1 then (if B2 then S1) else S2 ;
形式语义(学),就是指用形式化的方法对语言成分 语义 的描述(研究)。
语义的四种描述方法 返回语义的四种描述方法
程序语义(功能)的形式描述,
{Q}P{R} 其中:
P,表示一程序;
Q,P的前断言,表示 P执行前的状态(指影响 P运行的所有组成成份的状态)必须满足的条件;
R,P的后断言,表示 P执行后的状态必须满足的条件。
例如,{Q:得到 10元钱 }
P,S1; S2; ; Sn;
{R:打回一瓶酒 }
程序语义的四种描述方法 返回语义的四种描述方法(续)
操作语义,用抽象机的基本动作对 语言中语句的 语义 进行描述的方法。即 把 {Q}P{R}中的 S1; S2;? ; Sn用抽象机的基本动作
O1; O2;? ; Om进行描述,以证明 P完成了其功能 {Q,R}。
指称语义,用基本定值函数对 语言中语句的 语义 进行描述的方法。即 把 {Q}P{R}中的 S1; S2;? ; Sn用基本定值函数 f1; f2;? ;f
m进行描述,以证明 P完成了其功能 {Q,R}。
公理语义,用基本公理和推导规则对 语言中语句的 语义 进行描述的方法。 即 从基本公理 {Q
1}S1{R1}; {Q2}S2{R2};? ;{Q
n}Sn{Rn} 出发,利用推导规则,以证明 P完成了其功能 {Q,R}。
代数语义,用基本代数规则对 语言中语句的 语义 进行描述的方法。即 把 {Q}P{R}中的 S1; S2;? ; Sn用基本代数规则 R1; R2;? ;R
m进行描述,以证明 P完成了其功能 {Q,R}。
四种描述方法的等价性问题 返回程序设计方法学
程序理论,程序的结构,程序的正确性,程序的运行效率等。
程序设计方法,自顶向下,自底向上,结构化,程序推导,程序变换,面向对象,面向函数,面向逻辑等。
程序设计技术,程序验证技术,程序重用技术,约束程序设计技术,并发程序设计技术等。 返回程序的结构
程序的整体结构
程序的数据结构
程序的控制结构,
1、顺序,S1; S2; ; Sn
2、选择,if B then S1 else S2 endif
3、循环,loop B do S endloop
返回程序的控制结构
程序的整体结构
C语言程序的总体结构一个完整的C语言程序,是由一个 main()函数
( 又称主函数 ) 和若干个其它函数结合而成的,或仅由一个 main()函数构成
[例 1] 仅由 main()函数构成的C语言程序 。
main()
{ printf(“This is a C program.\n”) ;
}
程序运行结果:
This is a C program.
C语言程序的总体结构
[例 2] 由 main()函数和 1个其它函数 max()构成的C语言程序 。
int max(int x,int y)
{ return( x>y? x,y ); }
main()
{ int num1,num2;
printf(“Input the first integer number:,) ;
scanf(,%d”,&num1);
printf(“Input the second integer number:,) ;
scanf(,%d”,&num2);
printf(“max= %d\n”,max(num1,num2));
}
程序运行情况:
Input the first integer number:6←┘
Input the second integer number:9←┘
max=9
函数的一般结构任何函数都是由函数说明和函数体两部分组成:
[函数类型 ] 函数名 (函数参数表 ) 函数说明部分
{ 说明语句部分;
执行语句部分; 函数体部分
}
函数参数表的格式为:
数据类型 形参 [,数据类型 形参 2 ]
例如,函数 max()说明部分如下:
函数类型 函数名 函数参数表
↓ ↓ ↓
int max ( int x,int y )
函数体 一般由说明语句和可执行语句两部分构成:
( 1) 说明语句部分说明语句部分由变量定义,自定义类型定义,自定义函数说明,外部变量说明等组成 。
( 2) 可执行语句
main()
{int num1,num2; 变量定义部分
printf(“Input the first integer number:,) ;
scanf(,%d”,&num1);
printf(“Input the second integer number:,) ; 可执行语句部分 函数体
scanf(,%d”,&num2);
printf(“max= %d\n”,max(num1,num2));
}
函数体程序的数据结构
数据 (Data),一切能够由计算机接受和处理的对象。
数据元素 (Data element),是数据的基本单位,在程序中作为一个整体加以考虑和处理。
数据项 (Data item),是数据的不可分割的最小单位,在有些场合下,数据项又称为字段或域。
数据结构 (Data structure),数据之间的相互关系,
即数据的组织形式。
例,数组 返回数组
数组 是由一些 单元 组成的,每个单元对应着一组 下标值 和一个 数组元素 。
n维数组的每个单元对应 n个 下标 值。
数组元素可以是 基本数据类型,如整数型、实数型、
字符型等,也可以是有多个数据项的一种 结构 。
同一数组中各个元素必须是 同一数据类型,每个数组元素都占有 相同数量的存储单元,才能用下标来唯一的确定数组中的元素。
例,[23,56,900,85,67,53,146]
1 2 3 4 5 6 7 返回
计算语言学 是计算科学与语言学的一个交叉学科,
其主要任务是运用数学和计算科学的理论与技术研究语言学的基本规律。
直接应用,开发自然语言理解系统和机器翻译软件。
理论工具,本体与主体理论,形式语言与自动机理论,数理逻辑与形式语义学。
研究难点,语义与语境、语用的关系
语言多义性的几个例子
现状与出路 返回计算语言学语言多义性的几个例子(一)
例 1,他的老师当得好。”的多义性。
A、他的传授文化、技术的身分担任的好。
B、他的(某位)老师把知识、技能传授得好。
C、他的(所有)老师把知识、技能传授得好。
D、他的(某位)老师家庭主妇的身分担任的好。
E、他的(某位)老师人大代表的身分担任的好。
例 2
语言多义性的几个例子(二)
例 2,调个过儿还是一样” —— 吕叔湘文集
A、在家里,我对儿媳像闺女一样,儿媳对我也像亲妈一样。
B、在家里,我对儿媳像亲妈一样,儿媳对我也像闺女一样。
C、在家里,我对儿媳像 亲妈对 闺女一样,儿媳对我也像 闺女对 亲妈一样。
D、在家里,我对儿媳像亲妈 对闺女 一样,儿媳对我也像闺女 对亲妈 一样。 例 3
语言多义性的几个例子(三)
例 3 语音处理的困难 — 同音字词的语义。
A,家家爱加佳,加佳进家家
B,加佳爱家家,家家进加佳
C,加佳爱家家,加佳进家家
D,家家爱加佳,家家进加佳例四神奇图片返回计算语言学 现状与出路
1 数理统计方法,语料库,模糊性与特殊语言现象
2 数理逻辑与形式语义学,陆汝占,汉语计算语义学
3 计算语义学模型,形式语言与自动机理论
4 语言的本质,本体与主体理论 返回软件开发方法学
软件及其分类
软件的开发
软件开发方法学研究范畴
软件开发方法学发展方向,
1、软件开发环境的研究,计算机辅助软件工程
( CASE)和形式化软件开发方法
2、分布式和并行软件开发方法学,MAS(多代理系统),语义 Web,Web Service,AORBCO
返回软件及其分类
软件,是对事先编制好了的具有特殊功能和用途的程序系统及其说明文件的统称 (狭义) 。是计算机程序、方法、
规范及其相应的文档以及在计算机上运行所必须的数据
(广义,IEEE,1983) 。
系统软件,是指那些参与构成计算机系统,提供给用户使用,用于扩展和充分发挥计算机硬件功能、维护整个计算机硬件和软件系统,平滑用户思维方式、操作习惯与计算机硬件设备之间沟坎的软件。 一般包括操作系统、汇编程序、解释程序、编译程序、数据库管理系统、软硬件故障诊断程序、子程序库、各种软件开发工具和软件包及其说明文件。
应用软件,是对用户在计算机系统上针对各种具体应用问题而开发的一类专用程序或软件的总称。 返回软件的开发
软件危机,软件规模大型化与开发方法作坊化的矛盾。
软件工程,用工程的思想方法支持软件的开发。
软件生命期,系统分析、系统设计、系统实现、
系统调试、系统使用与系统维护。
软件开发方法,功能分析法、数据流法,信息建模法、面向对象的方法、面向 Agent的方法和
AORBCO方法。 返回软件开发方法学研究范畴
1,如何从宏观上认识软件开发的全过程;
2,怎样建立起一套完整的软件开发的理论、技术、
方式和方法;
3,软件体系结构怎样;
4,如何保证程序的正确性;
5,如何缩短软件的开发周期;
6,如何将不同的人设计的程序集成在一起;
7,如何开发分布式和并行计算机的软件;
返回第三章作业
0、什么是过程?它与算法有何不同?
1、简述程序设计语言的发展规律。
2、简述编译程序的功能。
3、语言的四大组成是什么?
4、试述形式语言与自动机的关系。
5、语义的四种描述方法是什么?
6、程序的三种基本控制结构是什么?
7、试举一语言二义性的例子。
8、什么是软件?软件的开发步骤有哪些?
9、简述软件开发方法学的发展方向。 返回