科技,软件编程这么简单就可以学会,以后不会苦恼了

学习编码很难。软件工程是我们在谈论“学习编码”时最常提到的领域,它基于计算机科学和应用数学的基础。虽然你不需要成为一名数学家或计算机科学家才能成为一名软件工程师,但另一个事实是,学习基本的编程概念对大多数人来说都很难。在本文中,我们将探讨一些学习理论,以及我们如何将它应用于刚开始学习如何编码的人。我将列出概念的一些优点和缺点,如自下而上与自上而下的学习方法,以及一些值得考虑的替代方案。此内容面向较新的程序员,但这些概念适用于有兴趣更有效学习的任何人,即使该主题不是编程。

我已经是一名专业的程序员已经超过7年了,我之前开始使用代码方式。如果有一件事我可以自信地说这个职业,那就是学习永远不会停止,而且永远不会变得容易。每当你掌握一个困难的概念,你就可以确定另一个概念就在眼前。我花了很多时间在阅读关于编程主题的过程中,主要是以闪亮的新框架比问题的旧解决方案更好的形式。我读到了关于我是否应该将jQuery或MooTools用于我的下一个网站项目的主题。经常感觉不到我的深度,就像我无法理解Web开发生态系统的任何重要部分(这是在前端解决方案爆炸之前)。值得庆幸的是,像我这样的人存在,只有足够的视角来帮助你避免陷阱和时间汇,这无助于你有效地升级为程序员。

所以让我们直接进入它。

自顶向下和自底向上处理的概念已经应用于许多学科,但我们最感兴趣的是如何将自上而下和自下而上应用于学习。自上而下学习的一般定义是让学习者沉浸在主题的完整背景中的过程。换句话说:如果你是一个有兴趣学习如何游泳的人,而且我有兴趣采用自上而下的方法,那么我会把你扔进游泳池。相反,自下而上的方法涉及一个更细化和理论化的过程。自下而上的学习方法涉及将学习者单独暴露于主题的基本概念。学习游泳的自下而上的方法将涉及学习流体动力学,解剖学和物理学,但不涉及池。

自下而上的学习/教学过程只涉及特定主题的组成部分,并慢慢地将这些组成部分建立在整体上。使用此方法的学习者只有在掌握了先前的必备组件后才会转到下一个组件。在大多数情况下,传统的公共教育(至少在美国)采用这种方法。

自下而上的方法具有许多优点。我认为主要的是学习者能够完全理解这个主题,只要他们花时间掌握每个组成部分。自下而上也很容易构建:将问题分解成小的,连贯的片段,这有助于组织。规划自下而上的课程方法的教师必须将他们的材料组织成小主题。在编程领域,理解任何语言,框架或工具的重要部分是一个漫长而艰难的过程。在学习新语言时,自下而上的方法对于需要高层次理解概念的学习者来说非常有用,以便对继续学习另一个概念充满信心。例如,使用自下而上的方法学习JavaScript的基础知识可能需要学习原始值,如数字,字符串,布尔值,数组和null / undefined,然后转到对象和函数,最后转到范围和控制流程。理想情况下,每个概念都将建立在之前的概念之上,以创造一个很好的进展。

自下而上方法最明显的缺点是使用这种方法的学习者将缺乏关于他们所学习的概念的任何有用的背景。这种隔离导致无法以任何有意义的方式应用所学习的概念。如果我们回到游泳的例子一段时间,似乎常识,无论你对流体动力学,解剖学和物理学有多少了解,如果你从未真正尝试过游泳,那么接下来你就不会真的做个好游泳运动员。这也是为什么你几乎永远不会看到任何类型的(好)现代编程资源,至少不包括某些类型的实际部分。

自上而下的学习方法包含一个宏观导向的实践过程,让学习者沉浸在主题中。自顶向下方法的优先级是提供问题或主题领域的更广泛视角,而不必详细说明特定组件如何协同工作。应用于编程的自顶向下学习的一个很好的例子是,给新开发人员一个他们需要使用不熟悉的语言或工具集完成的项目。自上而下的方法不是依赖于孤立组件的掌握,而是让学习者通过探索和实验来理解各个部分。

对于一些编程学生来说,自上而下的学习方法特别有利,因为有机会看到一切如何协同工作是令人兴奋的。就个人而言,我对编程的兴趣是由资源激发和维护的,这些资源让我实现了我自己的完整(主要)工作项目。最初,这是通过脚本制作命令行测验和向游戏添加功能的混乱,但这里的共同点是,如果学习的唯一方法是一次一步,我可能不会感到困扰。除了提供学习动力外,自上而下的方法也很实用。对于许多学习者而言,目标是仅学习理解或实施非常具体概念所必需的内容。在这种情况下,自下而上的过程可能会过度,甚至可能浪费时间。

自上而下学习也有缺点。一般来说,自上而下的学习将细节留给学生,这很多时候会导致对概念的不完整理解。学习者可以掌握足够的“让它工作”,没有动力或明确的途径来理解基础组件如何协同工作。当我编写第一个命令行测验时,我不了解字符串和数字等原始值之间的差异,所以当像1 +“1”这样的语句导致11时,我感到非常困惑。

虽然自上而下和自下而上的方法都有其自身的优点,但我相信像许多事情一样,简单的二分法并不代表所有可行的选择。这有点陈词滥调,但我确实认为最好的方法就在中间位置。

根据我的经验,在尝试学习新的编程概念时,有两种情况几乎从未解决过:

你们中的一些人可能已经来过这里。您很高兴能够了解单页应用程序/机器学习/增强现实/区块链游戏开发中的最新和最佳内容,因此您可以直接阅读有关如何构建自己的32系列YouTube系列文章。通过视频4,您已经进入了一个您根本不知道的领域,并且相信自己必须是有史以来最差的开发者。这不是一种有效的学习方式,它展示了自上而下流程的一些令人讨厌的缺点。换句话说,有时完全沉浸和完整的背景可能是压倒性的。

根据我的经验,“漫长的教程”几乎总是导致两种不良学习情境中的另一种:综合资源。在你确信自己不够了解自己的新想法之后,唯一可行的解决方案就是找到关于这个主题的最全面的资源,并试图通过它来更好地理解这个主题和最终建立你的单页应用/机器学习算法/增强现实事物/区块链游戏。然而,综合资源并不令人兴奋,所以在前几章之后你就把它放下来,然后再也不会重新审视这个主题。这是自下而上学习如何让你失望的一个很好的例子。简而言之,有时,规范的,循序渐进的过程可能是学习事物的无聊方式。

每天建造小东西,我认为解决方案分为两部分。首先,学习新的编程概念应该涉及提出该概念的最小可能的实际应用。对于尝试学习新语言的开发人员,这可能是命令行“选择自己的冒险”,或者是在浏览器中实现简单游戏。一旦你有一个小的,可实现的目标,学习实现该应用程序所需的最低限度,但要努力掌握这些概念。如果我正在构建一个“选择你自己的冒险”,那么我可能真的需要深入了解我正在学习的语言中的标准输入,标准输出和简单的控制流程。理想情况下,这些类型的小项目将是您可以在一天内完成的。这样,你就不会在一个概念上挣扎太长时间,并且你会不断激励自己通过在较短的时间线上做出的小小成功来提出新的项目。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181217A0SBTA00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券