一旦你发现了一种采用自上而下方法的学习工具,那么最好的学习方法是什么?对此我有一个有争议的观点:我认为对于初学者来说,尽可能快地背熟基础知识是绝对必要的。当成为更高级的学习者时,记忆很快就会成为一种被抛弃的方式。你可能听过有人不屑一顾地说(“不要死记硬背,在内部消化”,“我在消化我记得的”,“我讨厌考试,我必须回忆我记得的”)。另一方面,当你上小学时,你不得不花时间背乘法表。你为什么要背着它?因为您的基本乘法表可以作为构建更复杂的乘法和除法的基础。这与记住编程语言的语法没有什么不同:您编写的if或for循环越自然,您就越容易编写更复杂的语句块。我也承认死记硬背并不总是学习一切的最好方法,但我相信对于编程初学者来说,练习编程是绝对必须的。为什么?因为它减少了阻力,如果有什么让初学者感到沮丧的话,那就是阻力。考虑到这一点,这里有一些针对正在学习或准备学习Web应用程序开发的初学者的具体建议。其实,更进一步,更抽象一点,这是一个如何开始学习软件开发的好方案。显然,这不是适合所有人的程序,但我认为它适合大多数初学者。在学习强类型、面向对象的编程语言之前先学习弱类型的编程语言。严格来说,如果有人向你提到类(class)或继承,那么你应该选择其他路径。虽然我同意类和与继承相关的技术对于软件开发是必不可少的,但我坚信它们不应该成为初学者的选择。鉴于此,我认为JavaScript是初学者的理想编程语言,因为:(a)JS解释器在大多数浏览器中都可用,(b)它的面向对象特性不是强制性的,(c)在工业界广泛使用(是的,即使对于网络以外的客户,即使现在作为一名设备工程师,我也在从事嵌入JavaScript的工作。)更具体地说,我建议你学习如何使用JavaScript来学习以下东西,尤其是按照这个顺序:学习如何打印东西,学习如何声明和定义变量,学习基本算术运算(包括取余运算),学习循环(尤其是for循环),学习将抽象的重复代码编写为函数,学习字符串并使用循环来操作字符串,学习数组和数组循环方法(尤其是foreach循环),学习创建和操作对象数据集。记住上面的,写一个程序每天练习,直到容易记住为止。了解Git的基础知识并学习如何从命令行使用Git。这意味着首先学习四个Unix/Linux命令(ls、pwd、mkdir、cd)。当您学习这些命令时,您还可以学习以“树”或分层表示形式查询文件系统。一旦你掌握了上面的几个Unix/Linux命令并且可以从命令行访问文件系统,你应该学习一些基本的Git命令。主要是gitinit、gitstatus、gitadd和gitcommit。一旦您掌握了Git的基础知识,就可以在学习以下技术时将其集成到您的工作流程中。学习HTML的基础知识,并能够凭记忆创建简单的HTML页面。了解DOM以及如何将HTML理解为指定的分层树结构。花点时间考虑一下这与您在前面的步骤中了解的分层文件系统有何关系。了解CSS选择器以及它们如何让您选择DOM的各个部分。了解DOM元素之间的关系。了解一个DOM元素作为另一个DOM元素的父元素或子元素意味着什么。了解这与后代和祖先之间的关系有何不同。请记住,选择器允许您通过这些关系选择某些元素。学习jQuery并主要关注DOM操作功能。学习使用jQuery向DOM插入或删除元素,并练习可视化如何影响使用DOM定义的树结构。在jQuery中练习事件处理和DOM操作(例如,练习在用户单击某物时或以指定的时间间隔操作DOM)。大量练习JavaScript对象并将它们视为可变聚合器。了解如何使用JavaScript来表示比基本数据类型更复杂的数据。学习应用和操作这些数据结构。理解和定义JSON,理解它与JavaScript对象的关系。学习使用jQuery的getJSON函数将文件中的数据导入JavaScript对象。使用类似的技术,使用简单的JSONPAPI来练习使用AJAX提取数据。练习在DOM中插入和删除这些数据。在这个阶段,制作一个循环播放Flickr图片的简单幻灯片将是一个令人难以置信的项目,它将真正测试您使用之前学到的基本技术来实现它的能力。如果你已经做到了这一步,那么你已经掌握了很多基本的编程和计算机科学的基本概念。具体来说,您已经掌握了计算机程序最重要的元素(if-else语句、循环、变量、对象、函数、数组等),并且您已经学习了链式或树形数据结构。此时,您无疑已准备好继续学习更高级的主题。英文原版:学习编程的有力方法
