当前位置: 首页 > 科技观察

如何高效学习编程语言

时间:2023-03-17 00:59:12 科技观察

这是Clojure好书《Clojure for the Brave and True》的作者DanielHigginbotham于2017年4月16日发表的一篇博文,从作者丰富的经验来看,这篇文章很有借鉴意义。学习一门编程语言是一种技能:如果你学得好,你会感受到掌握新事物的快感(多巴胺:多巴胺);做不好,就会一波接一波的受挫,甚至放弃。以下是我从多年的写作、口语和培训中收集的一些学习编程语言的最佳技巧。这里的许多技巧都来自解释有效学习前沿研究的书籍。您可以在CommunityPicksLearnProgramming中找到这些书籍(以及其他很棒的编程书籍)。通过不断地测试自己是否有能力的错觉来学习的最糟糕的方法之一是重新阅读或重新访问材料。这种重复让你觉得你不费吹灰之力就理解了主题的内容。研究人员将这种现象称为能力错觉。一个更好的方法(也是您可以掌握的最好的技巧之一)是不断地测试自己。与其重新阅读函数、类或对象是什么,不如让自己定义这些概念或在短程序中使用它们——迫使您以某种方式展示您的理解。这个过程通常很不舒服,但对形成长期记忆非常有效。更进一步,您可以在阅读材料之前进行测试,例如,在阅读章节之前尝试做练习。值得一提的是,这也被证明有助于记忆的形成。测试对学习的重大影响被称为测试效用,以下是您可以利用它的一些具体方法:在阅读章节或观看视频之前,尝试猜测您将要学习的内容并将其写下来。在阅读本章之前先做一下本章的练习题。一直做练习,即使是最难的。暂时(永远)放弃一项锻炼是可以的,但至少要尝试一次。(下一章会详细讲)看小程序,不看源码尝试重写。或者,为了更小,写一个函数。在学习了对象、类、方法或高阶函数等新概念后,立即编写示例代码。创建图表来说明这些概念,以及它们之间的区别和联系。关于您刚刚学到的概念的博客。尝试向非技术朋友解释这个概念。(我在写《Clojure for Brave and True》时经常这样做。这是通俗易懂地解释一个想法的方式,这反过来又迫使你理解这个想法本身。)大多数这些技能归结为编写代码!说到编程,由于程序是如此的文本和概念,很容易认为我们只是通过阅读(代码)来学习。但编程也是一门手艺,就像任何手艺一样,您必须练习才能精通它。编码是揭露您对程序的错误假设的最佳方式。你这样做的速度越快,你纠正错误和提高技能的速度就越快。如果您想了解更多关于测试效果的信息,请查看让它坚持下去:成功学习的科学。花点时间放松如果您遇到一个问题,或者不理解您刚刚阅读的内容,去散散步,甚至洗个澡——进入舒缓、放松的状态。解除阻塞的最好方法之一就是休息一下,这听起来可能违反直觉,但这是事实。问题是,当我们全神贯注于解决问题时,我们很容易陷入精神盲点。我的意思是,这几乎就是“专注”(字面意思)的意思。然而,全神贯注使我们始终只能探索解决方案空间的一小部分。一旦空了,我们的潜意识就可以探索和连接我们经验的广泛领域。对我来说,这就像您试图在纸质地图上寻找目的地(还记得吗?)。您不必说服您要到达的城市就在这里!它是地图左上角的一个区域,因此您翻来覆去地查看,但没有成功。然后你放下地图,深吸一口气,让你的眼睛游移片刻。当你再次查看地图时,准确的位置立刻浮现在脑海中。当灵感在淋浴间袭来时,我们都曾去过那里。现在您已经更好地理解了为什么要这样做,您也可以有意识地使用这种技巧。就个人而言,如果我沉迷于某事,我实际上会洗个澡,这种方法非常有效。另一方面,我有多干净(注意:洗澡的事)。如果你想了解更多关于专注和分心的思维模式,请查看数字思维:如何在数学和科学方面表现出色(即使你不及格代数)不要浪费时间挫折与上一章相关:不要WasteTimeforExcel代码令人沮丧。挫败感导致我们做一些愚蠢的事情,比如重新编译或刷新浏览器,希望这次会有所不同。将挫败感视为您的知识存在差距的信号。一旦你意识到自己感到沮丧,它可以帮助你退后一步,清楚地找出问题所在。如果您编写的代码无法正常工作,请对自己或其他人诚实说明您的期望。使用科学方法,对意外行为的根本原因提出假设。然后检验你的假设。再试一次,如果还是解决不了,就先把问题搁置一会再回来。我不知道有多少次我因为一些看似无法解决的问题而气得把笔记本电脑扔掉了。第二天观看它,一个明显的解决方案立即跳入脑海。它甚至发生在上周。从您正在处理的语言的哪个方面的个人角度来看,我认为牢记这些很有用-在学习编程语言时,您实际上是在学习四件事。如何编写代码:语法、语义和资源管理语言范式:面向对象、函数式、逻辑等输出生态系统:如何构建和运行可执行文件以及如何使用库工具:编辑器、编译器、调试器、codequalitydetector(linter)这四项很容易混淆,不幸的结果是当你遇到问题时,你最终完全找错了地方。例如,完全不熟悉编程的人可能已准备好开始构建iOS应用程序。他们可能会尝试让他们的应用程序在朋友的手机上运行,??结果却看到一条消息,提示需要开发者证书或其他信息。它是工件生态系统的一部分,但新手可能会将其视为编写代码的问题。他们可能会检查他们编写的每一行代码以尝试解决问题,即使问题与代码无关。如果我系统地处理这些方面,我发现学习一门语言会更容易。在另一篇博文中,我将列出一些要回答的广泛问题,这些问题应该可以帮助您学习任何语言。明确目的、外部模型、内部模型任何时候在学习使用一种新工具时,明确学习目的、外部模型和内部模型是非常有用的。当您了解工具的用途时,您的大脑就会充满有用的上下文细节,从而更容易吸收新知识。这就像拼图游戏:当您看到完整的拼图时,就更容易将各个部分拼在一起。这个原则适用于语言本身,也适用于语言库。工具的外部模型是它呈现的界面以及它希望您思考解决问题的方式。Clojure的外部模型是一个Lisp,它希望您将编程视为主要以数据为中心的不可变转换。Ansible希望您将服务器监管视为定义最终状态,而不是定义达到该状态要采取的步骤。工具的内部模型是如何将对其接口的输入转换为某种低级抽象。Clojure将Lisp转换为JVM的字节码。Ansible将任务定义转换为shell命令。在一个理想的世界里,你不需要了解工具的内部模型,但事实上,了解内部模型总是有用的,因为它可以让你对一些看似混乱或矛盾的部分有一个统一的看法.例如,当DNA双螺旋模型被发现时,它帮助科学家理解了更高层次的现象。当然,从我的角度来看,这篇博文也是有史以来最伟大的科学成就之一。教程经常混淆工具的外部和内部模型,使学习者感到困惑。意识到这一点可以帮助您在情绪低落时轻松识别。间隔重复有助于记忆间隔重复已被证明是在长期记忆中编码新信息的最佳方法之一。这个想法是以增加的间隔测试自己,使用最少的重复次数来最小化记忆衰退。卫报写了一篇很好的介绍性文章。睡觉和练习照顾你的身体!您的身体不仅仅是大脑的载体。如果你想保持专注和高效学习,充足的睡眠和练习,而不是(原文如此:脱掉裤子)狂饮咖啡因和能量饮料。