K 语言矩阵乘法代码简化攻略:从复杂到简洁,编程体验大提升!
跳过内容
导航菜单等相关内容……
用数组语言思考
你可以在 GitHub 查看本章的完整源代码。多数 K 编程通过 REPL(交互式解释器)完成,带有 rlfe 的 ngn/k 能用上下箭头键查看历史记录,函数先在 REPL 中测试再迁移到实际代码。K 脚本执行方式如同在 REPL 中逐行输入,支持多行定义。K 编程是不断简化模式的过程,可阅读 Patterns and Anti-patterns in APL: Escaping the Beginner's Plateau - Aaron Hsu - Dyalog '17 更好理解。多数人用 K 时需将常见算法转换为 K 代码,以矩阵乘法为例,其迭代算法如下:
输入:矩阵 A 和 B 令 C 为一个大小合适的新矩阵 对于 i 从 1 到 n: 对于 j 从 1 到 p: 令 sum = 0 对于 k 从 1 到 m: 设置 sum ← sum + Aik × Bkj 设置 Cij ← sum 返回 C直接转换后的代码存在定义大量全局变量、多个嵌套循环、大量修改操作等问题。可逐步简化代码,从使用折叠操作符求和,到移除全局变量,最终得到矩阵乘法的简洁代码matmul: (+/*)\:。矩阵乘法与 K 的数组支持配合良好,未来章节将探讨更多与 K 不太适配的算法及处理方法。
页脚
相关页脚导航内容……
