5 刘知杭 静态类型的Python## 静态类型的Python PYTHON 30th Lyzh(刘知杭) ## 目录 CONTENTS ➤ 有关类型的概念 使用mypy对Python源代码进行静态分析 代数数据类型 拓展知识 ## 关于类型的一些基本概念 有类型不等于有类型系统 PYTHON 30th 动态语言类型化的必要性 ## 不久前的一个案例 ☀️ ☀️ ☁️ rl = filter(lambda x: 类型系统是什么? 类型系统(type system)是一种编译期(Compile-time)的类型推导检查规则。 类型系统(type system)的基本目标是防止程序在运行时发生类型错误。当且仅当语言运行时不存在任何形式的类型错误,那么它就是sound的。soundness是类型系统研究的重要目标。 在计算机科学中,形式化方法(Formal method)是一种数学方法。旨在能像其它工程学科一 甚至Haskell程序员们能够在HGoogle中通过函数的类型签名来寻找函数。 程序效率:动态类型不利于编译优化 ## 渐进式类型系统 相对于静态语言的类型系统。 为动态语言添加类型系统需要考虑到过渡与历史包袱 一种叫做渐进式类型系统的东西完美的符合了这个应用场景 这种类型系统同时允许动态类型与静态类型的存在 声明类型系统、鸭子类型与结构类型系统 类型系统的分类——声明式类型系统与结构化类型系统 声明类型系统通过名字来检查类型0 码力 | 42 页 | 6.87 MB | 2 年前3
基于静态分析的Rust内存安全缺陷检测研究## 基于静态分析的Rust内存安全缺陷检测研究 报告人:徐辉 复旦大学 报告日期:2022.11.25 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## 大纲 一、问题背景 二、Rust指针缺陷检测方法 三、实验结论 四、论文发表心得 ## Rust语言 ## 系统级安全编程语言 ■ 方法二:允许使用裸指针 ## Unsafe Rust □ Unsafe Rust功能: 解引用裸指针 ■ 调用unsafe函数 ■ 调用FFI(其它语言接口) ☐ 使用条件:必须标注unsafe let mut num = 5; let r1 = &num as *const i32; unsafe { println("r1 研究挑战:指针分析是NP-hard问题 准确性:应采用路径敏感的指针分析算法,避免过多误报 分析效率:应基于Rust MIR的特点对算法进行优化,使其可行 ☐ 整体思路:基于编译过程中的生成的MIR进行静态分析 ■ 路径提取:控制流图=>生成树 别名分析:分析指针之间的关联关系 ■ 模式识别:根据预定义的缺陷模式检测指针漏洞 路径提取  3 用 Idris 实现带有状态的系统:ST 教程 4 The Effects Tutorial 5 Theorem Proving 6 Language Reference 7 Tutorials on the Idris Language mmons.org/publicdomain/zero/1.0/deed.zh Idris 教程 本文档为 Idris 的教程,它简单介绍了如何用 Idris 语言编程。文档中覆盖了该语言的核心特性,并假定你至少熟悉一门函数式编程语言,如 Haskell 或 OCaml。 注解:Idris 文档已按照 创作共用 CC0 许可协议 发布。因此根据法律规定,Idris 社区 已放弃对 Idris 文档的所有版权以及相关或邻接的权利。 文档的所有版权以及相关或邻接的权利。 关于 CC0 的更多信息参见:https://creativecommons.org/publicdomain/zero/1.0/deed.zh ### 1.1 引言 在传统编程语言中,类型与值之间有明确的区分。例如在 Haskell 中,下面这些类型分别表示整数、字符、字符列表以及任意值的列表: • Int, Char, [Char], [a] 与此对应,下面这些值分别为上述类型的成员:0 码力 | 224 页 | 2.06 MB | 2 年前3
Go语言基础
Golang Fundaments## Go语言基础 Golang Fundaments 中山大学 数据科学与计算学院 潘茂林 panml@mail.sysu.edu.cn ## 大纲 • Golang-设计哲学 • 基础知识学习 • Go语言的入门资源 • 本地项目工作空间组织 • 开始编程 ## Golang-设计哲学 ## 我们需要什么样的语言 曾经 我们对包含大量代码的程序印象深刻。 - 我们努力在代码库中创建大型抽象。 这是一个有效的程序吗? - 是正确的吗? - 按时完成了吗? - 花了成本(时间、空间复杂度)? 渴望成为质量、效率和简单的冠军。 • 有自己的观点。 • 重视反省和自我检讨。 ## Go语言应该是这样的 · 易于阅读代码 - 对遗存软件友好 • 心智模型 • 生产率与性能 • 正确性与性能 • 规则 • 方便代码评审 - 完整性 - 可读性 - 简单性 - 性能 • 实用主义的语言风格 - 面向编译器的静态类型语言 • 数据类型必须在编译阶段确定 • 语言能充分发挥编译优化技术 - 复古且简便的语言 • 集合了多种语言实用的语法表示 • 函数是一等公民(First-Class Functions) • 抛弃了面向对象 - 开放(几乎所有资源都在github上) ## • 语法基本特点 - C 语言的身体(语法基本类似 C 语言) – Python0 码力 | 21 页 | 851.30 KB | 2 年前3
PlantUML 1.2021.3 语言参考指引绘制的 UML  PlantUML 语言参考指引 (Version 1.2021.2) PlantUML 是一个开源项目,支持快速绘制: · 时序图 • 用例图 类图 • 对象图 · 活动图 · 组件图 · 部署图 • 架构图 规范和描述语言 (SDL) - 规范和描述语言 (SDL) • Ditaa diagram 甘特图 • MindMap diagram • Work Breakdown Structure diagram • 以 AsciiMath 或 JLaTeXMath 符号的数学公式 • Entity Relationship diagram 通过简单直观的语言来定义这些示意图。 ## [Image](/uploads/documents/3/4/5/c/345c7798228083c9f970b76c03e7a0e1/p58_1.jpg) ### 3.6 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class0 码力 | 398 页 | 4.22 MB | 2 年前3
PlantUML 1.2021.1 语言参考指引PlantUML 语言参考指引 (Version 1.2021.1) PlantUML 是一个开源项目,支持快速绘制: · 时序图 • 用例图 类图 • 对象图 · 活动图 · 组件图 · 部署图 • 状态图 • 定时图 同时还支持以下非 UML 图: • JSON Data • Network diagram (nwd) · 线框图形界面 • 架构图 规范和描述语言 (SDL) (SDL) - 规范和描述语言 (SDL) • Ditaa diagram 甘特图 • MindMap diagram • Work Breakdown Structure diagram • 以 AsciiMath 或 JLaTeXMath 符号的数学公式 • Entity Relationship diagram 通过简单直观的语言来定义这些示意图。 ## 1 时序图 ### 1.1 [Image](/uploads/documents/5/d/9/3/5d939329963125474656175552027d1e/p56_1.jpg) ### 3.6 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class0 码力 | 376 页 | 4.00 MB | 2 年前3
PlantUML 1.2020.22 语言参考指引jpg) PlantUML 语言参考指引 (Version 1.2020.22) PlantUML 是一个开源项目,支持快速绘制: · 时序图 • 用例图 · 类图 · 活动图 · 组件图 · 状态图 · 对象图 · 部署图 · 定时图 同时还支持以下非 UML 图: • JSON Data · 线框图形界面 • 架构图 • 规范和描述语言 (SDL) • Ditaa • MindMap diagram • Work Breakdown Structure diagram • 以 AsciiMath 或 JLaTeX Math 符号的数学公式 通过简单直观的语言来定义这些示意图。 ## 1 时序图 ### 1.1 简单示例 你可以用 -> 来绘制参与者之间传递的消息,而不必显式地声明参与者。 你也可以使用 --> 绘制一个虚线箭头。 另外,你还能用 [Image](/uploads/documents/6/9/1/a/691a8040bbe897941668dcd70c6d4871/p43_1.jpg) ### 3.6 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class0 码力 | 295 页 | 3.08 MB | 2 年前3
PlantUML 1.2019.3 语言参考指引p1_1.jpg) PlantUML 语言参考指引 (Version 1.2019.3) PlantUML 是一个开源项目,支持快速绘制: · 时序图 • 用例图 · 类图 · 活动图 · 组件图 ·状态图 · 对象图 · 部署图 · 定时图 同时还支持以下非 UML 图: · 线框图形界面 · 架构图 • 规范和描述语言 (SDL) • Ditaa diagram diagram · 甘特图 • 以 AsciiMath 或 JLaTeXMath 符号的数学公式通过简单直观的语言来定义这些示意图。 ## 1 时序图 ### 1.1 简单示例 你可以用 -> 来绘制参与者之间传递的消息,而不必显式地声明参与者。 你也可以使用 --> 绘制一个虚线箭头。 另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可读性。注意:仅适用于时序图,对于其它示意图,规则是不同的。 [Image](/uploads/documents/8/6/0/8/860878bc8f88b6993946457623c43708/p37_2.jpg) ### 3.5 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class0 码力 | 157 页 | 1.78 MB | 2 年前3
PlantUML 1.2019.2 语言参考指引p1_1.jpg) PlantUML 语言参考指引 (Version 1.2019.2) PlantUML 是一个开源项目,支持快速绘制: · 时序图 • 用例图 · 类图 · 活动图 · 组件图 ·状态图 · 对象图 · 部署图 · 定时图 同时还支持以下非 UML 图: · 线框图形界面 · 架构图 • 规范和描述语言 (SDL) • Ditaa diagram diagram · 甘特图 • 以 AsciiMath 或 JLaTeXMath 符号的数学公式通过简单直观的语言来定义这些示意图。 ## 1 时序图 ### 1.1 简单示例 你可以用 -> 来绘制参与者之间传递的消息,而不必显式地声明参与者。 你也可以使用 --> 绘制一个虚线箭头。 另外,你还能用 <- 和 <--,这不影响绘图,但可以提高可读性。注意:仅适用于时序图,对于其它示意图,规则是不同的。 [Image](/uploads/documents/c/a/6/0/ca608e6feda30bfd911bbd53d4aff0d4/p37_2.jpg) ### 3.5 抽象与静态 通过修饰符 {static} 或者 {abstract},可以定义静态或者抽象的方法或者属性。 这些修饰符可以写在行的开始或者结束。也可以使用 {classifier} 这个修饰符来代替 {static}. @startuml class0 码力 | 157 页 | 1.78 MB | 2 年前3
Rust 语言学习笔记## Rust 语言学习笔记 感谢 RustPrimer 和 Rust 程序设计语言简体中文版 bradyjoestar@gmail.com ## 目录 序.....7 第一章 包管理系统与版本管理工具.....9 1.1 Crate.....9 1.2 module.....11 1.2.1 module 的可见性.....11 1.2.2 .... 57 5.2.2 依赖的详细配置: ..... 58 5.2.3 自定义编译器配置 ..... 58 5.2.4 feature 段落 ..... 59 第六章 Rust 语言高级特性 ..... 61 6.1 函数式编程 ..... 61 6.1.1 闭包 ..... 61 6.1.2 闭包捕获周围环境的方式 ..... 62 6.1.3 函数指针 .. 88 6.6.3 Borrow, BorrowMut, ToOwned ..... 89 第七章 多线程与线程通信 ..... 91 7.1 线程 ..... 91 7.1.1 不同语言的线程实现 ..... 91 7.1.2 使用 spawn 创建新线程 ..... 92 7.1.3 使用 join 等待所有线程结束 ..... 92 7.1.4 线程与 move 闭包0 码力 | 117 页 | 2.24 MB | 2 年前3
共 1000 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100













