程序员是怎么记住代码的?
程序员能记住所有东西吗?
程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。
使用死记硬背的学习来尝试用心记住所有内容在软件开发中是不切实际的。技术格局变化太频繁,无法尝试记住每一段语法或特定功能。有太多的语言,每种语言都有其怪癖,无法简单地记住您使用的所有内容的内部工作原理。
但是,如果程序员不记住所有内容,他们会做什么呢?让我们来看看软件工程师避免背诵学习东西的三种主要方法。
概念
无论您是自学成才、新兵训练营还是大学毕业生,每位导师或教程都会尝试将这些概念带回家。充分了解软件的基本原理可以更轻松地应用于各种不同的情况。从长远来看,它还使您成为更好的问题解决者和全能软件工程师。
人们经常指出自闭症程序员的盛行,以此来解释开发人员如何能够记住这么多。然而,现实情况是,他们只是对编程的基本原则有很好的掌握,并且非常了解特定语言的怪癖。
从长远来看,作为一名软件工程师,掌握基础知识将为你提供非常好的服务,这意味着你可以避免记住代码。
文档
一般来说,最常用的库和框架都有非常好的文档记录。文档使您的生活更轻松,并且通常是解决您遇到的简单问题的快速方法,尤其是在项目的早期。
入门可能很困难,有时需要大量样板代码。文档意味着您不必记住这些东西,可以直接从创建者那里获得它。
有了好的文档,就不需要使用死记硬背来记住你正在使用的代码。这一切都在那里供你使用,通常由你打算使用其代码的人制作。
堆栈溢出
堆栈溢出是互联网上最有用的资源之一。超过 80% 的开发人员每周至少使用该资源几次。如果你曾经在Google中输入过编码问题,毫无疑问,你会从StackOverflow社区得到答案。
这种发展驱动型环境的美妙之处在于,许多人已经面临同样的问题。它的社区性质意味着人们发布多种方法来解决同一问题,然后最好的方法被投票。因此,程序员不必记住代码,而是可以使用和调整现有的答案。
编码人员必须记住代码吗?
记住代码不是程序员为了做好他们的工作而必须做的事情。事实上,情况正好相反。最好的软件开发人员是了解底层算法的出色问题解决者,而不是可以喋喋不休地完成特定代码或语法行的机器人。
软件工程师不必记住代码就有机会在该领域取得进展。现实情况是,这不会影响你找到工作的机会,也不会影响你在未来五年内能去哪里。
基本原则
虽然编码人员不必记住代码,但强烈建议他们很好地掌握他们使用的技术的基本原理。了解某些语言的特性将帮助您更好地编写并更快地调试问题。
一旦你确定了原则,那就是一个完美的实践案例。长时间使用特定的语言或框架可以让你有一定的流利程度。不幸的是,获得这种流利程度的唯一方法是投入时间并学习基础知识。
相比之下,试图记住一切意味着你不太可能有效和高效地使用你的知识来解决手头的问题。
熟悉
观看更有经验的开发人员通常会让初级人员产生敬畏感。它们的速度和准确性有时令人恐惧。更不用说一些软件开发人员可以键入解决方案的速度了。
然而,这一切都来自熟悉。了解您正在使用的语言以及如何应用它需要时间。有经验的程序员以前会犯过成千上万的错误。但是使用迭代学习过程,他们会变得更好,并且不会再以同样的方式滑倒。
复制代码
许多开发人员远非记住代码,而是重用他们的代码或从其他人那里复制代码。如果您已经在另一个代码库中解决了特定问题,那么采用现有代码并重新调整其用途是有意义的。
当您可以从现有项目中复制和粘贴语法时,记住语法是没有意义的。我警告这一点,你永远不应该复制或使用你不理解的代码。这是许多新开发人员都会犯的错误,不会帮助您成为更好的开发人员。重用代码只有在您熟悉代码时才有意义。
程序员如何记住代码?
程序员不倾向于记住他们学到的每一件事,相反,他们熟悉核心编程概念,然后将这些概念应用于他们学习的各种语言。程序员记住的事情是通过以下方式学习的:
- 不可思议的实践
- 指导他人
- 发表演讲和撰写文章
- 回忆练习
- 阅读文档
- 笔记
没有一种方法可以记住您作为软件开发人员学到的东西。采用不同的方法是获取信息的最佳方式。让我们探讨一下程序员记住他们所学东西的几种不同方式。
实践
日复一日地担任软件工程师可以让您最大程度地接触语言或框架。这是熟悉一般概念和编程特定挑战的最佳方式。
指导
一旦你达到一定水平,指导初级开发人员几乎是理所当然的。这样做的好处是,当你教别人时,学习变得更加巩固。指导迫使你简单易懂地解释事情。它可以帮助您将学习提炼成一口大小的块,您可以为他人提供。
发表演讲和撰写文章
许多公司通过让个人将他们的学习成果反馈给更广泛的团队来促进学习。创建演示文稿或撰写文章的过程使您可以更深入地研究某个主题并尝试将其提炼下来。在整个过程中,您可以更好地了解要向所有人展示的内容。
这个网站上的很多文章都是相同的。我们找到主题并对其进行研究,这有助于巩固我们对主题的理解。
回忆练习
虽然这些练习并非在所有软件社区中都很流行,但回忆练习对于记住代码非常有用。Leetcode和Hackerank被顶级科技公司用来招聘,许多开发人员研究了这些平台几个月。他们可能没有总是适用于现实世界工作的问题,但它们可以让您很好地了解如何解决特定问题。
文档
文档是快速掌握新语言、框架或包的好方法。它是许多广泛使用的编码解决方案之间的成败。它是一种重要的资源,可用于帮助您记住系统的某些怪癖。除此之外,文档中还提供了许多最基本问题的答案。
笔记
近年来,手写笔记已经过时了。但是,保留您的学习记录并写下某些内容以供以后参考是有意义的。我的意思不是复制和粘贴代码以重用。但是,记录您的学习涉及我们上面已经提到的几点。
我个人使用Concept,它很棒。它消除了记笔记的所有痛苦,同时提供了一些非常高级的功能,如数据库和发布到网络。
如何记忆代码?4个很棒的提示
记住代码具有挑战性,因为它既需要理解代码,又需要将其提交到内存中。
我不建议专门尝试记住代码,因为一旦你开始理解基本概念并有足够的练习,它就会自然而然地出现。但是,这里有一些关于如何更好地记忆代码的提示:
- 了解代码:在尝试记忆代码之前,您必须清楚地了解代码在做什么。这意味着通读代码和任何文档以了解每行代码在做什么。
- 分解一下:与其试图一次记住一大块代码,不如尝试将其分解为更小、更易于管理的部分。专注于记住特定的函数或类,然后从那里开始构建。
- 可视化代码: 尝试在你的脑海中创建一个代码的心智模型。这可以帮助您更有效地记住代码,因为您将代码与视觉提示相关联。创建心智模型也将帮助您更好地理解基本概念。
- 实践: 最后,练习是记忆代码最重要的方面。编写的代码越多,就越容易将其提交到内存中。
相关文章:
程序员是怎么记住代码的?
程序员能记住所有东西吗? 程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。 使用…...
华为云NFS使用API删除大文件目录
最近在使用华为云SFS时,如果一个目录存储文件数超过100W,执行 “rm -rf path”时,存在删不动的情况,可以使用华为云API接口,执行异步删除。 华为官网: 删除文件系统目录_弹性文件服务 SFS_API参考_SFS Tu…...
国家金融监督管理总局明确将数据安全管理纳入操作风险管理范畴
为进一步完善银行保险机构操作风险监管规则,提升银行保险机构的操作风险管理水平,国家金融监督管理总局起草了《银行保险机构操作风险管理办法(征求意见稿)》(以下简称《办法》),现向社会公开征…...
.asScala爆红
转载:asScala报错 解决方案: 导入隐式转换 import scala.collection.JavaConverters._ //asScala需要使用隐式转换 代码中的asScala就可能不标红了,如果标红,就直接去掉,去掉就不报错了...

SOLIDWORKS Utilities应用
在实际的生产设计制造中,经常会遇到同一个零件多个版本,有可能再次调用零件的时间已经是很长时间之后,对于版本之间的区别就不会那么清楚,碰到简单明显的零件还可以轻松的找到区别,但是复杂的零件区别的查找可能会造成…...
发现的宝藏开源软件
1.华夏erp https://github.com/jishenghua/jshERP 2.s2b2c商城 后端 lilishop商城 电商 java商城系统: lilishop商城基于SpringBoot 全端开源 电商商城系统 支持小程序商城 H5商城 APP商城 PC商城 。支持业务模式包含 O2O商城 B2B商城 多语言商城 跨境电商 B2B2C商城 F2B2C商…...

【八】mybatis 日志模块设计
mybatis 日志模块设计 简介:闲来无事阅读一下mybatis的日志模块设计,学习一下优秀开源框架的设计思路,提升自己的编码能力 模块设计 在Mybatis内部定义了4个级别:Error:错误 、warn:警告、debug:调试、trance,日志优…...

Python-如何使用正则表达式
如何利用Python使用正则表达式 目录 正则表达式常用匹配规则 编辑re库的使用 match()方法: search()方法: findall()方法 : sub()方法: compile()方法; 通用匹配 贪婪与非贪婪匹配 贪婪匹配 非贪婪匹配 修饰符 转义匹配 正则表达式是处理字符的强大…...
分解质因子,将一个不小于2的整数分解质因数,例如,输入90,则输出:90=2*3*3*5
假设一个不小于2的整数n,对从2开始的自然数k,这个试探它是否是整数n的一个因子,如果是,则输出该因子,并将n/k的结果赋给n(接下来只需要对n除以已经找到的因子之后的结果继续找因子)。如果n的值不…...

C语言,vs各种报错分析(不断更新)
1.引发了异常: 写入访问权限冲突2.#error: Error in C Standard Library usage 1.引发了异常: 写入访问权限冲突 这里是malloc没有包含头文件<stdlib.h>,包含之后就好了 2.#error: Error in C Standard Library usage 这里就是用C语言写程序时使用了C的头文件…...

AR开发平台 | 探索AR技术在建筑设计中的创新应用与挑战
随着AR技术的不断发展和普及,越来越多的建筑师开始探索AR技术在建筑设计中的应用。AR(增强现实)技术可以通过将虚拟信息叠加到现实场景中,为设计师提供更加直观、真实的建筑可视化效果,同时也可以为用户带来更加沉浸式的体验。 AR开发平台广…...

小白到运维工程师自学之路 第六十集 (docker的概述与安装)
一、概述 1、客户(老板)-产品-开发-测试-运维项目周期不断延后,项目质量差。 随着云计算和DevOps生态圈的蓬勃发展,产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非…...

SpringBoot 集成 Elasticsearch
一、版本 spring-boot版本:2.3.7.RELEASEElasticsearch7.8.0版本说明详见 二、Elasticsearch 下载和安装 Elasticsearch 下载 kibana下载 ik分词器下载 配置IK分词器 2.1 解压,在elasticsearch-7.8.0\plugins 路径下新建ik目录 2.2 将ik分词器解压放…...
【ES】使用日志记录
1、修改操作 1、要删除Elasticsearch索引的分区下的数据 <index_name>是要删除数据的索引名称。这个命令会删除该索引下的所有数据。 POST /<index_name>/_delete_by_query {"query": {"match_all": {}} }2、删除特定条件下的数据 要删除a…...

svn还原本地代码
svn代码还原 问题描述:在vscode中修改了代码,没有提交,而且不小心点击了svn更新,导致本地修改的最新代码被覆盖,因为没有提交,所以远程仓库中也没有刚才修改的代码记录 解决: 通过vscode的时间…...

zore-shot,迁移学习和多模态学习
1.zero-shot 定义:在ZSL中,某一类别在训练样本中未出现,但是我们知道这个类别的特征,然后通过语料知识库,便可以将这个类别识别出来。概括来说,就是已知描述,对未知类别(未在训练集中…...

【Golang 接口自动化07】struct转map的三种方式
目录 背景 struct转map 使用json模块 使用reflect模块 使用第三方库 测试 总结 资料获取方法 背景 我们在前面介绍过怎么使用net/http发送json或者map数据,那么它能不能直接发送结构体数据呢?我们今天一起来学习结构体struct转map的三种方法&am…...

华为数通HCIA-网络模型
TCP 网络通信模式 作用:指导网络设备的通信; OSI七层模型: 7.应用层:由应用层协议(http、FTP、Telnet.)为应用程序产生对应的数据; 6.表示层:将应用层产生的数据转换成网络设备看…...
端口的解说
端口的定义 端口是指计算机与外部交互的出入口,可以按照所见性分为物理端口和虚拟端口 物理端口: USB、HDMI、PDP、VGA、CUP等虚拟端口:mysql——>25, ssh——>22 、http——>80 、https——>443等 IP地址只能锁定到计算机&am…...
“深入了解Spring Boot: 快速构建微服务应用的利器“
标题:深入了解Spring Boot: 快速构建微服务应用的利器 摘要: Spring Boot是一个基于Spring框架的开发工具,旨在提供快速、方便地构建微服务应用。本文将深入探讨Spring Boot的特点和优势,以及如何使用示例代码构建一个简单的微服…...
1688商品列表API与其他数据源的对接思路
将1688商品列表API与其他数据源对接时,需结合业务场景设计数据流转链路,重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点: 一、核心对接场景与目标 商品数据同步 场景:将1688商品信息…...
条件运算符
C中的三目运算符(也称条件运算符,英文:ternary operator)是一种简洁的条件选择语句,语法如下: 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true,则整个表达式的结果为“表达式1”…...
基于数字孪生的水厂可视化平台建设:架构与实践
分享大纲: 1、数字孪生水厂可视化平台建设背景 2、数字孪生水厂可视化平台建设架构 3、数字孪生水厂可视化平台建设成效 近几年,数字孪生水厂的建设开展的如火如荼。作为提升水厂管理效率、优化资源的调度手段,基于数字孪生的水厂可视化平台的…...

mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...

C++ 设计模式 《小明的奶茶加料风波》
👨🎓 模式名称:装饰器模式(Decorator Pattern) 👦 小明最近上线了校园奶茶配送功能,业务火爆,大家都在加料: 有的同学要加波霸 🟤,有的要加椰果…...

计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
BLEU评分:机器翻译质量评估的黄金标准
BLEU评分:机器翻译质量评估的黄金标准 1. 引言 在自然语言处理(NLP)领域,衡量一个机器翻译模型的性能至关重要。BLEU (Bilingual Evaluation Understudy) 作为一种自动化评估指标,自2002年由IBM的Kishore Papineni等人提出以来,…...
探索Selenium:自动化测试的神奇钥匙
目录 一、Selenium 是什么1.1 定义与概念1.2 发展历程1.3 功能概述 二、Selenium 工作原理剖析2.1 架构组成2.2 工作流程2.3 通信机制 三、Selenium 的优势3.1 跨浏览器与平台支持3.2 丰富的语言支持3.3 强大的社区支持 四、Selenium 的应用场景4.1 Web 应用自动化测试4.2 数据…...

Visual Studio Code 扩展
Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后,命令 changeCase.commands 可预览转换效果 EmmyLua…...

《信号与系统》第 6 章 信号与系统的时域和频域特性
目录 6.0 引言 6.1 傅里叶变换的模和相位表示 6.2 线性时不变系统频率响应的模和相位表示 6.2.1 线性与非线性相位 6.2.2 群时延 6.2.3 对数模和相位图 6.3 理想频率选择性滤波器的时域特性 6.4 非理想滤波器的时域和频域特性讨论 6.5 一阶与二阶连续时间系统 6.5.1 …...