Click Here Return to Posts List # Introduction ## Structure of Programming Language ### Theory ### Environment ### Application 1. **Program analysis(You are here!)** 2. Program verification 3. Program synthesis ## Why do we need program analysis? 1. Program Reliability 2. Program Security 3. Compiler Optimization 4. Program Understanding ## Static Analysis analysis program P to reason about its behaviors and determines whether it satisfies some demands before running. *Rice Theory: Any non-trival property of the behavior of programs in a r.e language is undecidable.* *总的来说,一个完美的静态分析是不存在的* Perfect Static Analysis can not be done:Sound&Complete =>Sound ~= overapproximate =>Complete ~= underapproximate p.s:*Sound和Complete二选一:选sound则出现false positive误报,选complete则出现false negative漏报* 一般来说,我们更倾向soundness ### Necessity of Soundness Soundness is critical in compiler optimization and program verification