程序分析技术第一讲程序设计语言的发展.ppt
程序分析技术,第一讲:程序设计语言的发展,一、程序分析的任务,以程序为对象,分析其属性,如:值的获取与传播活跃性,2,二、程序分析技术的应用,程序转换程序理解程序演化程序逆向工程,3,程序验证与测试程序优化重构自动并行化,4,三、程序设计语言的发展,5,三、程序设计语言的发展机器语言,指令:二进制组成具有基本操作,左移、右移、加1缺点:可读性差(可理解性差)写程序困难(不方便),问题:程序的维护比较困难 扩展纠错预防适应,6,三、程序设计语言的发展汇编语言,符号化了的机器语言 功能没有扩充可读性强,例:将(R4R5)中的双字节数取补,结果送R4R5。CMPT:MOV A,R5CPL AADD A,#1MOV R5,AMOV A,R4CPL AADDC A,#0MOV R4,ARET,7,三、程序设计语言的发展高级程序设计语言,(1)过程式语言PASCAL,C,FORTRAN,PL1特点:命令为基础,程序由一系列语句组成,语句的执行引起存储单元值的变化。程序的正确型(归纳断言指导)数学性质弱(副作用,变量值变化)数据类型不够丰富程序的动静态结构差异大,8,历史上的goto语句之争,1970,XPL编译器只用了一个goto1972,操作系统只有五处用了标号和goto难以理解,难以查错,动静态差异大修改引起的副作用小,全局优化简单概念简单,效率高,9,三、程序设计语言的发展高级程序设计语言,(2)函数式语言LISP,ML,HOPE,FP程序由一组函数组成,通过调用执行程序。特点:数学性质好数据类型可自定义支持并行计算抽象级别高数据以表为基础,10,三、程序设计语言的发展高级程序设计语言,(3)逻辑式语言PROLOG以谓词为基础,具有推理能力特定的应用领域抽象的问题求解公式处理专家系统人工智能等,11,三、程序设计语言的发展高级程序设计语言,(4)对象式语言SmallTalk80特点:封装性继承性多态性,12,三、程序设计语言的发展第四代语言,特定领域的特殊类语言高级语言的抽象如:Oracle应用开发环境、Power Builder,13,四、程序分析的一般方法,静态分析方法动态分析方法,14,五、静态的分析过程,词法分析语法分析所需要的分析,15,