【软件设计师】程序设计语言

编译与解释

  • 编译程序:将源程序编译成目标语言程序。
  • 解释程序:直接解释执行的源程序或者将源程序翻译成某种中间代码后再加以执行。

根本区别:在编译方式下,机器上运行的是与源码程序等价的目标程序,源程序和编译程序都不再参与目标程序的执行过程;而在解释方式下,解释程序和源程序(或其某种等价表示)要参与到程序的运行过程中,运行程序的控制权在解释程序。

编译过程描述编译型解释型
源程序通常为高级语言
词法分析通过正规式,有限自动机,检查非法字符,关键字或标识符拼写错误
语法分析根据语言语法规则,检查语法结构(if else if),数据类型
语义分析语义检查死循环、零除数、其他逻辑错误
中间代码生成常用的表现形式:逆波兰,树,后缀式,四元式,三元式。经常采用符号表来表示可忽略
代码优化通常为高级语言可忽略
目标代码生成分配寄存器,中间代码转低级语言代码,需要考虑硬件系统结构
目标程序通常为高级语言不产生

语法与存储

  • 几乎所有程序设计语言都是通过上下文无关文法来定义的
  • 语法分析方法:递归下降(自上而下),归约分析(自下而上)
  • 符号表是存储源程序信息的

传值与传址

在函数调用时,系统为形参准备空间,并把实参的值赋值到形参空间中,在调用结束后,形参空间将被释放,而实参的值保持不变,这就是传值传递方式。传值传递方式中实参与形参之间的数据传递是单向的,只能由实参传递给形参,因而即使形参的值在函数执行过程中发生了变化,也不会影响到实参值。在C语言中,当参数类型是非指针类型和非数组类型时,均采用传值方式。
传地址方式把实参的地址赋值给形参,这样形参就可以根据地址值访问和更改实参的内容,从而实现双向传递。当参数类型是指针类型或数组类型时,均采用传地址方式

确定有限自动机与非确定有限自动机

确定有限状态自动机对每一个可能的输入只有一个状态的转移。
非确定有限状态自动机对每一个可能的输入可以有多个状态转移,接受到输入时从这多个状态转移中非确定地选择一个。

各种程序语言的特点

Fortran语言(科学计算,执行效率高)
Pascal语言(为教学而开发的,表达能力强,Delphi)
Lisp语言(基于λ演算的函数式编程语言,符号处理,人工智能)
C语言(指针操作能力强,高效)
C++(面向对象,高效)
C#(面向对象,中间代码,.Net)
Java(面向对象,中间代码,跨平台)
Prolog语言(逻辑推理,简洁性,表达能力,数据库和专家系统)
Python(面向对象、编写独立程序、脚本语言)
Html(静态网页)
PHP(动态网页)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值