学会学习 Haskell
学会学习 Haskell
原文:https://medium.com/hackernoon/learning-to-learn-haskell-9e962712c6b6
一两个月前,我们讨论过哈斯克尔的恐吓因素。那篇文章聚焦于为什么人们认为 Haskell 具有挑战性,以及为什么他们不应该这样。今天,我们将继续这一对话中的一些线索。我们将探索如何学习 Haskell(以及其他东西)。我们将研究一些关于学习的一般概念,并讨论如何将它们应用到编程中。
沃伦·巴菲特和复利
关于沃伦·巴菲特,有一句关于生产率的话经常被重复。他说他每天至少阅读 500 页,这是他成功的关键之一。巴菲特认为,知识就像复利。你获得的越多,它就积累得越多,并且随着你建立更多的联系,它就能够建立在自己的基础上。
这句话的为什么很奇妙。当我探索不同的话题时,我发现这听起来很真实。我已经看到我的知识是如何开始积累的。然而,如何经常被误解和曲解。这导致人们很难执行巴菲特的原则。
简单的事实是,一般人没有时间每天阅读 500 页。首先,如果他读得这么多,沃伦·巴菲特很可能是一个有成就的快速阅读者,所以他需要的时间更少。其次,由于他的财富,他比大多数人更能支配自己的时间。在我目前的工作中,我是一名软件工程师,我不能把一天 80%的时间都花在“阅读和思考”上。我会有一些非常不开心的队友和项目经理要处理。
一般人会看到这个建议,并决定在工作时间之外开始大量阅读。他们甚至可能连续几天每天达到 500 页。当然,生活会从中作梗。他们不会有几天的时间来做这件事,他们会放弃这个习惯。
更好的应用
那么我们如何实现复合知识效应呢?我发现对这个建议的真正误解是这样的。复利的关键因素是时间,而不是平均投入。使变小,重复的贡献以后会有大的奖励。当然,大的、重复的贡献也会有很大的回报。但是如果投资导致我们放弃这个习惯,随着时间的推移,我们会变得更糟。
一旦我们接受了这个想法,我们就可以将它应用到其他主题中,包括 Haskell 编程。我们可能想每天花一个小时来学习一些特定的 Haskell 概念。但这种往往是不可持续的。每天至少花 15 分钟,甚至 10 分钟,要容易得多。这将确保我们继续学习。在任何一天,都很难抽出整整一个小时来做某事。您的时间表可能不允许连续的时间段。但是你应该总能找到一个 15 分钟的时间段。这将极大地降低开始每一天的门槛,所以你更有可能成功。
按照复利原则,进步是基于动力的。通过每天花 15 分钟做几个不同的项目,我已经取得了很大的进步。如果我试着在这里或那里抽出一个小时,我已经完成了更多。我只能开始在网上写作,因为我每天花 20 分钟来写作。有一次我坚持了一个月,我的身材很好。
乔希·怀茨金和直面困难
我遇到的关于学习的另一个最重要的观点来自乔希·怀兹金的《T4:学习的艺术》。他是前国际象棋神童和特级大师,后成为世界武术冠军。他描述了一个故事,这个故事对我这个儿时的棋手来说太熟悉了。他看到了许多很有潜力的年轻球员。他们会在学校或当地的象棋俱乐部击败周围的所有人。但是他们从来没有让自己面对更强大的对手。结果他们最终没有进步,最终退出了象棋。他们如此投入于赢得每一场比赛的想法,以至于输给任何人对他们的自尊心都是太大的打击。
如果我们过于关注自我,我们会害怕显得软弱。这导致我们避免面对我们实际上薄弱的知识领域。这些正是我们需要加强的地方!如果我们永远不解决这些问题,我们将永远不会进步,我们将无法战胜巨大的挑战。
对抗哈斯克尔
那么这对学习 Haskell 或者一般的编程有什么影响呢?毕竟编程不是竞技游戏。然而,这种心态仍然会伤害我们。我们可能会避开某个特定的话题,因为它看起来很难。我们担心我们会试着学习它,但会失败。我们担心这次失败会暴露出我们是多么不适合做 Haskell 开发人员。更糟糕的是,我们不敢向其他程序员寻求帮助。如果他们因为我们缺乏知识而看不起我们怎么办?
对此,我有三个主要回应。首先,我将重复恐吓文章中的一个注释。当你对一个话题一无所知的时候,它会变得更加可怕。一旦你知道了最基本的定义,你就会对你所缺少的有一个合理的想法。尽可能获得它的基本概念,并用简单的英语写下来。你可能不知道主题。但它将不再是一个“未知-未知”。
第二,谁在乎你努力学习却失败了?再试一次!在你理解一个话题之前,可能需要反复学习几次。我至少试了三次才理解了单子。
最后,我们害怕承认自己弱点的人正是那些真正能帮助我们克服这些弱点的人。更好的是,他们经常非常乐意这样做!这包括克服我们对显得低人一等和被他人拒绝的原始恐惧。这很难,但并非不可能。
结论
所以记住这里的关键教训。一开始稍微专注一点。不要承诺每天学习超过 15 分钟,挑一个进度明确的项目。通过每天做一些事情来保持动力。如果一个概念看起来很难,不要担心。尝试学习一些东西是可以的。最重要的是,永远不要害怕寻求帮助。
你还在等什么?如果你一直想学习 Haskell,但一直没有,下载我们的入门清单开始你的旅程吧!
如果你渴望获得更多关于学习的材料,你应该在周一早晨哈斯克尔的博客上阅读我们关于编译驱动学习的最新文章。
如果你学过一点 Haskell,但仍然不理解一些函数式编程的概念,请查看我们免费的递归工作簿来学习递归、高阶函数,并尝试一些练习题!
黑客中午是黑客如何开始他们的下午。我们是 @AMI 家庭的一员。我们现在接受投稿,并乐意讨论广告&赞助机会。
要了解更多信息,请阅读我们的“关于”页面、在脸书上点赞/给我们发消息,或者简单地说, tweet/DM @HackerNoon。