011678.com 主页 > 011678.com >  

怎样高效地学习编程语言

更新时间: 2019-07-08

  学习编程语言是一种技巧:做好了,你会感受到掌握新事物之后的快感(dopane:多巴胺);做不好,就会接二连三的沮丧,甚至放弃。下面这些学习编程语言的最佳技巧是我从多年的著书写作,演讲和培训中总结出来的。这里头很多技巧来源于对高效学习前沿研究做了解释的书籍。

  最不济的学习方法中的一种就是重读或者重看材料。这种重复会给你一种感觉——似乎不用花什么气力,你就理解了话题所涵盖的内容。研究者们把这种现象称作胜任力错觉。

  更好的一种方式(你可以掌握的最佳技巧之一)则是持续地测试自己。不要重读一个函数、类或者一个对象是什么,而是让自己定义这些概念或者把它们用到短小的程序当中——强迫你用某种方式显示自己的理解。这一过程常常很不舒服的,但是对形成长期记忆非常有效。更进一步,你可以在阅读材料之前先去行测试,举个例子,尝试在阅读一个章节之前做做练习。值得一提的是,这也被证明有助于记忆的形成。

  一直做练习,即使是最难的那些。暂时(永远)放弃一个练习也是可以的,不过至少要尝试一遍。(下个章节会详细谈到)

  阅读短小的程序并且尝试不看源码重新写一个。或者,再小一些,写个函数也行。

  尝试把概念解释给非技术的朋友听。(在写《Clojure for Brave and True》的时候,我常常这么干。这样能够以外行的话阐述一个想法,进而迫使你深入理解想法本身。)

  这些技巧的大部分都要规约到编写代码上!说到编程,由于程序都是重文本和概念性的,所以很容易以为我们仅仅通过阅读(代码)就在学习。但是程序同时也是一门手艺,就像其它手艺一样你得操练才能娴熟。编码是暴露你对程序作有错误假设的最佳方式。你越快地这么做,就会越快地纠正错误和提升技能。

  如果你纠结在一个问题上,或者对刚才读到的东西不能理解,就去散散步甚或洗个澡 —— 只要能进入一种舒缓、放空的状态就行。解除障碍的最佳方式之一就是歇一会儿,这可能听上去有点反直觉,但确实如此。

  问题是,当全神贯注解决问题时,我们很容易陷入思维障碍(mental blinder)。我的意思是,这差不多就是“关注”(字面上)的意思。不过,全神贯注会导致我们只能一直探索解决方案空间的一小部分。一旦放空,我们的潜意识就可以探索并联结我们经验中的广泛领域。

  对我来说,这就像当你试图在纸质地图上找到一个目的地(是否还记得?)。你不用刻意就确信你想抵达的城市应该就在这里!在地图的左上角的区域,所以你看了一遍又一遍,都没有成功。然后你放下地图,做了深呼吸并让目光游离了一会儿。当你重新看地图时,确切的地点立马映入眼帘。

  我们曾经都有过这样的经验,在洗澡的时候突发灵感。现在你对于为什么这么做有了更好的了解,那么也就能刻意地使用这个技巧。个人来讲,如果纠结在某事上,我真的会洗个澡,这个技巧的功效显著。另一方面,我又是多么干净(注:洗澡这件事)。

  和上一个章节相关:别浪费时间为代码沮丧了。沮丧会让我们做一些愚蠢的事情,比如重新编译或者重刷浏览器,期望这次会有所不同。

  把沮丧看作你的知识有差距的信号。一旦你意识到自己沮丧了,它可以帮你后退一步,清晰地识别问题。如果你写的代码不起作用,坦率地向自己或者别人说明你期望的结果。使用科学的方法,就非预期行为的根因提出一个假说。然后测试你的假说。再次试验后,如果依然解决不了,就把这个问题放到一边,待会儿回来。

  在一些似乎没法解决的问题上,我不知有多少次恼怒地扔掉了自己的笔记本电脑。隔天再看,一个显而易见的解决方案立马跳入脑海。甚至上周就发生过。

  个人观点,我觉得记住这些是有用的——当学习一门编程语言的时候,你实际上正在学四件事情。

  举个例子,某些完全的编程新手,可能准备开始构建iOS应用。他们可能会试着让自己的应用在朋友的手机上运行,只看得到有关需要开发人员证书或其他信息的消息。这是产出物生态圈的一部分,不过小白可能将此视为编写代码的问题。他们可能会浏览自己写的每行代码来尝试解决问题,尽管问题和代码没有半毛钱关系。

  如果我系统地处理这些方面,我会发现学习一种语言会更加容易。我将在其它的博客文章中罗列一些待回答的宽泛问题的列表,应该能帮助你学习任何语言。

  任何时候你学习使用新工具,明确学习的目的,外部模型和内部模型都是十分有用的。

  当你了解了工具的目的时,你的大脑会加载有用的上下文细节,使你更容易吸收新知识。这就好比拼图:当你看到完整拼图之后,更容易把各部件拼到一起。这个道理适用于语言本身以及语言库。

  工具的外部模型就是它呈现出来的接口以及它想让你思考问题解决的方式。Clojure 的外部模型就是一个 Lisp,它想让你把编程当做大部分以数据为中心,不可变的转换过程。Ansible 希望你把服务器的整备工作想成定义最终状态,而不是定义抵达那种状态所要采取的步骤。

  工具的内部模型就是如何将输入到其接口转换成一些底层的抽象。Clojure 把 Lisp 转换成 JVM 的字节码。Ansible 把任务定义转换成了 shell 命令。在一个理想国中,你不需要理解工具的内部模型,但事实上,理解内部模型总是有用的,因为在某些看上去迷惑或者矛盾的部分,它可以让你有个统一视图。举个例子,当 DNA 双螺旋模型被发现的时候,它帮助科学家们了解更高层次的现象。从我的角度来讲,当然,这篇博文也是历来所有伟大科学成就之一。

  很多教程经常混淆工具的外部和内部模型,使学习者感到困惑。意识到这点可以帮你轻松辨别何时你会感到沮丧。

  间隔重复被证明是长期记忆中新信息编码的最佳方法之一。 这个想法是以不断增加的时间间隔来测验自己,使用最少重复次数来最小化记忆衰减。 卫报写了一篇很好的介绍性文章。

  保重身体!身体可不仅仅是你脑袋的载体。如果你想保持专注和高效的学习,就要足够的睡眠和练习,而不是(原文:beats the pants off)狂饮咖啡因和能量饮料。

  虽然Linguist在文件级语言预测方面做得很好(准确率为84%),但是当文件使用非常特殊的命名约定...

  本文主要介绍了一些简单易懂最常用的Python图像处理库当今世界充满了各种数据,而图像是其中高的重要...

  每个资源都是一个黑盒。外部代码无法得知资源内部的细节,只能通过模块的公开过程对资源进行操作。

  TIOBE索引基于Web搜索跟踪编程语言的流行程度,使用一个公式来评估搜索引擎(如Google,Ya...

  C / C ++编程语言长期以来一直主导着嵌入式系统行业,很少有其他语言可以找到立足点。虽然Java...

  2018年1月16日上午,教育部召开新闻发布会,在此次「新课标」改革中,正式将人工智能、物联网、大数...

  作为程序员的编程语言,它的历史比起其他兄弟姐妹,则显得年轻很多,最近Python的这把火已经烧到了程...

  如今有众多可选的编程语言,这往往是入门者首先要面对的问题。开发工具的选择有时取决于特定的约束条件或者...

  无论是对于广大学习者还是程序员,简单就拥有了最大的吸引力。既然都能实现同样的功能,人们有什么理由不去...

  Kotlin 是一门静态编程语言,可用于开发几乎所有类型的应用程序,包括服务器端、桌面、移动甚至嵌入...

  如何将我们的数据以更好的形势呈现出来?擅长不同编程语言的程序员会选择各自技术范畴内成熟、好用的工具包...

  国内基于Python创业成功的案例不在少数,豆瓣、知乎、果壳,全栈都是 Python,大家对Pyth...

  在这种趋势下,Python已经成为最大赢家,最可能的原因是统计编程正从大学发展到工业,而Python...

  我们以Python为例。如果你使用Python,会发现其中存在用C语言编写的代码。 Python允许...

  对于Python的崛起TIOBE排行榜也给予了回应:由于全球流行度在过去一年中涨幅最高(3.62%)...

  该排行榜排名基于全球有经验的工程师、课程和第三方厂商的数量。根据知名搜索引擎(诸如 Google、M...

  在本月 TIOBE 编程语言排行榜中,我们还可以清晰地看到苹果支持的两种语言 Objective-C...

  Anders Hejlsberg表示,他遵循了他所接触过的所有编程语言的共同原则,即“做某件事情的方...

  该指南提供了详细的进阶路线图,列出了学习Go开发所需的各类知识和技能,而且每个知识点也附上啦相应的学...

  冒泡排序,有时也被称做沉降排序,是一种比较简单的排序算法。这种算法的实现是通过遍历要排序的列表,把相...

  全AI领域专业技术人才空缺数量超过500万!而随着技术要求的不断升级,最通用的编程语言Python的...

  技术实力毋容置疑,不过这哥俩都是玩Kernel的,经历相同,理念相近,分歧会比较少,他们也都坦承C用...

  Armstrong发明的Erlang在全球范围内是个小众语言,根据TIOBE发布的最新语言排行榜,E...

  基于一系列开发人员访谈和对分析运行时编译器开发的经验研究,我们确定了五个意外复杂性的主要来源,可以通...

  就像现在流行的那样,这个团队是数据科学组织的一部分,绕过 CIO 和任何技术或商业副总裁,直接向 C...

  按照串行的处理方式,处理一帧图像需要串行的经过6个处理单元,假设需要300us的延迟,每一个处理单元...

  连续 7 年,JavaScript 都位列最受欢迎的编程语言榜首,但值得关注的是,Python 的排...

  几行R代码就可以生成一个可交互的网络应用。比方说如果使用R语言的flexdashboard包, 你只...

  当被问及是否计划在未来十二个月内采用或迁移到其他语言时,Kotlin、Python 和 Go 都是比...

  模块与包是任何大型程序的核心,就连Python安装程序本身也是一个包。包是一个有层次的文件目录结构,...

  另外,如果你的列表很长,你要为列表中每个单独的元素生成一个goroutine。正如我之前所说,这本身...

  Shawcroft说他十几岁时就对编程产生了兴趣,他是“通过Web进入编程领域的第一代人中的一员”。...

  来自美国的招聘网站 Dice 发布了一份重要数据结论,那便是“Python 的就业市场非常健康”!许...

  LabVIEW提供了无比强大的分析、处理VI库及许多专业的工具包,例如:高级信号处理工具包、数字滤波...

  因为在学习写代码的过程中,我们应该尽量避免重复。写代码不像背单词,你只要知道一门编程语言能干什么,等...

  横向与其他技术岗位相比,Python这样的薪资涨幅也算得上是表现突出。下图显示,Python在201...

  圈内知名网站Stack Overflow的数据显示,其实早在去年6月份,Python的月活用户就已超...

  今天重点说说你们使用的编程语言,尤其值得一提的是 Python,至于为什么是 Python?这个后面...

  一般来说,Julia 中的数学运算与其他脚本语言中的数学运算看起来是一样的。它们的数字都是 “真正的...

  TIOBE 公布了2019年3月编程语言排行榜,正如官方所说,本月的排名几乎没有任何有趣的变化,排名...

  有人认为Lisp是最好的人工智能编程语言,因为它为开发人员提供了自由。在人工智能中使用Lisp,因其...

  LabVIEW是专为测试、测量和控制应用而设计的系统工程软件,可快速访问硬件和各种数据信息。如果你以...

  科技创新企业最终都会迁移出城市,如那些崛起于波士顿郊区的微机制造商。但更大的举措是向西部搬迁,从20...

  在全球范围内,胜出者是Google的Go语言——可能是因为使用这种语言的开发人员供不应求。在Hire...

  亚马逊就很强调员工的沟通写作能力,一个亚马逊员工的写作能力甚至会对事业的晋升起到关键作用。要开发出优...

  1989 年,为了打发无所事事的圣诞节假期,Guido 开始写 Python 语言的编译/解释器,P...

  上面的例子我们已经让电脑成功的可以根据不同的情况去水果店买西瓜了,但是若老板不打折,你就吃不到西瓜了...

  以太坊 ——从技术上讲,以太坊的功能相当于一台以太坊虚拟机(EVM),它是一台“世界计算机”,由多种...

  每种语言都有它自己的优点和缺点,以及最适用的场景。Python 最常用的三个场景是数据处理、编写 W...

  除此之外,Groovy 在一次进入语言排行榜前20,它第一次进入语言排行榜前20是在2016年末,因...

  但 Go 要想撼动编程界的常青树 Java 二十多年的地位无疑难度颇大。据 HackerRank 数...

  目前还没有成熟的转译器供程序员们使用,很多都还在初级开发阶段,比如这款叫 voc 的转译工具(htt...

  Python是当今大学里授课最多的第一语言,在统计领域排名第一,在人工智能编程方面排名第一,在脚本编...

  Python 是 TensorFlow 支持的第一种客户端语言,目前支持的功能最多。该功能正逐步移植...彩票开奖大全