当前位置: 首页 > news >正文

DeepSeek总结的使用实体-组件-系统和基于存在性处理进行Python编程简介

来源:https://root-11.codeberg.page/intro-book-python/

使用实体-组件-系统和基于存在性处理进行Python编程简介

作者:Bjorn Madsen
更新日期:2026-05-09

在线阅读:Codeberg · GitHub Pages

克隆源码:git clone https://codeberg.org/root-11/intro-book-python.git·git clone https://github.com/root-11/intro-book-python.git

问题反馈:Codeberg · GitHub

一个课堂:理解、建模、求解、验证、改进

本书从数据导向设计、实体-组件-系统(ECS)和基于存在性处理(EBP)的第一性原理出发,教授编程。它仅使用Python和numpy作为编程语言。

本书围绕四十三个概念(有向无环图)及其规范表述(词汇表)进行结构组织。章节短小精悍——两到三页的散文叙述,随后是四到十二个逐步深入的练习。概念仅在构建之后才被命名:每个章节通过可运行的代码赢得其词汇,而非相反。

全书的主线是一个小型生态系统模拟器,分阶段构建,从一百个游荡的生物逐步扩展到一亿个流式传输的生物。模拟器的规范位于code/sim/SPEC

这是本书的Python版本——与同一本书的Rust版本是姊妹卷。相同的四十四个章节,相同的DAG,相同的模拟器。不同之处在于每章对Python默认行为将读者推向何处的评论,以及为什么ECS和EBP即使在使用慢速语言时也能胜出。该版本的核心论点是:ECS和EBP优于面向对象编程,因为它们处理更高效(操作集中在数组上),扩展更清晰(数据导向组合优于类图),并且内存占用更小(类型化列优于对象图)。

支撑这个版本的是证据。每一个重要的论断都附有一个测量结果,读者可以在自己的笔记本电脑上在一分钟内重现。这些示例位于code/measurement/目录下,通过uv run code/measurement/<file>.py运行。

本书仍在编写中。章节顺序由DAG决定;阅读顺序可以是线性的(从前到后),也可以按照交叉链接随意跳转。

本书的读者对象

你上周用过Python。你写了一个类,将实例放入列表中,然后遍历它们。你的代码能运行,但比预期的慢,并且你开始怀疑标准的惯用法是否是瓶颈。

本书适合那些想找出答案的人。本书的前提是,这些惯用法确实是瓶颈——并且本书教授的架构正是Python(当它真正快的时候)所擅长的。

许多在线书籍包含一个可以在浏览器中运行代码的游乐场。本书故意不包含这种功能:测量只有当它们来自你自己的硬件时才有意义。

背景知识

你应该熟悉高中代数和命令行——运行命令、切换目录、看到错误信息时不惊慌。有一台能上网的笔记本电脑就足够了;本书使用Python 3.11+、numpy和uv进行环境管理。其他一切都使用标准库。

你不需要事先具备数值计算、并行计算或游戏开发的专业知识。本书将numpy和模拟器一起教授;语言是工具,而非主题。

初体验

在命名任何词汇之前,这里用十五行Python代码展示ECS世界的样子。一百个生物,每个都有位置和速度,模拟时间运行三十个滴答。没有类,没有实例,没有方法调用——四个步调一致的numpy数组索引,以及一个函数(每滴答的更新函数),它一次性更新所有生物。

importnumpyasnp n=100x=np.arange(n,dtype=np.float32)*0.1y=np.sin(np.arange(n,dtype=np.float32))vx=((np.arange(n)*7)%11).astype(np.float32)*0.01-0.05vy=((np.arange(n)*13)%7).astype(np.float32)*0.01-0.03fortickinrange(30):x+=vx y+=vyiftick%10==0:print(f"tick{tick}: creature 17 at ({x[17]:.2f},{y[17]:.2f})")

在本地运行它。会打印三行,然后脚本停止。这就是本书其余部分将要扩展的完整形态:表(四个数组)、一个滴答(外层循环)、一个系统(每滴答的更新函数)。后续的所有内容都是让这种相同的形态能够承载一亿个生物而不崩溃的规范。

熟悉的Python形态——一个Creature类、一个实例列表、一个step()方法——在这种规模下也能工作。但在百万级别时它就会停止工作,原因在第2节:每个生物的内存消耗增加一个数量级,每滴答的速度减慢一个数量级。本书教授的是能够经受住下一个量级扩展的布局。

运行代码

Python没有Rust Playground的等效物——没有浏览器托管的运行器能够重现章节中引用的数字。本书中的每个测量和示例都在本地运行,使用uv来管理Python工具链和环境。要运行任何代码,你需要克隆本书的仓库:

gitclone https://codeberg.org/root-11/intro-book-python.gitcdintro-book-python uv run code/measurement/cache_cliffs.py

每个code/measurement/<name>.py文件是一个练习组,可以独立运行。它打印出的数字是属于你的——它们来自你的硬件。练习会问“你的机器运行这个有多快?”,而这个问题只有在本地才有真实的答案。

从模拟器章节(第11节及以后)开始,练习不再是独立的脚本。它们构建主线:一个Python程序,从一百个游荡的生物增长到一亿个流式传输的生物。该程序在多次运行之间保持状态,这正是uv run和项目布局为你带来的好处。

配套版本

如果你已经熟悉Python,并希望获得编译时强制执行本书通过约定教授的规范,那么Rust版本涵盖了相同的四十四个章节,使用Rust语言实现。架构相同;语言不同。许多读者发现,观察借用检查器在Rust中强制执行本书要求作为规范的约束,也是一种有用的反向校准。

http://www.zskr.cn/news/1386372.html

相关文章:

  • 传统健身追求高强度运动,编写低负担轻健身规划程序,主动碎片化微运动,颠覆苦练健身观念。
  • 告别纸上谈兵:用Python+CarSim/Carla仿真复现C-NCAP 2021六大ADAS测试场景(含AEB VRU行人/二轮车)
  • 数组专项(二):二维数组、滑动窗口思想
  • Python算法基础篇之分治算法原理与实战
  • 告别道路预测老套路:用ParkPredict+模型思路,解决停车场里的‘鬼探头’难题
  • HFSS仿真结果怎么看?一文读懂S参数与电场图,让你的T型波导分析不再迷茫
  • 动态目标跨镜无缝接力追踪技术在旅游景区客流疏导与异常预警场景中的应用白皮书
  • PAXI- Design LLD
  • 从社交关系到分子结构:图解GCN(图卷积网络)到底在‘看’什么?
  • 2026年5月正规的金山别墅平层大宅装修机构如何选厂家推荐榜,全案整装设计、全屋定制、别墅装修、旧房翻新厂家选择指南 - 海棠依旧大
  • 基于MAX78000的离线语音控制RGB灯带:端侧AI全流程实践
  • 终极罗技鼠标宏配置指南:5步实现PUBG完美压枪控制
  • 智能车竞赛实战:从传感器融合到控制算法的完整开发指南
  • AI时代程序员职业发展与个人创业可行性研究报告
  • 避坑指南:Sentaurus与SILVACO TCAD仿真NPN三极管,结果为啥差了几十uA?
  • Jetson Nano新手避坑指南:从选对HDMI转接头到搞定aarch64架构软件安装
  • 别再被论文里的‘95%置信度’吓到了!用Python模拟100次抽样,3分钟带你搞懂置信区间
  • DIY USB-MIDI转五针DIN转换器:基于Arduino Pro Micro的硬件与软件实现
  • AI软件测试培训机构排行:淘宝电商设计培训、电商平台设计培训、电商设计线下培训、短剧视频剪辑培训、短视频剪辑培训选择指南 - 优质品牌商家
  • RAG 实战指南:深入浅出向量数据库 Milvus
  • 别再算错夹持力了!一份给机械新人的气动手指真空吸盘选型避坑指南(含安全系数详解)
  • 生产级部署与监控:从Docker Compose到Kubernetes的AIGC工作流平台运维
  • 从实验室到你的电脑:手把手教你下载、配置和使用OpenBCI/Emotiv的EEG公开数据
  • 2026年Q2回转窑烘干机可靠品牌排行实测盘点:喷雾烘干机/工业滚筒烘干机/带式干燥机/旋转闪蒸烘干机/桨叶干燥机/选择指南 - 优质品牌商家
  • 杰理之 AUX模式下有杂音【篇】
  • DIY辉光管时钟:GPS校时与高压驱动方案全解析
  • 从零打造吉他效果器:软硬削波、哇音与晶体管过载电路全解析
  • DIY Wersi风格模块化合成器:模拟与数字融合的硬核音频项目
  • BLE四大广播模式详解:可连接/不可连接/定向/周期广播
  • 从零设计高保真电吉他拾音器:低阻抗、宽频响与现代音频工作流适配