历时半年时间,把 Daniel Shiffman 的 《The nature of code》 通读2遍,第一遍快速浏览,第二遍编码实操,极大了提升了自己实际问题代码抽象化的能力,遂做此小结。
为什么要学Processing
Processing是一款所编即所得的软件,使用语言是Java,软件内置各种图像工具,可以很快的编码出图像类的交互形态,非常合适新手入门代码,或编码展示交互原型。
可以学到什么
1.伪码的逻辑性
不同语言有不同的语法,但其背后的逻辑是相通的。因此编码前,注重锻炼自己的伪码思考能力。当伪码逻辑顺畅后,编码只是将逻辑语言转化成代码语言。碰到问题,先从伪码思考逻辑,能极大的提高自己的实际问题代码抽象化的能力。
2.面向对象编程思想
面向对象编程思想概念本身学起来不难。将某个任务抽象成几个对象,对象有其自身的属性,对象间通过方法发生交互。难点在于如何抽象对象这一步,抽象的好,代码逻辑清晰,复杂度小。抽象的差,逻辑冗余,复杂度高。这一点在于多实操,多实践能打通脑回路中的闭塞模块。
3.死磕BUG的毅力
古人云:“写代码一半的时间都在写BUG,剩下的一半是在修BUG”。笔者深以为然。当伪码逻辑整理通顺后,自信流畅的书写完代码,按下Run键,满心期待着跑通效果,一堆 Error 让你怀疑人生。没有选择,挨个Debug,直至跑通。人生何尝不是如此呢,道理皆知,实操问题频出,不死磕,便不能克服这个难点,咬咬牙,Print error。
学习成果展示
结合随机函数形成随机漫步的效果
结合向量熟悉平面中位置,速度,加速度的二维属性
利用物理学基础原理模拟物体在现实世界中的运动
结合弧度制,sin,cos,实现波形效果
结合继承和多态,实现粒子效果
确定目标情况下,感知外界环境,做出判断
根据固定规律进行迭代进化
结合递归,进行规则图形的绘制
根据优胜劣汰进化算法进行迭代进化
通过测试集训练算法
展望
人工智能相关的技术不断前进着,作为技术迭代的见证者,还是要利用业余时间多关注相关领域的知识。希望下一次能跟大家分享学习 Android 或 Fullter 的感受。
附件
1.The nature of code 下载地址(提取码:6yqw)
2.Github 笔者代码地址