 李欣宜 扩展Python的语法和语义Python的语法扩展系统 Moshmosh Thautwarm&李欣宜 The awareness of low-level implementation details brings the appreciation of an abstraction and the intuitive explanation for it. — Oleg Kiselyov 表达式和语句区分,表达式内部不能包含语句 4. 没有语法宏,代码操作不够自动 5. 没有variant类型(只能靠一大堆抽象类和继承去workaround) 6. 对数据类型的方法不能扩展, 或者进行扩展是初级的,没有基于 类型的多态 那么告辞? 搭嘎!阔托瓦鲁! 摆 脱 编 程 语 言 给 你 的 限 制 Python有一堆好东西: 1. Python有良好的启动速度(看向Julia) 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文 件发布,C扩展等等),在使用该系统后得以保持,拥0 码力 | 39 页 | 3.69 MB | 1 年前3 李欣宜 扩展Python的语法和语义Python的语法扩展系统 Moshmosh Thautwarm&李欣宜 The awareness of low-level implementation details brings the appreciation of an abstraction and the intuitive explanation for it. — Oleg Kiselyov 表达式和语句区分,表达式内部不能包含语句 4. 没有语法宏,代码操作不够自动 5. 没有variant类型(只能靠一大堆抽象类和继承去workaround) 6. 对数据类型的方法不能扩展, 或者进行扩展是初级的,没有基于 类型的多态 那么告辞? 搭嘎!阔托瓦鲁! 摆 脱 编 程 语 言 给 你 的 限 制 Python有一堆好东西: 1. Python有良好的启动速度(看向Julia) 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文 件发布,C扩展等等),在使用该系统后得以保持,拥0 码力 | 39 页 | 3.69 MB | 1 年前3
 06 PHP基本语法 — 条件、循环、函数  杨亮 《PHP语⾔程序设计》PHP基本语法 —条件、循环、函数 杨亮 程序的基本结构 输⼊入 输出 程序 运算(+ - x / & | ! …) 逻辑(条件、循环、递归) 辅助(变量、数组、函数) ⼩小测验 ⽤用你熟悉的程序找出 1~1000中的所有质数 我们直接看代码好了 1 函数库,或者代码⽚片段 1 '; 4 ?> 1 函数 • 代码的可读性 • 代码的可重⽤用性 • 实现功能的模块化 • 实现递归调⽤用 • 使变量名不⾄至于太⻓长(作⽤用域) PHP中的函数 $res = my_function($val1, $val2); functon my_function($param10 码力 | 25 页 | 1.30 MB | 1 年前3 06 PHP基本语法 — 条件、循环、函数  杨亮 《PHP语⾔程序设计》PHP基本语法 —条件、循环、函数 杨亮 程序的基本结构 输⼊入 输出 程序 运算(+ - x / & | ! …) 逻辑(条件、循环、递归) 辅助(变量、数组、函数) ⼩小测验 ⽤用你熟悉的程序找出 1~1000中的所有质数 我们直接看代码好了 1 函数库,或者代码⽚片段 1 '; 4 ?> 1 函数 • 代码的可读性 • 代码的可重⽤用性 • 实现功能的模块化 • 实现递归调⽤用 • 使变量名不⾄至于太⻓长(作⽤用域) PHP中的函数 $res = my_function($val1, $val2); functon my_function($param10 码力 | 25 页 | 1.30 MB | 1 年前3
 1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 release_id: ${release:id} pipeline.yml 定义 - 屏蔽掉流⽔线定义的复杂度 - 丰富的通⽤Action,开箱即⽤ - Action 扩展规范,任意扩展 Workload 管理 - Create - Update - Delete - Describe - Scale - Restart services: trade-server: 接⼝设计、以及拦截器 • 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼ VS 模块化开发原则 - ⾯向接⼝进⾏开发,⽽不是⾯向实现 - 模块拆分的粒度尽可能⼩ - 模块内聚,模块间松耦合 - 模块间的引⽤使⽤DI⽽不是直接依赖实现包0 码力 | 40 页 | 8.60 MB | 1 年前3 1.2 基于 Golang 构建高可扩展的云原生 PaaS 平台基于 Golang 构建⾼可扩展的云原⽣ PaaS 平台 刘浩杨 端点 技术专家 个⼈简介 - 18年加⼊端点,现任微服务和监控团队负责⼈ - 端点开源 PaaS Erda 的核⼼架构师 - 开源爱好者, Apache SkyWalking PMC 成员 ⽬ 录 ⾯向云原⽣的软件交付 01 端点⼀站式 PaaS - Erda 02 Erda 架构的思考 03 模块化开发框架 release_id: ${release:id} pipeline.yml 定义 - 屏蔽掉流⽔线定义的复杂度 - 丰富的通⽤Action,开箱即⽤ - Action 扩展规范,任意扩展 Workload 管理 - Create - Update - Delete - Describe - Scale - Restart services: trade-server: 接⼝设计、以及拦截器 • 提供快速构建模块的代码⽣成⼯具 Erda Infra 如何设计 Erda Infra 有什么不同 - 不是重复造轮⼦ - 不仅是web框架 - 不仅是微服务框架 - 为扩展⽽⽣ - 以模块化的开发为核⼼ VS 模块化开发原则 - ⾯向接⼝进⾏开发,⽽不是⾯向实现 - 模块拆分的粒度尽可能⼩ - 模块内聚,模块间松耦合 - 模块间的引⽤使⽤DI⽽不是直接依赖实现包0 码力 | 40 页 | 8.60 MB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归现代编程思想 函数, 列表与递归 Hongbo Zhang 1 基本数据类型:函数 2 函数 在数学上,描述对应关系的⼀种特殊集合 对于特定的输⼊,总是有特定的输出 在计算机中,对相同运算的抽象,避免⼤量重复定义 计算半径为1的圆的⾯积: 3.1415 * 1 * 1 计算半径为2的圆的⾯积: 3.1415 * 2 * 2 计算半径为3的圆的⾯积: 3.1415 * 3 * * 3 …… fn ⾯积(半径: Double) -> Double { 3.1415 * 半径 * 半径 } 3 函数 计算半径为1、2、3的圆的⾯积: 1. let surface_r_1: Double = { let r = 1.0; pi * r * r } 2. let surface_r_2: Double = { let r = 2.0; pi * r * r } 3. let surface_r_3) 使⽤函数后 1. fn area(radius: Double) -> Double { pi * radius * radius } 2. let result = (area(1.0), area(2.0), area(3.0)) 4 顶层函数的定义 fn <函数名> (<参数名>: <类型>, <参数名>: <类型>, ...) -> <类型> <表达式块> 定义的函数接⼝让其他使⽤者⽆需关注内部实现0 码力 | 42 页 | 587.59 KB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归现代编程思想 函数, 列表与递归 Hongbo Zhang 1 基本数据类型:函数 2 函数 在数学上,描述对应关系的⼀种特殊集合 对于特定的输⼊,总是有特定的输出 在计算机中,对相同运算的抽象,避免⼤量重复定义 计算半径为1的圆的⾯积: 3.1415 * 1 * 1 计算半径为2的圆的⾯积: 3.1415 * 2 * 2 计算半径为3的圆的⾯积: 3.1415 * 3 * * 3 …… fn ⾯积(半径: Double) -> Double { 3.1415 * 半径 * 半径 } 3 函数 计算半径为1、2、3的圆的⾯积: 1. let surface_r_1: Double = { let r = 1.0; pi * r * r } 2. let surface_r_2: Double = { let r = 2.0; pi * r * r } 3. let surface_r_3) 使⽤函数后 1. fn area(radius: Double) -> Double { pi * radius * radius } 2. let result = (area(1.0), area(2.0), area(3.0)) 4 顶层函数的定义 fn <函数名> (<参数名>: <类型>, <参数名>: <类型>, ...) -> <类型> <表达式块> 定义的函数接⼝让其他使⽤者⽆需关注内部实现0 码力 | 42 页 | 587.59 KB | 1 年前3
 4 Python语法扩展框架Moshmosh和其上的CPython compatible JIT实现 thautwarmthreading 避开解释器开销: for-loop 避免嵌套函数开销: native function pointer, inline “All Add 2” Python version: See restrain_jit/test/test_functional.py “All Add 2” JIT version: 局部函数无开销 “All Add 2” JIT using SIMD: advanced tricks in the Julia back end *抽象指令 (没有实际指令) Julia“生成函数” Python 字节码 JuVM虚拟栈机 (具体指令集) 抽象机器 (只规定语义) JuVM栈机指令 Python JIT 函数包装 Julia AST/CodeInfo (一个)实例化/后端 代码生成 PyCall.jl 自动得到 运行时处理技巧 Julia是一门multi-stage语言, 能够优化动态类型情形(e.g., 对一个符号做多次不同类型的赋值)。 JIT需要代码生成, 但运行时检查代码生成与否, 有一定的开销。 而Julia的“生成函数”能够在生成之后, 重新触发编译, 消除所有检查自身是否生成的代码。 4 参与开发 1. Instrinsics 后端实现: py_add, py_not, etc… 2. 对虚拟指令集的优化passes0 码力 | 30 页 | 8.04 MB | 1 年前3 4 Python语法扩展框架Moshmosh和其上的CPython compatible JIT实现 thautwarmthreading 避开解释器开销: for-loop 避免嵌套函数开销: native function pointer, inline “All Add 2” Python version: See restrain_jit/test/test_functional.py “All Add 2” JIT version: 局部函数无开销 “All Add 2” JIT using SIMD: advanced tricks in the Julia back end *抽象指令 (没有实际指令) Julia“生成函数” Python 字节码 JuVM虚拟栈机 (具体指令集) 抽象机器 (只规定语义) JuVM栈机指令 Python JIT 函数包装 Julia AST/CodeInfo (一个)实例化/后端 代码生成 PyCall.jl 自动得到 运行时处理技巧 Julia是一门multi-stage语言, 能够优化动态类型情形(e.g., 对一个符号做多次不同类型的赋值)。 JIT需要代码生成, 但运行时检查代码生成与否, 有一定的开销。 而Julia的“生成函数”能够在生成之后, 重新触发编译, 消除所有检查自身是否生成的代码。 4 参与开发 1. Instrinsics 后端实现: py_add, py_not, etc… 2. 对虚拟指令集的优化passes0 码力 | 30 页 | 8.04 MB | 1 年前3
 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) } 12. } 我们希望存储很多很多类型在堆栈中 每个类型都要定义⼀个对应的堆栈吗? IntStack 和 StringStack 似乎结构⼀模⼀样? 7 泛型数据结构与泛型函数 泛型数据结构与泛型函数以类型为参数,构建更抽象的结构 1. enum Stack[T] { 2. Empty 3. NonEmpty(T, Stack[T]) 4. } 5. fn Stack::empty[T]() 泛型数据结构与泛型函数 我们⽤ [<类型1>, <类型2>, ...] 来定义泛型的类型参数 enum Stack[T]{ Empty; NonEmpty(T, Stack[T]) } struct Pair[A, B]{ first: A; second: B } fn identity[A](value: A) { value } Stack 与 Pair 可以看做从类型上的函数:类型构造器0 码力 | 27 页 | 2.56 MB | 1 年前3 MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out) } 12. } 我们希望存储很多很多类型在堆栈中 每个类型都要定义⼀个对应的堆栈吗? IntStack 和 StringStack 似乎结构⼀模⼀样? 7 泛型数据结构与泛型函数 泛型数据结构与泛型函数以类型为参数,构建更抽象的结构 1. enum Stack[T] { 2. Empty 3. NonEmpty(T, Stack[T]) 4. } 5. fn Stack::empty[T]() 泛型数据结构与泛型函数 我们⽤ [<类型1>, <类型2>, ...] 来定义泛型的类型参数 enum Stack[T]{ Empty; NonEmpty(T, Stack[T]) } struct Pair[A, B]{ first: A; second: B } fn identity[A](value: A) { value } Stack 与 Pair 可以看做从类型上的函数:类型构造器0 码力 | 27 页 | 2.56 MB | 1 年前3
 4_杨柳_基于Python构建高稳定可扩展的自动化测试集群0 码力 | 62 页 | 25.29 MB | 1 年前3 4_杨柳_基于Python构建高稳定可扩展的自动化测试集群0 码力 | 62 页 | 25.29 MB | 1 年前3
 3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 但它们不够“万金油”的问题 来源,不一定是不能解决的。 扩展语言,开阔思维 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文件 任何在不使用该系统时拥有的功能(PYC二进制文件 发布,C扩展等等),在使用该系统后得以保持,拥有 工业级的可靠性和稳定性 6 如何工作? Python Import 忽略Cache Loader, 只对源代码Loader 重写get_data方法 调用父get_data方法, 拿到源代码 moshmosh.extension. perform_extension 源码变换 扩展的语法和语义 并非naïve的,不卫生的0 码力 | 43 页 | 10.71 MB | 1 年前3 3 Thautwarm 解放python的表达力 性能和安全性 语法和语义扩展 JIT 静态检查解放Python的 表达力,性能和安全性 Thautwarm 目录 CONTENTS 语法和语义扩展 JIT 静态类型 语法和语义扩展 表达力的扩展, 可用性的保留,白来的午餐? 演示一小部分: 模式匹配, Quick Lambda, Pipe运算 语言决定思维模型 GNU-APL C++ Haskell 说 到 质 数 � 人 们 想 到 什 么 � 语言决定思维模型 但它们不够“万金油”的问题 来源,不一定是不能解决的。 扩展语言,开阔思维 我预期的语法(及语义) 扩展系统: 1. 首行用moshmosh? 标志模块 2. +extension名 (extension参数)开 启扩展 3. -extension名 (extension参数)关 闭扩展 4. 可以自定义扩展并 注册 5. 在这套系统下,有 很多简单的自定义 扩展可供练手 任何在不使用该系统时拥有的功能(PYC二进制文件 任何在不使用该系统时拥有的功能(PYC二进制文件 发布,C扩展等等),在使用该系统后得以保持,拥有 工业级的可靠性和稳定性 6 如何工作? Python Import 忽略Cache Loader, 只对源代码Loader 重写get_data方法 调用父get_data方法, 拿到源代码 moshmosh.extension. perform_extension 源码变换 扩展的语法和语义 并非naïve的,不卫生的0 码力 | 43 页 | 10.71 MB | 1 年前3
 Idris 语言文档 Version 1.3.1H AP T E R 1 I d r i s 教程 本文档为 奉 奤 奲 奩 女 的教程,它简单介绍了如何用 奉 奤 奲 奩 女 语言编程。 文档中覆盖了该语言的核心特性,并假 定你至少熟悉一门函数式编程语言,如 奈奡女 奫 奥 奬 奬 或 奏 奃 奡奭 奬 。 注 注 注解 解 解: 奉 奤 奲 奩 女 文档已按照 创 创 创作 作 作共 共 共用 用 用 C C 0 许 许 许可 可 可协 Vect n a, 其中 a 为元素的类型,而 n 为该列表的长度且可以任意 长。 当类型包含了描述其性质的值(如列表的长度)时,它就能描述函数自身的性质了。 比如连接两个列 表的操作,它拥有性质:结果列表的长度为两个输入列表的长度之和。 因此我们可以为 app 函数赋予 如下类型,它用于连接向量(奖奥 奣 奴 奯奲 ): app : Vect n a -> Vect m a -> Vect (n + 本教程介绍了 奉 奤 奲 奩 女 ,一个通用的依赖类型函数式编程语言。奉 奤 奲 奩 女 项目旨在为可验证的通用编程打造一 个依赖类型的语言。 为此,奉 奤 奲 奩 女 被设计成了编译型语言,目的在于生成高效的可执行代码。 它还拥有 轻量的外部函数接口,可与外部 C 库轻松交互。 1. 1. 1 目 目 目标 标 标受 受 受众 众 众 本教程面向已经熟悉函数式语言(如 奈奡女 奫 奥 奬 奬 或 奏 奃0 码力 | 224 页 | 2.06 MB | 1 年前3 Idris 语言文档 Version 1.3.1H AP T E R 1 I d r i s 教程 本文档为 奉 奤 奲 奩 女 的教程,它简单介绍了如何用 奉 奤 奲 奩 女 语言编程。 文档中覆盖了该语言的核心特性,并假 定你至少熟悉一门函数式编程语言,如 奈奡女 奫 奥 奬 奬 或 奏 奃 奡奭 奬 。 注 注 注解 解 解: 奉 奤 奲 奩 女 文档已按照 创 创 创作 作 作共 共 共用 用 用 C C 0 许 许 许可 可 可协 Vect n a, 其中 a 为元素的类型,而 n 为该列表的长度且可以任意 长。 当类型包含了描述其性质的值(如列表的长度)时,它就能描述函数自身的性质了。 比如连接两个列 表的操作,它拥有性质:结果列表的长度为两个输入列表的长度之和。 因此我们可以为 app 函数赋予 如下类型,它用于连接向量(奖奥 奣 奴 奯奲 ): app : Vect n a -> Vect m a -> Vect (n + 本教程介绍了 奉 奤 奲 奩 女 ,一个通用的依赖类型函数式编程语言。奉 奤 奲 奩 女 项目旨在为可验证的通用编程打造一 个依赖类型的语言。 为此,奉 奤 奲 奩 女 被设计成了编译型语言,目的在于生成高效的可执行代码。 它还拥有 轻量的外部函数接口,可与外部 C 库轻松交互。 1. 1. 1 目 目 目标 标 标受 受 受众 众 众 本教程面向已经熟悉函数式语言(如 奈奡女 奫 奥 奬 奬 或 奏 奃0 码力 | 224 页 | 2.06 MB | 1 年前3
 Kotlin 1.9.10 官方文档 中文版
返回与跳转 异常 包与导入 类与对象 类 继承 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 数据类 密封类与密封接口 泛型:in、out、where 嵌套类 枚举类 内联类 对象表达式与对象声明 委托 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 1.8.5.4 1.8.6 1.8.7 1.8.8 1.8.9 1 10.4.3 1.10.2.10.4.4 1.10.2.11 与 C 语言互操作性 映射来自 C 语言的原始数据类型——教程 映射来自 C 语言的结构与联合类型——教程 映射来自 C 语言的函数指针——教程 映射来自 C 语言的字符串——教程 创建使用 C 语言互操作与 libcurl 的应用——教程 与 Objective-C 互操作性 与 Swift/Objective-C 互操作性 集合转换操作 过滤集合 加减操作符 分组 取集合的一部分 取单个元素 排序 聚合操作 集合写操作 List 相关操作 Set 相关操作 Map 相关操作 选择加入要求 作用域函数 时间度量 官方库 协程(kotlinx.coroutines) 1.12.1.1 1.12.1.2 1.12.1.3 1.12.1.4 1.12.1.5 1.12.1.6 1.120 码力 | 3753 页 | 29.69 MB | 1 年前3 Kotlin 1.9.10 官方文档 中文版
返回与跳转 异常 包与导入 类与对象 类 继承 属性 接口 函数式(SAM)接口 可见性修饰符 扩展 数据类 密封类与密封接口 泛型:in、out、where 嵌套类 枚举类 内联类 对象表达式与对象声明 委托 属性委托 类型别名 函数 函数 lambda 表达式 内联函数 1.8.5.4 1.8.6 1.8.7 1.8.8 1.8.9 1 10.4.3 1.10.2.10.4.4 1.10.2.11 与 C 语言互操作性 映射来自 C 语言的原始数据类型——教程 映射来自 C 语言的结构与联合类型——教程 映射来自 C 语言的函数指针——教程 映射来自 C 语言的字符串——教程 创建使用 C 语言互操作与 libcurl 的应用——教程 与 Objective-C 互操作性 与 Swift/Objective-C 互操作性 集合转换操作 过滤集合 加减操作符 分组 取集合的一部分 取单个元素 排序 聚合操作 集合写操作 List 相关操作 Set 相关操作 Map 相关操作 选择加入要求 作用域函数 时间度量 官方库 协程(kotlinx.coroutines) 1.12.1.1 1.12.1.2 1.12.1.3 1.12.1.4 1.12.1.5 1.12.1.6 1.120 码力 | 3753 页 | 29.69 MB | 1 年前3
共 521 条
- 1
- 2
- 3
- 4
- 5
- 6
- 53














 
  
 