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

学习如何理解代码,成为更好的程序员

时间:2023-03-16 21:59:56 科技观察

为什么有些程序员似乎有一些神奇的能力,可以在眨眼间从代码中提取意义?为了尝试回答这个问题,我深入研究了科学知识我们如何理解代码。事实证明,我们已经了解了很多关于代码理解的心理学知识,我们可以利用这些知识来提高程序员。它允许您扩展理解过程的所有方面,这样您就不会成为编程技能的瓶颈。在本文中,我将了解我们对程序理解的了解,并讨论可以用来成为更好的程序员的三项知识。为了理解代码,您必须建立心智模型编程的第一步是建立问题的心智模型,以便您可以完成任务。您的心智模型是理解问题或程序的驱动力。从屏幕上的代码到您头脑中的模型的旅程遵循完全理解的过程。我们对该过程的理解绝不是完整的,但我们所知道的可以用来确定需要重点改进的领域。让我们看看我们如何理解代码。您的心智模型由一般知识和专业知识之间的配对组成。您用来理解代码的知识要么是一般编程知识,要么是软件特定知识。一般知识包括有关计算机科学概念、编程语言、框架和编程指南的知识。大多数教程将侧重于此类知识——例如设计模式、高效的Web堆栈、经过认证的企业架构,以及通常适用于各种解决方案的任何其他知识。专业知识是关于您正在处理的特定程序或问题的知识。形成心智模型涉及将您正在阅读的代码与您现有的一般知识和专业知识相关联。“这是一个类,这是一个循环,这个功能是按价格过滤发票。”这些类型的知识都可以是新的或现有的。有时您需要学习新的常识来解决问题。例如,循环调度器是如何工作的。专业知识通常比现有知识更新,但有时您会通过与特定代码库的历史相关的方法获得当前正在开发的程序的现有知识。您的心智模型包含与问题相关的一般知识和专业知识之间的一系列联系。这些配对是通过制定、检验和修改假设形成的。我们形成配对的方式是给出假设。假设您在代码中找到了您认识的东西。提醒您一些更高层次概念的指南。“那个循环看起来有点像。”然后,您将寻找检验该假设的方法。“让我们看看这两个项目是否在循环中交换了。’之后,我们修改假设或接受它,并开始寻找新的假设,建立在我们刚刚做出的假设之上。你可以预测某事实际上会是什么,想方设法证明或反驳那个预测,并根据结果做出改变,然后重复这个过程。那么这如何帮助我们成为更好的程序员呢?有三种方法可以成为更好的程序员:你需要知道理解代码的能力取决于三件事:知识-解决问题的基石。链接-基石之间的胶水。假设——形成链接的工具。显然,要更好地编程需要采用整体方法。1.由于对代码的理解,你可以获得更多的通用知识能力取决于你现有的知识与你要解决的问题的匹配程度,因此似乎有理由认为你在工作中使用的知识越多,更有可能你会成功......作为程序员,我们将大部分时间用于获取新知识。如果您想与技术世界保持同步,这是必要的。为了从您的研究中获得最大收益,重要的是要关注原则而不是技术。考虑到这一点,让我们来看看您可以添加到知识袋中的知识类型:语言相关知识语言相关知识是许多开发人员关注的领域。它是关于学习你选择的语言或者框架的细节。了解API和语言结构,发现语言中的怪异行为,并确切了解它在幕后的工作方式。这种知识通常很容易找到好的课程和资料。这种知识是至关重要的,每个开发人员都需要了解他的工具集的来龙去脉。这种知识的问题在于总是有更多的知识。一个新的框架出来了。该语言的下一个版本已发布。你知道这些知识的时间越长,它就越有价值(知道如何阅读签到不再是热门技能)。像编程概念这样的知识具有更长的生命周期。20年了,排序算法还是排序。计算机科学学位在这些主题上花费了大量时间。您还将学习这些概念,作为学习语言和框架的辅助手段。从语言或框架中学习这些概念的问题在于,有时很难将底层概念与其语法表达式分开。有些语言在表达某些概念方面也有好有坏。了解几种不同的框架和语言在这里会有所帮助。另一种选择是先学习概念,然后学习如何将它们应用到不同的领域。要找到采用这种方法的信息和课程要困难得多。这些概念包括模式、算法、数据结构等。领域知识了解您所从事的行业可为您提供一套额外的工具,用于对非编程概念进行心智建模。例如,了解投资工具的工作原理有助于您理解处理投资工具的代码。2.你可以更好地利用常识来匹配代码一旦你有了足够的常识,你就可以专注于更好地形成匹配规则。如果您知道在代码中寻找特定线索并练习识别它们,您将很快从代码中提取含义。学习识别代码中的信标代码信标是代码中暗示基本概念的模式。这些模式可以涵盖不同程度的复杂性。它们是代码片段,照亮了通往更高层次概念的道路。例如,当您看到遵循这种模式的代码时:遍历数组中的元素。根据此条件在新数组中添加元素。你知道你正在处理一个过滤器。将此代码视为“过滤器”而不是“包含if条件然后将旧数组中的一些项目放入新数组的循环”,这样您可以同时记住更多内容。许多想法。您将小想法合并为更大的想法。在传统的软件开发中,“模式”指的是著名的四人帮书籍——设计模式:可重用的面向对象的软件元素。代码信标和设计模式虽然有关联,但不是一个概念。比如DesignPatterns里面也有CodeBeacons。学习话语规则话语规则是在框架或语言中使用的习语和编码风格。就像对话中的对话规则一样,它们在程序员的脑海中设定了期望。Ruby和C#中的方法名称不同。Rails充分利用了MVC模式,而其他框架则没有(例如Meteor.js)。编写遵循所需话语规则的代码使代码更易于理解。即使对于专家来说也是如此。这是很自然的,您可以通过阅读示例代码或从您的同事那里获得这些规则。在迁移到新语言或框架时,有时需要注意这一点。这是一种在新语言中感觉更自在的快速方法。3.你可以更好地建立和修改假设***一个挑战是更好地建立和修改假设。你越能构建一个可能为真的假设,你就能越快地建立心智模型。使用系统方法构建心智模型的系统方法包括阅读每一行代码并在阅读时建立你的理解。它通常会产生最好的结果,但对于较大的代码库来说很快就会变得不可行。这最适合可管理大小的非常关键的代码。我发现这在现实世界中相当罕见。通常,您正在使用多年来不断增长的庞大代码库。使用机会主义方法使用机会主义方法,您可以查找一段有趣的代码,形成关于它的作用的假设,然后开始深入研究以查看您是否在正确的轨道上。善于在句法层面和更高的抽象层面识别标记,确实可以帮助您形成更好的假设。相对于完全理解而言,这并不是一种很好的方法,但是您可以更快地获得相对较好的理解。也很容易导致快速修复,然后破坏系统中您不了解的其他部分,所以要小心。要成为一名出色的程序员,您需要掌握以上所有三项我们都想成为最好的程序员。在当今的技术世界中,事情一直在变化,跟上所有最新的框架和方法可能非常具有挑战性。幸运的是,与其他程序员相比,您可以从本文中获得优势。如果你知道要寻找什么并且能够认识到自己的弱点,那么你可以用同样的努力取得更大更快的进步。对我来说,区分优秀程序员和真正优秀程序员的始终是他们对编程核心概念的理解。你认为什么样的程序员是杰出的?让我在下面的评论中看到。