5 刘知杭 静态类型的Python## 静态类型的Python PYTHON 30th Lyzh(刘知杭) ## 目录 CONTENTS ➤ 有关类型的概念 使用mypy对Python源代码进行静态分析 代数数据类型 拓展知识 ## 关于类型的一些基本概念 有类型不等于有类型系统 PYTHON 30th 动态语言类型化的必要性 ## 不久前的一个案例 ☀️ ☀️ ☁️ rl = filter(lambda x: HttpResponse(json.dumps(rl), content_type='application/json') ## 类型的概念 CPython定义了PyObject这个结构体作为对象头。 CPython中的类型,是指在对象头中指向类型元信息的指针。 ## ●●● // cpython/include/object.h #define PyObject_HEAD PyObject CPython有类型,但CPython没有类型系统。这就是CsPython中诸多问题的由来。 ## 类型系统是什么? 类型系统(type system)是一种编译期(Compile-time)的类型推导检查规则。 类型系统(type system)的基本目标是防止程序在运行时发生类型错误。当且仅当语言运行时不存在任何形式的类型错误,那么它就是sound的。soundness是类型系统研究的重要目标。0 码力 | 42 页 | 6.87 MB | 2 年前3
TypeScript 类型系统## TypeScript 类型系统 分享人:陈文岗 学校:中国科学院大学 2021年1月21日 ## 关于TypeScript TypeScript是微软推出的JavaScript静态类型版本,它是JavaScript的超集,可以编译为纯粹的JavaScript TypeScript How Does TypeScript Work? TypeScript file.ts JavaScript jpg) ## TypeScript 基础类型 // 数字类型 let num: number; num = 123; // 布尔类型 let flag: boolean; flag = false; // 字符串类型 let str: string; str = 'Hello World'; ## TypeScript 高级类型 // 数组类型 let arr: number]; arr 'chenwengang', age: 23 }; // 函数类型/函数签名 type Callback = () => void; let cb:Callback = () => { console.log('callback'); }; ## TypeScript 高级类型 // 交叉类型 type User1 = { name: string;0 码力 | 25 页 | 1.27 MB | 2 年前3
基于静态分析的Rust内存安全缺陷检测研究## 基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 复旦大学 报告日期:2022.11.25 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## Rust语言 ## 系统级安全编程语言 研究挑战:指针分析是NP-hard问题 准确性:应采用路径敏感的指针分析算法,避免过多误报 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ☐ 整体思路:基于编译过程中的生成的MIR进行静态分析 ■ 路径提取:控制流图=>生成树 别名分析:分析指针之间的关联关系 ■ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取 | |float|FloatTensor of size()| |Int array|IntTensor of size \[d1, d2, ...]| |Float array|FloatTensor0 码力 | 16 页 | 1.09 MB | 2 年前3
面向亿行 C/C++ 代码的静态分析系统设计及实践-肖枭## 面向亿行C/C++代码的 静态分析系统设计及实践 肖枭 ## 500+高端科技领导者与你一起探讨 技术、管理与商业那些事儿 2019年6月14–15日 上海圣诺亚皇冠假日酒店   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
The TypeScript Handbook0 码力 | 184 页 | 647.99 KB | 2 年前3
Mypy 1.10.0+dev Documentationtype Any are present within your codebase. ## --cobertura-xml-report DIR Causes mypy to generate a C键类型 XML type checking coverage report. To generate this report, you must either manually install the lxml are present within your codebase. cobertura_xml_report Type: string Causes mypy to generate a C键类型 XML type checking coverage report. To generate this report, you must either manually install the lxml0 码力 | 318 页 | 270.84 KB | 2 年前3
Mypy 1.8.0 Documentationtype Any are present within your codebase. ## --cobertura-xml-report DIR Causes mypy to generate a C键类型 XML type checking coverage report. To generate this report, you must either manually install the lxml are present within your codebase. ## cobertura_xml_report Type string Causes mypy to generate a C键类型 XML type checking coverage report. To generate this report, you must either manually install the lxml0 码力 | 234 页 | 902.89 KB | 2 年前3
3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS >> 语法和语义扩展 >> JIT >> 静态类型  ## 语法和语义扩展 演示一小部分: and: 满足多个解构规则的组合模式 or: 满足其中一个解构规则的组合模式 A(a, ...): 调用A.__match__进行模式匹配 isinstance(type): 检查类型的pattern (a, *b, c): 匹配tuple [a, *b, c]: 匹配列表 ## Pattern-Matching benchmark.py ●●● # In [1]: 所有参数的typeid组成了一个tuple, 这个tuple被添加到一个叫jit_call_recorder的尾部。 jit_call_recorder根据调用记录唤醒jit编译器,根据用户可自定义的规则选择足够热的几个参数类型组进行编译,生成jit函数的几个method。 同时,每次编译会根据已有的所有methods,生成一个新的method查找函数。 ## JIT机制:简单又实用,就写了一天  ☐ 类型:(<表达式类型>,<表达式类型>,...) ○ 例如: ■ 身份信息:("Bob" == 2023 • 列表:任意长度的相同类型数据的集合 ○ 例如: ■ 字符的序列:Cons('H', Cons('i', Cons('!', Nil))) Cons : construct 的缩写 ## 笛卡尔积 - 一个多元组类型的元素即是每个组成类型的元素构成的有序元素组。集合的笛卡尔积,又称积类型 。例:扑克牌的所有花色: $ \{ $ postal: Int } 通过名称,我们能明确数据的信息以及对应字段的含义 ## 结构体的定义 - 结构体的定义形如 struct <结构体名称> { <字段名>: <类型> ; ... } o struct PersonalInfo { name: String; age: Int} • 定义结构体的值时,形如 { <字段名>: <值>0 码力 | 26 页 | 435.86 KB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













