回想学习编程的这半年。学习了CS50和MIT101的公开课,了解递归,栈,堆,指针这些基础概念。学习了Python相关的教材,照着书写了个打外星人游戏,也用Django编写了两个博客。再到学习前端,HTML和CSS(HTML与CSS学习小结2017.04.20)再到接触JavaScript,也用微信开发者工具开发了一个微信小程序。
经过这半年的自学,我最大的感受——学习一样东西好难……
难处体现在多方面。学什么资料,怎么学,怎么确保自己学的正确,到底要学到什么程度。一旦考虑得多了,人就容易敏感,焦虑,沮丧。
但到后来开始学习JavaScript这门语言的时候,我还是觉得不能纠结,别想太多,选一本教材开始读吧,于是开始读这本《Head First JavaScript Programming》。还是典型的Head First系列风格,啰啰嗦嗦但真的是brain friendly,作为一个没有编程底蕴的学习者,只要认真阅读,会觉得编程也没那么的难。
当然这是假象,由于缺少实践经验的沉淀,实际编程依然还是很难。Head First系列真正伟大的点在于把各种编程概念通过实际例子反复讲清楚了,让你在真正自己去实践的时候,在产生了问题然后解决了问题的过程中,对见到的那些知识点幡然领悟。
这是一个美妙的过程,但是也是一个漫长难熬的过程。
具体来看,《Head First JavaScript》全书13个章节,总共617页,光是这一点就让人崩溃。那么看完这本书,我具体学到了什么呢?挑重点来说:
- 函数的作用域问题
- JS的键值数据结构——对象
- JS的一些“坑”,比如var声明,类型转换
- DOM结构,异步编程event handler
- JS里一切皆对象,注意是一切,函数也是对象(意味着任何元素都可能有属性和方法)
- 函数作为一等公民的灵活强大
- 函数一等公民背后:匿名,闭包
- 以及实现面向对象技术的构造函数constructor
- 配套的原型和原型链实现了面向对象思想里的继承
这么看来,我确实是认认真真学习了的……因为整个阅读过程里的那些煎熬、疲倦还历历在目,实践编程时顿悟那些知识点的过程还在眼前未消失。
然而真正的绝望还没开始。学习了这些后,再去请教有经验的人,无论请教谁,我敢保证,百分百,他会说:“还早,这才开始。没骗你。”怕不怕,绝望不绝望。
虽然很怕,很绝望,但却也是事实。铺好了地基,又得开始盖楼层,编程领域也遵循这样的道理。
开始有一种感受,学习编程,应该说学习这一行为本身就是在与人的本性对抗。
人的本性是什么?引一段话:
时间都去哪儿了?
在去年年底思考内容和娱乐这个主题的时候,我开始意识到,每个人身上最终稀缺的是时间。只有时间不可复制或回溯,一旦你的时间花在了这件事情上,就没有办法花在另外一件事情上。正因为这样,所有的商业模式在时间的竞争上基本是零和的,如果一件事情获得了更多的时间,那么必定是另一件事情损失了这些时间。人口的增长,以及多年以来效率的提升,在边际上提升了人类可用的时间总和,但很快又被新出现的事物吸引走。
新一代消费品牌和业态的兴盛又是新一轮对时间的重新瓜分。人性在食色诱惑面前的无知、脆弱、愚蠢和贪婪,正是推动资本主义巨轮霍霍向前的动力。这艘巨轮载着我们所有人的时间,在无形大手的指引下,不知道要驶向何方。
——摘自文章《日本消费考察随想》
能轻松就不要繁重,能简单就不要复杂,人的本性就是吃睡做,绝对不是学习。有谁如果总是在审慎,焦虑,那绝对会被认为“非正常”。
不过学习虽然很难,但世界毕竟还是很大,只要多去观察留意的话,能轻松学习者大有人在,学起来痛苦的也很多。不同的环境,不同的想法也就有了不同的行为。
可能“学习是在对抗本性”这种想法其实是伪命题。其实我真正想表达的就是现在我开始意识到“世界很大,生命无常”这样一种感觉,是“要多想”还是“别想多了”这样的疑问。
总之困惑越来越多。所以干脆不想多了,用不断地学习来对抗困惑,就这么坚持下去看看吧。
对JavaScript的学习,对编程的学习都才刚刚开始。