这篇博文详细介绍了使用函数式四叉树在Clojure中构建鸟群模拟的过程。作者在此之前的工作基础上,扩展了函数式四叉树的创建,增加了多个焦点,并为200个“鸟”实现了鸟群行为。 该模拟对鸟类建模,具有速度、感知和速度等属性。每只鸟根据三个关键的鸟群规则更新其位置:**对齐**(与邻居匹配方向)、**凝聚**(向群体中心移动)和**分离**(避免拥挤)。这些规则被实现为施加在每只鸟的速度上的转向力。 四叉树对于有效地寻找附近的鸟类至关重要。作者强调了对四叉树的改进,包括防止无限递归的最小叶宽度,以及简化对象分配到子节点的方法。搜索函数递归地检查搜索半径和树节点之间的重叠,通过避免平方根计算来优化性能。 虽然不追求100%的纯函数式,但代码仍然很大程度上是函数式的,鸟的状态在原子中管理以便进行Javascript编译。作者强调首先优先考虑函数式清晰度,然后优化性能——在最小的妥协下实现60fps。代码可在Github上获取。
布莱恩·克尼汉观察到,调试比编写代码本身更困难——可能困难一倍。一种流行的观点认为,如果你用你最大的聪明才智编写代码,你可能没有足够的聪明才智来调试它。但这并不是说要避免熟练的编码。
核心观点是,面对调试挑战*迫使*你变得更加熟练。所需的“聪明才智”并非天生,而是通过实践培养出来的。在您认为自己理解的代码中遇到错误,会促使您扩展自己的能力,受到诸如自豪感和好奇心等因素的驱动。这个过程,被称为“克尼汉的杠杆”,将修复错误的短期努力转化为对您作为程序员的长期投资。
故意避免复杂的解决方案以简化调试会阻碍这种进步。虽然令人沮丧,但解决具有挑战性的代码符合“心流”的心理概念,促进技能发展。最终,解决看似不可能的代码的答案不是避免复杂性,而是参与其中并从中学习。
## 86Box 2025年12月更新 – 摘要
86Box 2025年12月的发布重点在于性能改进和扩展的硬件支持。通过新的C运行时库、动态重编译器优化(针对ARM和Apple Silicon)以及视频卡的增强多线程,提高了模拟速度。
一项重大变化是将大量的软驱声音录音移动到一个单独的“资源包”中,因为其体积庞大 – 必须下载并与模拟器一起安装。其中包括对软驱声音准确性的改进,包括来自多个驱动器的新的录音。
本次更新增加了对众多新机器的支持,包括Socket 1、5、7和370系统,以及扩展的BIOS选项和现有平台的修复。硬件新增包括新的声卡(Crystal CS4232,OPTi 82C930/931)和CD-ROM/DVD驱动型号。
大量的错误修复解决了显示故障、输入问题和声音问题,提高了各种模拟硬件的兼容性和准确性。Windows 7和8的支持持续进行,如果尚未安装,则需要Visual C++ 2015可再发行组件。