程序静态分析第一课

本文介绍了程序静态分析的概念,起源于哥德尔不完备定理和停机问题证明,探讨了工业界通过统计获取启发式规则进行分析的方法,以及学术界研究的近似求解和抽象技术。程序静态分析是一种不运行代码的情况下,通过分析技术检测程序问题的技术,当前主要依靠启发式规则,但也面临着挑战和局限性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序静态分析第一课

——该课程主要内容来自北京大学熊英飞老师的《软件分析技术》

事例一:飞机为了保证飞行安全,在很多设备上会设置冗余设备,一般来说都是一主二备三应急,一架飞机上同样功能的设备设施,会安装起码三套或更多来应付其中一套出故障而导致飞机飞行安全出问题。

事例二:以电控为例,高可靠度的工业系统一般会选择传感器3取2或5取3方式输入,什么是3取2呢?以平行方式连接三个一样的传感器,输入同一个数据处理设备。那么当其中任一个出现损坏时,该传感器就会出现异常,和其他两个传感器冲突。这时候处理设备会取另外2个传感器的数据,抛弃掉异常数据,从而保证数据准确。

为了高可靠性、安全性,我们要付出很多额外的成本和精力,为什么这些缺陷、异常或者故障无法避免?为什么这些设备系统无法保证完全可靠?

哥德尔不完备定理

一致性(consistency):对于一个命题,你不能证明它既是真的也是假的。
完备性(completeness): 对于任意一个命题,你要么可以证明它是对的,要么你可以证明它是错的。

第一定理
一个足够复杂的公理体系如果具备一致性,那么就不具备完备性。也就是说,完备性和一致性不可能同时获得。
大白话解释一下,就是说,一个没有矛盾的公理体系内,总有一些命题是说不清楚对还是错的。

第二定理
公理体系的一致性不能在这个公理体系内被推导出来。也就是说,不仅完备性和一致性有矛盾,即使是一致性本身,也不能在公理体系内得到证明。

哥德尔不完全性定理一举粉碎了数学家两千年来的信念,所有逻辑体系都存在有不能被证明或否定的命题。因此,所有逻辑体系都 “不完备”。
同理,我们可以推导出任何复杂的系统或设备或软件程序,都是不完备的,即无法保证完全可靠的,可能会存在问题的。既然问题

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值