BQN 语言动态编译机制解析本文深入探讨了 BQN 语言如何通过动态编译技术提升执行速度。作者分析了基于字节码的解释与编译区别,并提出了针对 SIMD、多核及 GPU 的优化策略。 重点介绍了热路径追踪、元数据缓存、复合函数优化以及后台编译等具体实现方案,旨在平衡即时编译开销与运行性能。 评论点赞收藏65 天前
BQN 的函数式编程:一等函数、词法作用域与 APL 传统BQN 语言创作者 Marshall Lochbaum 亲自撰写的技术文档,深入剖析 BQN 如何实现一等函数(first-class functions),并对比 APL 传统中函数为二等公民的设计局限。文章清晰区分了四种"函数式编程"定义——一等函数式、纯函数式、类型函数式、函数级编程,并直言 APL 因语法和 Iverson 的观念长期拒绝一等函数是错误选择。作者用大量可运行的 BQN 代码示例演示了函数作为参数传递、放入数组、配合 Choose 修饰符实现三路分支等实用技巧,还顺便解释了词法作用域和闭包的正确实现要求。全篇带有强烈的个人立场和工程实践经验,是对编程语言设计思想的一次有观点、有证据的深度讨论。 评论点赞收藏73 天前
BQN 语言解析:原语(Primitive)究竟是什么?BQN 语言作者 Marshall Lochbaum 亲自阐述:原语(Primitive)不是随意挑选的"锦囊妙计",而应是被"发现"而非"发明"的数学本质。文章区分了符号与命名的优劣势,提出优秀原语应具备数学描述简洁、多约束规范、可推导实现其他操作、几乎没有有用变体等特征——这些特质往往还能带来更少的边界情况、跨领域适用性和高效实现。作者结合加法等算术原语、APL 历史、Ulam 螺旋等数学实例,讨论了原语设计背后的哲学与实践,对编程语言设计者和数组编程爱好者极具参考价值。 评论点赞收藏78 天前
数组语言中的循环融合核心看点:数组语言(APL、BQN等)链式运算有先天性能缺陷——每次基本操作完整循环整个数组并写回内存,造成额外存储加载和缓存压力,而标量语言编译器天然可融合这些操作。BQN语言作者Marshall Lochbaum从第一手编译器实践出发,剖析两种层次的融合方案:1) 分块(Blocking)松散融合,将数组切为L1缓存可容纳的小块,让连续操作在缓存内完成,避免主存瓶颈;2) JIT低层融合,在寄存器级别彻底消除中间读写。文章逐一讨论位移、复写、扫描、多维转置、含副作用的函数等场景下的工程取舍,以及数值溢出、混合类型、布尔值打包等实际挑战,并涉及AVX-512向量化指令集的具体分析。这不是泛泛的趋势解读,而是一份信息密度极高的硬核技术笔记,适合对语言实现和编译器优化感兴趣的读者。 评论点赞收藏85 天前
BQN 与 C 的性能对决BQN 语言作者 Marshall Lochbaum 亲自论证:基于 C 的解释器 CBQN 在部分场景下可以跑赢直接手写的 C 代码。核心观点是性能来自程序员对语言特性的利用,而非语言本身。文章给出 CRLF→LF 行尾转换的完整基准测试(带源码和实测数据),BQN 在几千字节以上输入可达 C 的 5–10 倍速度;还讨论了 JSON 解析(40–100 MB/s,接近部分 C 解析器)、质数筛(10 亿以内 1.1 秒,与典型 C 轮筛相当)。作者不偏袒,清晰划出 BQN 的适用边界:同质大数组、小元素类型(1–2 字节)时优势明显;循环次数未知、需要大整数包装运算、必须十进制舍入等场景则不适合。深度剖析了数组编程 vs C 在 SIMD 自动向量化、指针别名、循环融合与分裂、动态 dispatch 等方面的根本差异。既有实战代码又有理论分析,是编程语言性能讨论中极为少见的坦诚一手资料。 评论点赞收藏92 天前
BQN 是数学吗?BQN 语言作者亲自撰写的哲学随笔,探讨数组编程语言与数学的关系。文章用"地下掘进的生物"比喻数组编程,讲述 Ken Iverson 从线性代数中发展出 APL 的历史,并指出 BQN 刻意放弃了 APL 的矩阵乘法、除法等线性代数原生原语,将其降级为惯用法和库,改用更通用的命名(如"table"取代"outer product")。作者以第一人称经验和设计者视角,坦诚回答标题问题:编程可以实现数学,数学也可以描述编程,但 BQN 在这方面并不比其他语言更突出。文章短小但有观点、有历史背景、有具体技术细节,是难得看到语言设计者公开反思设计取舍的一手材料。 评论点赞收藏118 天前
BQN设计五年回顾BQN语言作者Marshall Lochbaum在语言诞生五年后做出的真诚设计回顾。与官方通稿不同,他以第一人称逐一审视每个原语的设计决策:哪些做对了、哪些后悔了。他坦言右到左折叠是"你一直在等的大错误",Reshape忽略𝕩形状是"败笔",Pick的设计是"一团糟",并提出了替代方案。文中充满来自实际实现的一手经验:比较容差的权衡、IEEE 754浮点数的坑、Unicode上标的限制、Scan符号在各种Markdown中的转义噩梦。他坦诚自己因信息不足做出了次优决策(如Windows原语的性能设计),并分享了van Herk/Gil-Werman方法等后来才了解的技术。通篇是踩坑记录与设计哲学反思的混合体,对编程语言设计者和数组语言爱好者有高度参考价值和讨论入口。无营销味,全是个人判断和真实遗憾。 评论点赞收藏118 天前
BQN 排序函数的实现详解BQN 语言作者 Marshall Lochbaum 亲述排序函数底层的实现决策与优化思路。文章深入探讨了快排与归并的取舍、自然 run 检测的陷阱、二分查找的正确写法、复合数据与简单数据的算法分化,以及作者原创的 Robin Hood Sort。这不是教科书式的算法综述,而是来自一线实现者的真实踩坑记录——包括对 Glidesort 性能声称的质疑和自己实测中的性能退化分析。对于关注排序算法工程实现的读者,信息密度极高。 评论点赞收藏128 天前
BQN语言原始操作符重载的设计思考BQN语言作者Marshall Lochbaum深入剖析数组语言中原始操作符重载(overloading)的设计取舍,基于亲身创作经验给出了清晰的重载分类体系:统一、兼容、相似、助记、糟糕五档,并配有完整表格。文章对比APL、J、K、Uiua、Q等语言如何处理同一个问题,讨论重载对新用户学习曲线、工具链支持、代码迁移的实际影响。作者立场鲜明——不回避BQN自身的妥协,直言哪些重载是"坏"的,同时解释了为何在Unicode符号约束下某些折衷不可避免。文中包含一手设计决策记录(如为何保留-的双重含义、为何拆分APL中.的多种用法),以及对Uiua分离操作符策略的真实评价。适合对编程语言设计、数组编程、API设计哲学感兴趣的读者。 评论点赞收藏130 天前
BQN:转置操作(⍉)BQN 语言作者 Marshall Lochbaum 亲自撰写的转置操作(⍉)权威文档,是深入理解这门新兴数组语言设计哲学的一手资料。文章核心看点在于 BQN 对 APL 经典转置的重新设计:一元⍉将首轴移至末尾(而非 APL 的全轴反转),配合 Repeat 和 Rank 修饰符可实现任意轴变换;二元⍉(Reorder Axes)支持通过左参数精确指定轴排列,包括将多个轴合并取对角线。文中对比了 APL 与 BQN 在矩阵乘法交换规则上的差异,并用大量可运行的代码示例演示了高维张量(rank 2-5)的转置实战。对数组编程、APL/J 生态或张量操作感兴趣的读者,能从中获得语言设计层面的第一手判断和实用技巧。 评论点赞收藏130 天前
关于 K 语言性能的离谱传言BQN 作者 Marshall Lochbaum 用 perf 实测数据逐条反驳 K 语言"最快"的未经验证传言。核心论点:K 的商业许可含反基准条款导致无法公开对比;所谓 L1 指令缓存优势被严重夸大——实测显示 L1 缺失仅占运行时间的个位数百分比;K 在矩阵运算等数组操作上可能落后 Dyalog APL 数十倍。文章引发 HN/Lobsters 广泛讨论,作者态度坦诚、证据扎实,是罕见的有新信息、有数据、有观点的技术好文。 评论点赞收藏166 天前
APL数组编译器Co-Dfns与BQN实现方案深度对比BQN语言作者Marshall Lochbaum亲自对比自己的BQN自举编译器与Aaron Hsu的Co-Dfns APL数组编译器。核心爆点:他直言"不认为用数组风格写编译器是个好主意"——除非为自举不得不如此,或为证明理论可行性。文章提供了大量一手性能数据(CBQN编译速度约15MB/s,与Java实现的dzaima/BQN相当或慢一半),逐项分析编译策略、GPU支持、错误处理、开发难度,质疑Hsu论文"比nanopass快10倍"的结论可能是基线选择不当。作者坦言数组编译器开发难度远超传统方案,但调试体验意外舒适。这不是通稿或科普,而是一位语言设计者在公开文档中写下的大段真诚反思与尖锐判断,讨论价值极高。 评论点赞收藏472 天前
BQN 数组表示法:显示、列表字面量与串接语法BQN 语言作者 Marshall Lochbaum 亲自撰写的数组表示法技术文档。详细解释 BQN 中数组的三种 REPL 显示方式(转角框显示各维结构、字符串/括号列表单行展示)和三种字面量写法(双引号字符串、⟨⟩灵活列表、‿串接符)。附大量可在线运行的代码示例直观展示从 0 维到 6 维数组的渲染效果。特别有价值的是『为何不用空格作串接』一节:作者坦言羡慕 APL 空格串接的简洁,但指出空格串接在修饰符参数等场景会产生严重歧义,最终选择显式‿符保持一致性,并分享了自己从不适到认可的心路历程。适合对数组编程语言或 BQN 设计哲学感兴趣的开发者。 评论点赞收藏619 天前
为什么要用 BQN?BQN 语言作者 Marshall Lochbaum 亲自撰写的长篇技术辩护,坦诚对比 BQN 与 APL、J 的优劣。核心看点:作者以一手设计者视角,逐条解释 BQN 在基于数组模型、上下文无关语法、一等函数、命名空间语法、组合子设计等方面的取舍逻辑,并用大量代码示例展示 BQN 如何解决 APL/J 的实际痛点——如 J 的函数作为值传递时的诡异行为(名称包装导致 rank 混乱、调用不安全)、APL 的运算符重载和函数轴机制冗余、Dyalog 命名空间构建繁琐。同时也诚实承认 BQN 的短板(缺少复数内置类型、行求和不如 APL 方便、没有 Power Limit 直接等价物、砍掉比较容差后部分场景不便)。文章带有强烈的个人立场和现场经验,不是中立的语言介绍,而是有态度的辩论与设计思路复盘,非常适合对数组编程、编程语言设计、APL/J 生态感兴趣的读者深入阅读和讨论。 评论点赞收藏619 天前
给观鸟者的 BQN 指南BQN 语言作者亲自下场,用谐趣笔法给数组语言的 combinator 原语配上了组合子逻辑里的"鸟名"对照表。从 Kestrel、Bluebird 到 Starling、Warbler,每个 BQN 符号对应一到两种 lambda 演算形式,并附上一则趣闻:曾被误认作"金雕"的组合子,根据 Haskell Curry 1931 年论文被重新鉴定为 Pheasant。文章既有硬核技术映射的可复用参考价值(完整对照表),又有鲜明的个人风格和冷幽默("这些起名字的人多少有点问题,不过我不公开评判他们")。适合对函数式编程、组合子逻辑或数组语言感兴趣的读者,兼具信息密度和阅读趣味。 评论点赞收藏848 天前