MoonBit月兔编程语言 现代编程思想 第九课 接口
现代编程思想 接⼝ Hongbo Zhang 1 回顾 第六课:定义平衡⼆叉树 我们定义⼀个更⼀般的⼆叉搜索树,允许存放任意类型的数据 1. enum Tree[T] { 2. Empty 3. Node(T, Tree[T], Tree[T]) 4. } 5. 6. // 我们需要⼀个⽐较函数来⽐较值的⼤⼩以了解顺序 7. // 负数表示⼩于,0表示等于,正数表示⼤于 80 码力 | 16 页 | 346.04 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十二课 案例:自动微分
现代编程思想 案例:⾃动微分 Hongbo Zhang 1 微分 微分被应⽤于机器学习领域 利⽤梯度下降求局部极值 ⽜顿迭代法求函数解: 我们今天研究简单的函数组合 例: 2 ⽜顿迭代法 3 ⽜顿迭代法 4 ⽜顿迭代法 5 ⽜顿迭代法 6 ⽜顿迭代法 7 ⽜顿迭代法 8 ⽜顿迭代法 9 ⽜顿迭代法 10 ⽜顿迭代法 11 微分 微分被应⽤于机器学习领域0 码力 | 30 页 | 3.24 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十三课 案例:神经网络
现代编程思想 案例:基于梯度下降的神经⽹络 Hongbo Zhang 1 案例:鸢尾花 鸢尾花数据集是机器学习中的"Hello World" 1936年发布 包含对3种鸢尾花的测量,各有50个样本 每个样本包含4项特征:花萼与花瓣的⻓度和宽度 ⽬标 通过特征,判断属于哪⼀类鸢尾花 构建并训练神经⽹络,正确率95%以上 2 神经⽹络 神经⽹络是机器学习的⼀种 模拟⼈的⼤脑神经结构0 码力 | 17 页 | 521.66 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十四课 案例:堆栈虚拟机
现代编程思想 案例:栈式虚拟机 Hongbo Zhang 1 编译与解释 编译 源程序 x 编译器 -> ⽬标程序 ⽬标程序 x 输⼊数据 -> 输出数据 解释 源程序 x 输⼊数据 x 解释器 -> 输出数据 CPU可以被视为⼴义上的解释器 拓展阅读:⼆村映射/部分计算 部分计算:程序优化,根据已知信息,运算进⾏特化 已知源程序与解释器,进⾏部分运算,获得⽬标程序 ⽬标程序0 码力 | 31 页 | 594.38 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第三课 函数, 列表与递归
现代编程思想 函数, 列表与递归 Hongbo Zhang 1 基本数据类型:函数 2 函数 在数学上,描述对应关系的⼀种特殊集合 对于特定的输⼊,总是有特定的输出 在计算机中,对相同运算的抽象,避免⼤量重复定义 计算半径为1的圆的⾯积: 3.1415 * 1 * 1 计算半径为2的圆的⾯积: 3.1415 * 2 * 2 计算半径为3的圆的⾯积: 3.1415 * 3 *0 码力 | 42 页 | 587.59 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第七课 命令式编程:命令,可变数据结构,循环
现代编程思想 命令式编程 Hongbo Zhang 1 函数式编程 到此为⽌,我们介绍的可以归类于函数式编程的范畴 对每⼀个输⼊,有着固定的输出 对于标识符,我们可以直接⽤它所对应的值进⾏替代⸺引⽤透明性 开发实⽤的程序,我们需要⼀些计算之外的�副作⽤� 进⾏输⼊输出 修改内存中的数据等 这些副作⽤可能导致多次执⾏的结果不⼀致 2 引⽤透明性 我们可以定义如下数据绑定和函数 4. let t = acc1 + acc2 5. acc1 = acc2; acc2 = t 6. } 7. acc1 8. } 22 总结 本章节初步接触了命令式编程,包括 如何使⽤命令 如何使⽤变量 如何使⽤循环等 230 码力 | 23 页 | 780.46 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第十课 哈希表与闭包
现代编程思想 哈希表与闭包 Hongbo Zhang 1 回顾 表 键值对的集合,其中键不重复 简单实现:⼆元组列表 添加时向队⾸添加 查询时从队⾸遍历 树实现:⼆叉平衡树 基于第五节课介绍的⼆叉平衡树,每个节点的数据为键值对 对树操作时⽐较第⼀个参数 2 哈希表 哈希函数/散列函数 Hash function 将任意⻓度的数据映射到某⼀固定⻓度的数据 在⽉兔的 Hash0 码力 | 27 页 | 448.83 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第六课 泛型与高阶函数
现代编程思想 泛型与⾼阶函数 Hongbo Zhang 1 设计良好的抽象 软件⼯程中,我们要设计良好的抽象 当代码多次重复出现 当抽出的逻辑具有合适的语义 编程语⾔为我们提供了各种抽象的⼿段 函数、泛型、⾼阶函数、接⼝…… 2 泛型函数与泛型数据 3 堆栈 栈是⼀个由⼀系列对象组成的⼀个集合,这些对象的插⼊和删除遵循后进先出原则 (Last In First Out)0 码力 | 27 页 | 2.56 MB | 1 年前3MoonBit月兔编程语言 现代编程思想 第四课 多元组, 结构体,枚举类型
现代编程思想 多元组,结构体与枚举类型 Hongbo Zhang 1 基础数据类型:多元组与结构体 2 回顾:多元组 多元组:固定⻓度的不同类型数据的集合 定义: (<表达式>, <表达式>, ...) 类型: (<表达式类型>, <表达式类型>, ...) 例如: 身份信息: ("Bob", 2023, 10, 24): (String, Int, Int, Int) 成员访问:0 码力 | 26 页 | 435.86 KB | 1 年前3MoonBit月兔编程语言 现代编程思想 第八课 队列:可变数据实现
现代编程思想 队列:可变数据结构实现 Hongbo Zhang 1 队列 我们曾经介绍过队列这个数据结构 先进先出 利⽤两个堆栈进⾏实现 我们利⽤可变数据结构进⾏实现 基于数组的循环队列 单向链表 2 队列 我们实现以下函数(以整数队列为例) 1. struct Queue { .. } 2. 3. fn make() -> Queue // 创建空列表 4. fn push(self:0 码力 | 19 页 | 314.79 KB | 1 年前3
共 995 条
- 1
- 2
- 3
- 4
- 5
- 6
- 100