复杂的东西没有想象中那么复杂
以前没有接触过编程的时候对编程有一种误解,认为写代码就是一种很牛逼的行为,就是普通人都难以做到的一件事。然后从未想过要去学习编程,更没有想到自己还可以从事这个职业。
现在回过头来看看,我很早的时候就已经在学习编程了,比如自己研究按键精灵写了一些代码,当时我不知道那就是编程,我以为那不就是一个逻辑运算吗?运用一些数学知识就能解决的问题。
再仔细想想,原来我在小学玩游戏的时候就已经在学习编程了。当时玩的游戏叫做《坦克大战》,那个游戏当时挺火的,玩过插卡游戏的人应该都知道。
如下图
这个游戏有一个功能就是可以自己diy地图,也就是自己创建自己想要什么样的地图,在游戏力所能及的情况下,你可以创建你能够想象出来的任何地图。
然后当时想着一个问题,在我创建的这个地图上那些坦克只能如何如何运动?只能在何种范围内生存?然后我按照这种思考方法,就能够让我创建的地图对我永远有利。
虽然我提前预判我编出的地图会产生什么样的结果,但实际上当我运行了游戏之后又发现了地图上的一些漏洞,然后我又开始修补,最后才能够接近完美。
而编程的过程和这个差不多,也就是让机器按照我既定的程序执行。如果输出的结果错误,那么一定是我的程序有问题,于是我又反复修改直至正确。
这几年有一款游戏也很火,叫做《我的世界》,这个游戏也有点类似编程一样,可以自由构建你想要的世界。
首先你得知道自己想要的世界是什么样的,先在烦大脑中大概想一想,然后就可以实践了。最后发现有偏差,继续修改,直到你想象中的情况和结果相同。
你看,看起来复杂的编程其实和游戏差不多。
当我开始学习编程的时候我渐渐发现编程的原理实际上很简单,但是真的那么简单吗?
简单的东西也没有想象中那么简单
最开始接触到的几个程序都很简单,这是从现在看过去。但是当时我并不这样想啊,随便写一个很小的程序都要费很大的力气。
原理很简单,知易行难。
开始写程序的时候才发现很多我以为懂得的知识其实并不太懂。比如很小的一个功能,在刚开始我都要花费几天的时间才能完成。
真是应了那句话万事开头难。
但是编程这事也不是说开头难完之后就不难了,之后还有一堆有一堆更难的问题。
但是后面的问题都是基于前面的积累从而变得越来越难,就像打怪升级一样。
正如《道德经》说:天下难事,必作于易 ,天下大事 必作于细。
于是那些难的东西实际上都是由最开始的简单构成的。
不断思考,不断获得成就感
编程一入深似海
只要学习了编程,那问题不是一般多,任何一个小小的程序可能都会引发无数问题,导致了一个情况就是必须不断思考解决问题的方法。
当我解决了一个又一个问题的时候还有些许成就感。还能够体会到打怪升级的乐趣。
那乐趣,就是不断解决更难的问题带来的。
思考是免不了的,因为问题摆在那,不解决它它不会自动被解决,只有去,去尝试才能够被解决。
在不断解决问题的过程中,我渐渐发现深入思考能力真的是一项很重要的能力。
这里有个故事:
美国华盛顿广场有一座宏伟的建筑,这就是杰弗逊纪念馆大厦。这座大厦历经风雨沧桑,年久失修,表面斑驳陈旧。政府非常担心,派专家调查原因。
调查的最初结果以为侵蚀建筑物的是酸雨,但后来的研究表明,酸雨不至于造成那么大的危害。最后才发现原来是冲洗墙壁所含的清洁剂对建筑物有强烈的腐蚀作用,而该大厦墙壁每日被冲洗的次数大大多于其他建筑,因此腐蚀就比较严重。
问题是为什么每天清洗呢?因为大厦被大量的鸟粪弄得很脏。为什么大厦有那么多鸟粪?因为大厦周围聚集了很多燕子。为什么燕子专爱聚集在这里?因为建筑物上有燕子爱吃的蜘蛛。为什么这里的蜘蛛特别多?因为墙上有蜘蛛最喜欢吃的飞虫。为什么这里的飞虫这么多?因为飞虫在这里繁殖特别快。为什么飞虫在这里繁殖特别快?因为这里的尘埃最适宜飞虫繁殖。为什么这里的尘埃最适宜飞虫繁殖?其原因并不在尘埃,而是尘埃在从窗子照射进来的强光作用下,形成了独特的刺激致使飞虫繁殖加快,因而有大量的飞虫聚集在此,以超常的激情繁殖,于是给蜘蛛提供了丰盛的大餐。蜘蛛超常的聚集又吸引了成群结队的燕子流连忘返。燕子吃饱了,自然就地方便,给大厦留下了大量粪便……
因此解决问题的最终方法是:拉上窗帘。杰弗逊大厦至今完好。
你看,要是不深入思考我们是难以找到最终的答案的,从而做出来的决定不同,导致的后果也不同。
在编程的时候只有深入思考才能够写出正确的程序,只有真正理解了项目的需求才能够写出有用的代码。
知道了实践才是检验真理的唯一标准
在编程的世界,对或错,真或假都容易判断。因为结果就摆在那里,日常生活中我们失败了可能还会自欺欺人不愿意接受事实。但是编程不行,错了就是错了,不能抱怨机器有问题而是代码有问题。
于是每次自己的想法通过编程实现后都能通过编程去检验。
编程算是反馈很高的一种事情了,很容易得到反馈,任何想法都能实践,要么得到答案,要么错误。
同理,一个人说了什么并不重要,看他做了什么。因为说出来的东西是没有经过检验的,只有真正去做了才能得到真正的经验。
总结: