简略翻译一篇《Clojure for the Brave and True》作者 Daniel Higginbotham 写于2017年4月16日的博客吧,这篇文章就是讲的“如何高效地学习编程语言”。
原文为《Techniques for Efficiently Learning Programming Languages》,大觉得看原文更好的,可以去查找阅读。
学习编程语言是一种技能:做好了你就能体验到多巴胺给你的快感,做不好那么就是接二连三的沮丧感以及想要放弃的念头。
不断考验自己、战胜能力错觉
其实最坏的学习方式就是不断地重读,这会让你产生你理解了所涵盖主题,因为熟能生巧能让你看起来毫不费力的理解这个主题,但研究人员将这个称之为能力错觉。
更好的方法是不断测试自己,不要重读函数、类、对象到底是什么,而是不断要求自己去定义这些概念,或者说在一个简短的程序里面尝试着去实践他们,强迫自己以某种方式去真正展示自己的理解。或许这个过程是痛苦的,但是这对于长期记忆是非常有效果的。每次阅读材料之前试着去测试一下自己,比如在开始新一章学习之前尝试着去练习,这其实是很好的辅助记忆。
下面有一些具体的方法:
阅读之前试着去猜想接下来你要学习什么,并且写下来。
阅读之前先尝试做练习。
不断地练习,即使是最难的练习,可以放弃一些练习,但是你首先你必须尝试一遍。
阅读一个简短的程序并且尝试自己不看源码的情况下去重写,并且尝试去优化他。
对象、类、方法、或者高阶函数之类的新概念,学习之后一定要尝试着编写代码实现。
学会去说明你创建图表的概念,并且看它们是如何关联的。
把你刚刚学到的知识尝试着写成博客。
尝试着向一个非技术人员解释你的技术概念。
总结起来就是多做实践,并且尝试着让你的实践得到优化,得到理解,这样你成长起来也就更快。
学会发散自己的情绪、分散思维
如果你被一个问题困住了,或者遇到了一些你不理解的地方,你也许该尝试着去散散步、或者去冲个凉,尽可能去分散你的注意力,先做一些其他事情,这也许是违背常理的,但其实这是非常有价值的。
有时候太过于执拗也许会禁锢你的思想,分散注意力,我们的大脑就会无意识的探索并连接我们的大部分经历。
这就跟看地图一样,你一直盯着一个地方看,不不知不觉你已经自己禁锢住了,即使你看再多遍也会没有效率,但是如果你试着转移注意力,深呼吸、无所事事的看一下,也许再次看地图的时候,你会豁然开朗的发现你已经找到你的答案了。
这就是为什么淋浴的时候容易灵光乍现的原理,我个人而言,我被什么问题难住了,我就会洗个澡,而且非常有效,这也是我保持干净的原因。
不要浪费时间沮丧
沮丧往往能够让我们做一些非常愚蠢的实践,比如重新编译一个程序或者刷新浏览器页面,抱着希望这一次他会发生奇迹的侥幸。
一旦意识到你的沮丧,就退一步,找到问题在哪里,如果说你已经完成了一些代码,直接向别人请教你所期望的结果是怎么样的,并且尝试对于意外行为原因科学的提出假设,并且尝试着去验证你的假设,如果再试一次,还是找不到解决办法,请把放在一边,以后再回来解决。
我曾经无数次因为看似无法解决的问题而把电脑扔在一边,解决第二天的时候,一个显而易见的解决方案就跃入我的脑海,而这种事情上周刚刚发生过。
确定你正在处理编程语言的那个方面
在我看来,当你学习一门编程语言时,你实际上在学习四件事情。
如何编写代码:语法、语义、以及资源管理。
该编程语言的范式:面对象、函数、逻辑等等。
工件体系:构建、运行、以及如何使用库。
一个完全不懂编程的人,一开始可能会尝试构建iOS程序,他们试图让自己的应用在朋友的手机上运行,结果看到的却是开发证书之类的信息,这就属于工件体系的一部分,不过不懂代码的人,会觉得这是如何编写代码的问题。当问题与代码无关时,他们可能会查看为解决问题而编写的每一行代码。
明确目的、外部模型以及内部模型
当你使用、并且理解一个工具的用途的时候,识别他的目的,内外部模型时非常重要的,你的大脑里面才会是有用的上下文细节,这让你可以更好的吸收新的知识。就像玩拼图一样,如果完整的拼图就在你的面前,那么你就容易把这些拼在一起,这也适用于编程语言以及语言库。
工具的外部模型是它所呈现出来的接口,以及它希望您思考问题解决方法的方式。Clojure的外部模型就是一个Lisp,它希望您将编程看作以数据为中心的、不可变的转换。
工具的内部模型是如何将其接口的输入抽象为某种较低级别的抽象。Clojure将Lisp代码转为JVM字节码,而Ansible把任务定义转换成shell命令。在理想世界中,不需要理解内部模型,不过在现实中,理解工具的内部模型是非常有帮助的,因为他为问题提供了一个统一的视角。
间隔重复有助于记忆
间隔重复是被证明在长期记忆中编码新信息的最好方法之一,这个方法能够不断地增加时间间隔内的自我测试,通过最少重复次数来最小化减少记忆衰退。
睡眠和锻炼
学会照顾好你自己的身体!
身体不仅仅是你大脑的载体,想要记忆力能够保持高度集中,更加高效地学习,足够充足的睡眠时间和更多的锻炼,能让你彻底远离咖啡因以及各种乱七八糟的能量饮料。
来自于我的建议
其实学习编程语言来说,这篇文章大师更多的是从方法学的角度来分析,给大家一套通用的系统学习的方案。
总体来说,学会掌握编程语言思想精髓,多做实践,多看经典的源代码,只要做好这几点我觉得你基本上就能学好这门语言,不过还是那句话,兴趣非常重要!
2012年毕业后,我也经历了事业的多重抉择,从一个职场小白,到现在的高级研发工程师,期间的曲折也不可谓不多。
2015年6月份开始接触编程,到现在算下来也快6年的时间了。我并非科班出身的程序员,而是在15年的时候报了当时最火的某马培训机构,学习了大概五个月的时间,期间同班的有来了一天就放弃的、有来了混日子的、有学完没有就业的等等。
下面我讲下,我当时是如何学习java语言的。
在学习之前,尽可能的自己先了解一点语言的特性,能有一些入门级的自学经历,可以确定你是否对这个语言感兴趣,俗话说的好:兴趣是最好的老师。
第二点:学习的过程,就是理解的过程,刚开始基础弱、底子薄,唯一的办法就是多练习,勤思考。我记得当时,每天回来都要敲几十遍上课时讲的代码示例;接着还会记录学习心得。
第三点:给自己制定短期和长期的学习目标,没有目标的学习都是浪费时间。通过实现短期目标和长期目标来满足自己的成就感。用以激励自己继续前进。
第四点:多和身边厉害的人学习。特别是当时走向了工作岗位之后,你会发现身边的同事就是你最好的学习榜样。
程序员的工作是一份需要长期学习,并且要努力学习提升自己能力的行业。
用一句话与你共勉“路漫漫其修远矣,吾将上下而求索。”
在学习java的路上有什么问题,可以私信我。与你一起进步。
本文来自投稿,不代表天一生活立场,如若转载,请注明出处:http://tiyigo.com/phone/10115.html