text: let content = "### 作者简介**李西峙**：1982年出生于哈尔滨。2005年毕业于浙江大学计算机系（竺可桢学院）。大学期间他在国内外会议和刊物上发表游戏引擎，脚本语言技术，三维动画制作，CPU芯片设计相关论文和著作8篇。2004年出于长期对人工智能的兴趣和研究，他创立了NPL语言（Neural Parallel Language）和ParaEngine 3D游戏引擎，至今写了过百万的开源代码和各种开发工具。Paracraft也是基于NPL语言开发的一款3D创作工具。2007-2015年，他先后获得著名风险投资IDG和国内著名企业家的投资，并任CEO。**李铁才**：1950年出生于上海，是我的父亲，《相似性和相似原理》作者。哈尔滨工业大学及深圳研究生院双基地教授，博士生导师，深圳航天科技创新研究院科技委主任。1996年获航天突出贡献专家称号；1997年获国家特殊津贴；获国家、省、部级科技成果奖18次；获中国发明专利30项，获美国发明专利3项；在国内外发表论文50余篇。历时30年致力于相似性原理及其应用技术的研究。编写了本书第5章`相似原理与人脑仿真`。> 创作本书时还有一个备选副标题：相似原理入门教程。**相似性和相似原理**是驱动人类大脑的基本工作原理，Paracraft也可以看成是使用相似原理进行创作的一个工具。我们会尽量将相似原理的思想融入到本书中，让你在学会编程的同时对人脑和宇宙万物的工作方式有一定的认知。程序员是虚拟世界的造物主，而虚拟世界与现实世界和人类大脑必然有相似之处。本书的一些章节是由我的团队合作完成的，他们是：- **刘远亮**：电梯调度算法，3D世界的编程模型，编程中的建模过程：乒乓球小游戏，编程中的建模过程：迷宫小游戏，编程中的建模过程：钢琴，编程中的建模过程：飞行的小鸟，编程中的建模过程：坦克大战，编程中的建模过程：跳一跳，由电梯调度算法了解编程思维，生命游戏，复杂编程中的建模过程：生命游戏的制作，BlockBot小游戏介绍，复杂编程中的建模过程：BlockBot核心部分的制作，BlockBot小游戏–3D UI，BlockBot小游戏–2D UI，BlockBot小游戏–复杂UI设计，人力资源游戏，如何学习Paracraft编程。- **张大伟**：复杂编程中的建模过程：BlockBot核心部分的制作，BlockBot小游戏–3D UI，BlockBot小游戏–2D UI，BlockBot小游戏–复杂UI设计。- **陈清华**：计算机体系结构，台式计算机模拟，狗狗陪护机器人模拟。- **张磊**：CAD建模“桌子”，CAD建模“空心的盒子”，CAD建模“奥运五环”，CAD建模“杯子”，CAD建模“掷骰子游戏”。
  - **罗阳平**：制作个人网站，创建课程包。
  - **谭雯文**：创建方块，批量操作，电影方块，演员和动画，夏天游泳，制作简易动画开头，BMAX模型，简易BMAX小吉他，简易BMAX小动画，四足动物与镜头震动效果，密室教学，密室开头设计，星球运动仿真教学，BMAX简易骨骼与X文件应用，传送石，电影地震镜头与人物表现，电影方块与过山车，子母电影方块。
  
  ### 如何学习编程
  在深圳大富配天集团NPL语言研发中心，我们每周六都有一个3小时的免费的Paracraft编程导引课，参加的人主要是小学生，偶尔还有家长和大学老师，总共已经30多次了。
  
  来的大人们经常会问我：“应该如何学习编程？”；而小孩们总是迫不及待的运行电脑上的Paracraft，自己探索起来。 
  
  学习编程很简单。首先，你需要买一台带键盘的PC机或笔记本电脑。编程是需要打字的，因此需要鼠标和键盘。遗憾的是我发现50%的普通家庭只有手机，PAD或者15年前无法开机的电脑。如果你已经有最新的笔记本电脑，可以再购买一个更大的显示器和独立的鼠标键盘，就可以将笔记本改造成台式机。
  
  其次，你要学会在电脑上安装一个能编程的软件，本书的读者需要安装Paracraft（后面会教你）。
  
  最后，你要允许自己的小孩儿使用电脑，哪怕是玩游戏。99%的家庭之前都做不到这三点，因此虽然大多数学校都开设了编程课，孩子也不可能学会编程。当你在家中做到这3点时，你会发现很多孩子是天生的程序员。孩子们会逐渐远离手机，更愿意将时间花在大屏幕上，去探索别人的作品或自我创作。这就好比孩子都喜欢模仿大人的语言和行为，当你给它一大堆积木，他们会先破坏再搭建。 
  
  如果你的孩子已经是一个手机游戏高手，那么不妨让他到电脑上玩Paracraft。Paracraft中有大量其它孩子，老师，程序员创建的3D游戏和动画作品，每个作品都可以随时查看背后的逻辑与代码，别人的作品就是最好的老师。 
  
  学习计算机语言和学习其它自然语言，如中文和英文，是一样的，你要不停的使用它，创造出自己的作品。 
  
  其实人类学习任何技能都是一样的，因为教育的本质就是让人保持思考和一直有事可做。
  
  因此，我们还为Paracraft开发了一个学习平台，叫做KeepWork，官网是：
  ```
  https://keepwork.com 
  ```
  KeepWork有2个字面意思：
  - 保持(keep)有事可做(work)：人不能放弃工作和创作，大人小孩都一样。这个是教育的本质。
  - 保存(keep)作品(work)：我们保存了你的所有作品和更改历史。作品是未来教育的重要评估方式，不再需要考试的分数。
  
  只要你安装了Paracraft，后面的一切就可以教给孩子自己去探索、学习和创造了。而你只需要观察孩子是否一直保持有事可做即可。本书其实是Keepwork上内容的一个浓缩，启发孩子去探索和创作超过50个项目。出书的原因是为了让成年人也能快速和系统的了解Paracraft和编程理论，方便教育机构的教学，以及保护孩子的视力。但是真正入门编程，仍然需要大量在计算机上的打字练习和项目实践。
  
  
  ### 本书有什么
  本书分为上，中，下三部：
  
  - 上部：50个编程项目
    - 通过思维实验解决问题, 理解AI和体验编程
  - 中部：编程理论
    - 系统的讲解变量，函数等重要编程概念
  - 下部：参考手册
    - 本书中所有的编程词汇，都可以查询
  
  这三部分内容分别代表了程序员的3类重要行为：搜索项目、学习理论和寻找文档。下面来说说这3类行为:
  
  - 1. 搜索项目：程序员在解决一个问题时，通常会先去搜索别人的开源项目来参考。新人学习编程也是从项目开始的，而不是理论或语法。因此上部我们将大量的编程项目按照一定的次序归类到了几个章节中。你可以根据自己的能力和喜好从任何一个开始做起。这些项目大多来自我们过去每周六的编程导引课，因此都可以在2个小时内完成。 
  
  - 2. 学习理论：计算机程序已经深入到了人类科技的每个角落：物理，化学，生物，航天，材料，数学，动画，游戏等等。每个领域的程序员都需要学习对应的理论知识，然后用程序创造出符合相似规律的虚拟事物来。在本书的中部，我们会系统的讲解计算机编程的通用理论，这些理论和电子计算机的工作原理相关，因此几乎适用于所有现代计算机语言。而关于通用理论之外的理论，我们放在第一部分的每个项目中讲解。
  
  - 3. 寻找文档：一般计算机语言的全部内置语法和词汇只有不到20个。因此对于已经精通一门语言的程序员，学习一个新的计算机语言大概只需1小时。但是编程是一个不断创造新词汇（函数）的过程，我们在编程时需要去使用其它程序员创造的词汇，这个词汇的数量从几百到上千，甚至几十万，每个领域都有自己的词汇，每个项目也有自己的词汇。程序员会给这些新词汇写使用说明书，我们叫做文档，由于文档数量太多，即使是资深程序员也只能靠模糊查询，而不是精确记忆。我们每写一行代码都可能需要先查看文档。在本书的下部中，我们列出了在上部的项目中使用到的所有词汇的文档。这些词汇已经足够开发任何你能想到的动画和游戏。 
  
  ### 如何使用本书
  对于自学者，我们希望用户从本书上部的任何一个项目开始学习编程。然后遇到任何不懂的地方可以在中部和下部中找答案。但是请你不要去记忆任何下部中的内容，只要有一个模糊的印象即可。即使是像我这样有30年编程经验的程序员，也经常在这3种行为之间切换，只不过专业程序员不会看书，而是从互联网中通过搜索去获取这些内容。因此初学者可以先使用本书，然后逐渐脱离本书，直接到Keepwork网站或Paracraft软件中找答案。
  
  本书也可作为编程教材，上部的每个项目都可以作为一个2小时的编程课。我们为每个项目制作了在线课程，目录中的项目ID为在线课程ID，方便老师在课堂教学，详见第一章的开始部分。老师可以根据课时数，按照任意自己喜欢的顺序和学生的能力选择课程项目，我们的网站上给出了几种参考性的教学计划。 
  
  本书的中部（理论部分）不建议在课堂上教学，但是老师可以安排一些答疑课，或者每节课留一些时间给学生提问。计算机语言中需要解释的知识点不到20个，更多的是需要大量实践。课堂上的教学：`应以完成项目制作为目标，而非彻底理解里面的所有细节`，鼓励学生间相互帮助。而贯穿整个学期的教学的大目标应该是`引导学生用课余时间完成自己的计算机项目`。我们建议老师在每节课开始或结束的时候，用5分钟的时间请班级中的学生展示一下自己在课余时间完成的作品，如果还没有这样的作品，可以使用我们网站上的学生作品视频。我们的网站上每月都举办编程大赛，里面有大量学生作品。 
  
  当学生开始创作自己的作品时，有能力的老师应该定期去阅读学生的作品代码，并给出修改意见。这就如同语文老师要批改学生的作文一样。这对老师的编码水平有一定的要求，但是如果学生将作品分享到KeepWork， 其他高水平的用户就可以提供这种帮助或服务。 
  
  在第6章`对未来教育的思考`中，我们给出了如何以本书为起点，构建从小学1年级到大学的编程学习体系。本书的`附录4`具体的讲解了如何开展Paracraft编程教学。
  
  ### 谁该阅读本书
  具有阅读能力的人都可以阅读本书，本书争取只使用不超过20个专业术语（见附录3）去讲解计算机编程。 在我小学时，经常读一些大人门的科普书籍，总能有读懂的部分，也鼓励我去搞清楚看不懂的部分。哪怕是最高深的理论都应该能在生活中找到相似的比喻，如果找不到，很可能是这个理论本身有问题。 
  
  我心目中的读者包括：
  - **喜欢编程的小朋友**：尽力去理解本书，但你不需要全部看懂，甚至开始你只需将本书看成50个编程实验的绘本，但需要你亲自动手去体验代码和计算机的创造力。 
  - **家长**：我理解大人们学习编程已经没有小孩儿那样容易了，因为你可能没有时间和兴趣去动手写代码，但是至少你可以快速的阅读本书，回答一些小孩儿提出的问题。 
  - **老师**：我鼓励所有年轻教师，无论你是教什么学科的，都能像小朋友一样去动手学习计算机编程，达到可以随心所欲的入门程度。当你掌握了Paracraft，你就打开了一扇门，你能创造的将不只是PPT（文字和图片），而是动画，逻辑与交互。未来教育需要大量教育工作者的创造；项目式和交互式学习将取代45分钟的课堂学习。在我们的官网（keepwork.com)我们为老师提供了创建项目式课程学习的编辑工具，本书中所有的项目已经被其它老师做成了交互式在线课程。我们期待更多，各个领域的教育工作者加入我们，用计算机技术改变未来的教育。我们为教育工作者提供培训。
  - **程序员**：Paracraft是一个开源的软件生态，我们期待你的加盟，一起开发面向人工智能和未来教育的新应用。有经验的程序员也许也能从本书中获得一些编程方面的启发。如果你既是程序员又是一位家长，Paracraft是你最好的亲子读物了，你应该和孩子一起完成一个个项目并通过我们的官网分享出来。
  - **大学生和大学老师**：Paracraft在过去几年中有很多作品，课程，CAD工业设计，书籍等都是由大学老师或大学生完成的，希望更多的大学生和老师选择Paracraft作为毕业设计的工具或题目。我们的官网还提供了人人可为老师的教学机制，希望大学生可以教小学生，并一同完成项目和学习编程：当别人的老师是最好的学习方式。 
  
  ### 站在前人的肩膀上
  Paracraft是使用NPL语言开发的。从2004年创立NPL计算机语言，到2005年制作ParaEngine分布式游戏引擎，到2007年发布儿童动漫创作平台，到2009年发行魔法哈奇3D创想乐园，到2012年发布Paracraft创作工具，到2015年NPL语言开源，到2018年发布Keepwork。期间我吸收了很多前人的思想和成果。 
  
  我无法罗列全部，但是最重要的思想是我父亲的《相似性和相似原理》，初稿是写于1982年，2015年后我也加入了该书的修改和补充工作。其中包含了对多组时空序列及其相似性的数学表达与大量研究案例。宇宙内部的相似性从易经开始，到亚里士多德，到后来，它已经被无数科学家研究过。可能是它太普遍，导致我们在使用它时，忽略了它的存在。在人工智能时代，我们有必要将它系统的作为一门独立的理论去研究。人类的大脑由记忆与单向连接构成。记忆就是时间序列，或者说是动画，我们很难去修改自己的某个记忆，但是我们可主观的选择一段记忆的时间起点在大脑中播放。
  
  NPL语言的基础语法是基于Lua的, 后来又受到Lisp语言的影响，使得它支持动态语法扩展。Lua的语法是全世界公认最简洁的。它被无数高级脚本语言采用作为基础语法；同时它拥有全世界最快的动态编译器Luajit，使得我们可以用C/C++去扩充它。
  
  在本书中，第一步：我们要教会你如何随心所欲的创建任意复杂的三维时空序列，也就是动画。我们的网上有成千上万的小朋友自己创建的Paracraft动画片或电影供你学习和参考。第二步：我们要教会你如何用代码去控制这些动画的播放起点，你就像一个导演或音乐指挥家一样让你的动画在你代码的指挥下播放。当你可以随心所欲的掌握这2个技能时，你发现你已经可以像控制自己的思想和梦境一样去控制数字世界中的一切。 
  
  2007年和2009年当我用这种思想创建儿童动漫创作平台（KidsMovieCreator）和魔法哈奇时，还不知道后来风靡全球的一款游戏叫Minecraft。当我2012年深入研究它时，才发现它的魅力。但我是从相似原理的角度来看它的，在时空序列的数学表达中，世界应该是粒子化的，而且应该是其大无内，其小无外的。Paracraft将这种粒子化建模的思想发挥到了极致，用于任意的动画创作和编程。
  
  MIT实验室的Scratch对少儿编程的贡献是巨大的，它让更低年龄层的用户可以自学编程。Paracraft后来也引入了类似Scratch的积木式编程，并且我们让它可以控制3D世界中的角色，并可以平滑的过渡到基于文本的编程。我们还提出并实现了一种面向记忆的编程模式。
  
  无法罗列全部前人的成果，所以我们从最开始就在Github上开源了我们的所有成果，包括NPL语言和Paracraft。至今有上百位开发者参与其中，我们希望更多的程序员和教育工作者可以在我们的研究成果上继续探索。
  
  ### 致谢
  感谢家人
  感谢老师
  感谢Paracraft的用户，尤其是奇仔，桃子，无心，阿杰。是你们的辛勤付出让我们的工具可以大放异彩。
  感谢魔法哈奇超过500万注册用户近10年来的陪伴，很多用户从小学升到了大学，仍然没有完全离开这款3D社区和Paracraft。
  感谢我过去和现在的团队，未来我们还有很长的道路要走。很多中途离开的同事依然在远程参与我们的开源社区。
  感谢合作伙伴与多位教育工作者愿意在我们还不完善时，坚持使用我们的产品。
  感谢资方，在最艰难的时刻依然给我们无私的赞助，能够让我们去实现一个10年以上的长期规划。"