天天看点

形式语义01 Intro

感觉第一节课都差不多

推荐了Software Foundations,搜了一圈发现非常劝退....但还是磨磨蹭蹭看完了Lists

书上说不建议贴答案和题解,那就不贴了吧(

developing general abstractions, or building blocks, for solving problems, or classes of problems. Also considers software behavior in a rigorous and general way, to prove that programs enjoy properties

当我们提及程序的正确性时,我们在谈论什么?

How to describe meanings of programs? 含义

How to describe properties of programs? 性质

How to reason about programs? 推理

How to tell if two programs have the same behaviors or not?

How to design a new language?

How to build Bug-Free Software?

现在的软件也越来越复杂

Multi-core concurrency

Embedded software, Limited resources

Distributed and cloud computing, Network environment

Ubiquitous computing and IoT

Quantum Computing

测试的局限性

简单,容易自动化、流程化

无法保证一定没有bug

对并发(多核/网络)程序作用有限,发现的bug难以重现

Testing shows the presence, not the absence of bugs. Dijkstra

对于Crash-Proof工作,如何证明?

How to prove mathematically?

How to define "crash"?

How to prove a system is "crash-free"?

为什么要上这门课?

软件可靠性是目前严重的问题

是别人没有的优势

可以提升代码能力

更好地理解和比较编程语言

这门课很有挑战

课程内容

对现有语言的研究

讲一些定义程序行为的方法

讲一些证明程序性质的方法

如何定义性质

如何证明

Coq

可以自动化证明命题

可以自动化验证证明

我们不再需要信任证明,只需要信任证明工具,然后检验一个证明

也就是说,一个程序可以自带一个安全性proof,而运行环境自带的证明器用以验证,以此来保证程序是正确的

本文来自博客园,作者:jjppp。本博客所有文章除特别声明外,均采用CC BY-SA 4.0 协议