5 刘知杭 静态类型的Python## 静态类型的Python PYTHON 30th Lyzh(刘知杭) ## 目录 CONTENTS ➤ 有关类型的概念 使用mypy对Python源代码进行静态分析 代数数据类型 拓展知识 ## 关于类型的一些基本概念 有类型不等于有类型系统 PYTHON 30th 动态语言类型化的必要性 ## 不久前的一个案例 ☀️ ☀️ ☁️ rl = filter(lambda x: 甚至Haskell程序员们能够在HGoogle中通过函数的类型签名来寻找函数。 程序效率:动态类型不利于编译优化 ## 渐进式类型系统 相对于静态语言的类型系统。 为动态语言添加类型系统需要考虑到过渡与历史包袱 一种叫做渐进式类型系统的东西完美的符合了这个应用场景 这种类型系统同时允许动态类型与静态类型的存在 声明类型系统、鸭子类型与结构类型系统 类型系统的分类——声明式类型系统与结构化类型系统 声明类型系统通过名字来检查类型 支持。尽管没有为注释指定任何含义,但始终存在一个隐式目标,即将它们用于类型提示。 该PEP旨在为类型注释提供标准语法,开放Python代码以简化静态分析和重构,潜在的运行时类型检查,以及(可能在某些情况下)利用类型信息生成代码。 在这些目标中,静态分析是最重要的。这包括对类型检查器(如mypy)的支持,以及提供可由IDE实现的代码重构操作。 虽然这些注释可以在运行时通过 __annotations__0 码力 | 42 页 | 6.87 MB | 2 年前3
基于静态分析的Rust内存安全缺陷检测研究## 基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 复旦大学 报告日期:2022.11.25 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## Rust语言 ## 系统级安全编程语言 研究挑战:指针分析是NP-hard问题 准确性:应采用路径敏感的指针分析算法,避免过多误报 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ☐ 整体思路:基于编译过程中的生成的MIR进行静态分析 ■ 路径提取:控制流图=>生成树 别名分析:分析指针之间的关联关系 ■ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取   2016年香港科技大学取得博士学位 过去10年一直以极高的热情从事静态分析技术的学术用研究 合作创办源伞科技,致力于推动静态分析技术在企业中的应用 ## 目录 代码质量管理是个大问题 静态分析+代码评审的实践 ## 生产质量是责任 ☐ 学习和强调,红线和惩罚,100%的测试 覆盖率,和事后复盘并不够 ☐ 有经验的程序员也会犯错 [Image](/uploads/documents/d/f/4/2/df4204d40f8d9990146651d100a36efb/p6_1.jpg) ## 自动化工具+流程才是未来 ☐ 静态分析工具:半智能的代码分析机器人 ☐ 静态分析辅助代码评审 ## Bug! Thx! Bug! ## 代码质量改进工具、流程落地难 □ 投入大 ☐ KPI不痛不痒 使用主体和责任主体不一致 ☐ 一步登天想要终极AI0 码力 | 39 页 | 6.88 MB | 2 年前3
A Physical Units Library for the Next C++0 码力 | 172 页 | 6.17 MB | 1 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查## 解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS >> 语法和语义扩展 >> JIT >> 静态类型  ## 语法和语义扩展 演示一小部分: |Restrain JIT|2.74 -> 0.64|3.54 -> 0.59|3.14 -> 0.93|2.00 -> 0.03|2.60 -> 0.96| 如果还有时间,我们用静态类型来写一个简单的网页生成框架 一个用起来,没有学习曲线的框架。 很安全,因为没有程序员需要付出心智负担的工作。 ## THANK YOU [Image](/uploads/documents/9/c/0/f/9c0fcb6d35426147b6d89f594bdf68a9/p56_1.jpg) ### 3.6 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class Declaring element 51 3.2 类之间的关系 51 3.3 关系上的标识 52 3.4 添加方法 53 3.5 定义可访问性 54 3.6 抽象与静态 55 3.7 高级类体 55 3.8 备注和模板 56 3.9 更多注释 57 3.10 Note on field (field, attribute, member)0 码力 | 381 页 | 4.05 MB | 2 年前3
Mix Assertion, Logging, Unit Testing and Fuzzing with ZeroErr0 码力 | 54 页 | 961.46 KB | 1 年前3
PlantUML 1.2021.3 Sprachreferenz0 码力 | 406 页 | 4.22 MB | 2 年前3
《Java 应用与开发》课程讲义 - 王晓东对象构造/初始化细节 ..... 53 5.3 关键字 static ..... 53 5.3.1 static 属性和方法 ..... 54 5.3.2 初始化块 ..... 54 5.3.3 静态导入 ..... 54 5.3.4 Singleton 设计模式 ..... 55 5.4 关键字 final ..... 56 5.5 课后习题 ..... 57 6 Java 内存模型与分配机制 设计层面的区别 …… 76 7.3.3 怎样才是合理的设计?(门和警报的示例) …… 76 7.4 嵌套类 …… 77 7.4.1 什么是嵌套类 …… 77 7.4.2 静态嵌套类 …… 78 7.4.3 匿名内部类 …… 78 7.4.4 使用匿名内部类 …… 78 7.5 枚举类型 …… 80 7.5.1 枚举类型的概念 ..... 80 159 12.2.6 人工抛出异常 ..... 161 12.3 用户自定义异常 ..... 162 12.4 断言 ..... 164 12.4.1 什么是断言 ..... 164 12.4.2 启用和禁用断言 ..... 164 12.4.3 使用断言 ..... 165 12.5 课后习题 ..... 167 3 高级 I/O 编程 ..... 168 130 码力 | 330 页 | 6.54 MB | 2 年前3
PlantUML 1.2019.6 Language Reference Guide0 码力 | 174 页 | 1.92 MB | 2 年前3
共 767 条
- 1
- 2
- 3
- 4
- 5
- 6
- 77













