当前位置: 首页 > 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.jsqmd.com/news/887363/

相关文章:

  • 传统健身追求高强度运动,编写低负担轻健身规划程序,主动碎片化微运动,颠覆苦练健身观念。
  • 从零打造复古辉光管腕表:高压驱动、低功耗与微型化设计实战
  • 从Wi-Fi到蓝牙:DPSK差分相移键控在实际无线通信系统中的应用与MATLAB验证
  • 新手村任务:成为一个架构师需要哪些装备?
  • 航空发动机分布式控制系统关键技术【附代码】
  • 数组专项(二):二维数组、滑动窗口思想
  • 番茄小说下载器终极指南:三步构建你的离线阅读自由王国
  • 告别道路预测老套路:用ParkPredict+模型思路,解决停车场里的‘鬼探头’难题
  • 告别光秃秃的地形:用Unity Terrain Tools打造风格化森林与草地的进阶技巧(附素材资源推荐)
  • Python算法基础篇之分治算法原理与实战
  • 传统日程表塞满任务,编写留白日程规划程序,强制预留放空空白时段,拒绝时间被完全填满。
  • 动态目标跨镜无缝接力追踪技术在旅游景区客流疏导与异常预警场景中的应用白皮书
  • Python装饰器高级模式:从日志到AOP的完整实现
  • 凸优化理论导向的阵列天线方向图综合优化算法【附代码】
  • 基于边缘AI与LoRa的野外监测系统:从硬件设计到云端部署全解析
  • ssm电影网站(10097)
  • D3KeyHelper:暗黑3玩家的智能按键助手,告别重复操作疲劳
  • 基于MAX78000的离线语音控制RGB灯带:端侧AI全流程实践
  • Python自动连连看:计算机视觉如何实现游戏外挂的终极指南
  • 如何在5分钟内免费搭建你的第一个工业级虚拟PLC系统
  • 从社交关系到分子结构:图解GCN(图卷积网络)到底在‘看’什么?
  • 2026年5月正规的金山别墅平层大宅装修机构如何选厂家推荐榜,全案整装设计、全屋定制、别墅装修、旧房翻新厂家选择指南 - 海棠依旧大
  • 智能车竞赛实战:从传感器融合到控制算法的完整开发指南
  • 3步解锁音乐自由:ncmdump实现NCM转MP3的终极指南
  • 告别依赖地狱:用Anaconda虚拟环境一键搞定HiC-Pro 3.1.0安装(附细菌基因组实战配置)
  • 基于THAT1240芯片的平衡-非平衡音频转换器设计与实践
  • AI时代程序员职业发展与个人创业可行性研究报告
  • 2026年5月行业内江苏企业技术中心公司怎么选择厂家推荐榜,省级企业技术中心/国家级企业技术中心/市级企业技术中心认定辅导厂家选择指南 - 海棠依旧大
  • 告别纸上谈兵!用Multisim 14.0仿真这8类经典运放电路,实测波形与理论对比
  • 别再被论文里的‘95%置信度’吓到了!用Python模拟100次抽样,3分钟带你搞懂置信区间