当前位置: 首页 > news >正文

程序员是怎么记住代码的?

程序员能记住所有东西吗?

程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约55%的软件开发人员报告每天至少使用一次StackOverflow来帮助解决编程问题。

使用死记硬背的学习来尝试用心记住所有内容在软件开发中是不切实际的。技术格局变化太频繁,无法尝试记住每一段语法或特定功能。有太多的语言,每种语言都有其怪癖,无法简单地记住您使用的所有内容的内部工作原理。

但是,如果程序员不记住所有内容,他们会做什么呢?让我们来看看软件工程师避免背诵学习东西的三种主要方法。

概念

无论您是自学成才、新兵训练营还是大学毕业生,每位导师或教程都会尝试将这些概念带回家。充分了解软件的基本原理可以更轻松地应用于各种不同的情况。从长远来看,它还使您成为更好的问题解决者和全能软件工程师。

人们经常指出自闭症程序员的盛行,以此来解释开发人员如何能够记住这么多。然而,现实情况是,他们只是对编程的基本原则有很好的掌握,并且非常了解特定语言的怪癖。

从长远来看,作为一名软件工程师,掌握基础知识将为你提供非常好的服务,这意味着你可以避免记住代码。

文档

一般来说,最常用的库和框架都有非常好的文档记录。文档使您的生活更轻松,并且通常是解决您遇到的简单问题的快速方法,尤其是在项目的早期。

入门可能很困难,有时需要大量样板代码。文档意味着您不必记住这些东西,可以直接从创建者那里获得它。

有了好的文档,就不需要使用死记硬背来记住你正在使用的代码。这一切都在那里供你使用,通常由你打算使用其代码的人制作。

堆栈溢出

堆栈溢出是互联网上最有用的资源之一。超过 80% 的开发人员每周至少使用该资源几次。如果你曾经在Google中输入过编码问题,毫无疑问,你会从StackOverflow社区得到答案。

这种发展驱动型环境的美妙之处在于,许多人已经面临同样的问题。它的社区性质意味着人们发布多种方法来解决同一问题,然后最好的方法被投票。因此,程序员不必记住代码,而是可以使用和调整现有的答案。

编码人员必须记住代码吗?

记住代码不是程序员为了做好他们的工作而必须做的事情。事实上,情况正好相反。最好的软件开发人员是了解底层算法的出色问题解决者,而不是可以喋喋不休地完成特定代码或语法行的机器人。

软件工程师不必记住代码就有机会在该领域取得进展。现实情况是,这不会影响你找到工作的机会,也不会影响你在未来五年内能去哪里。

基本原则

虽然编码人员不必记住代码,但强烈建议他们很好地掌握他们使用的技术的基本原理。了解某些语言的特性将帮助您更好地编写并更快地调试问题。

一旦你确定了原则,那就是一个完美的实践案例。长时间使用特定的语言或框架可以让你有一定的流利程度。不幸的是,获得这种流利程度的唯一方法是投入时间并学习基础知识。

相比之下,试图记住一切意味着你不太可能有效和高效地使用你的知识来解决手头的问题。

熟悉

观看更有经验的开发人员通常会让初级人员产生敬畏感。它们的速度和准确性有时令人恐惧。更不用说一些软件开发人员可以键入解决方案的速度了。

然而,这一切都来自熟悉。了解您正在使用的语言以及如何应用它需要时间。有经验的程序员以前会犯过成千上万的错误。但是使用迭代学习过程,他们会变得更好,并且不会再以同样的方式滑倒。

复制代码

许多开发人员远非记住代码,而是重用他们的代码或从其他人那里复制代码。如果您已经在另一个代码库中解决了特定问题,那么采用现有代码并重新调整其用途是有意义的。

当您可以从现有项目中复制和粘贴语法时,记住语法是没有意义的。我警告这一点,你永远不应该复制或使用你不理解的代码。这是许多新开发人员都会犯的错误,不会帮助您成为更好的开发人员。重用代码只有在您熟悉代码时才有意义。

程序员如何记住代码?

程序员不倾向于记住他们学到的每一件事,相反,他们熟悉核心编程概念,然后将这些概念应用于他们学习的各种语言。程序员记住的事情是通过以下方式学习的:

  1. 不可思议的实践
  2. 指导他人
  3. 发表演讲和撰写文章
  4. 回忆练习
  5. 阅读文档
  6. 笔记

没有一种方法可以记住您作为软件开发人员学到的东西。采用不同的方法是获取信息的最佳方式。让我们探讨一下程序员记住他们所学东西的几种不同方式。

实践

日复一日地担任软件工程师可以让您最大程度地接触语言或框架。这是熟悉一般概念和编程特定挑战的最佳方式。

指导

一旦你达到一定水平,指导初级开发人员几乎是理所当然的。这样做的好处是,当你教别人时,学习变得更加巩固。指导迫使你简单易懂地解释事情。它可以帮助您将学习提炼成一口大小的块,您可以为他人提供。

发表演讲和撰写文章

许多公司通过让个人将他们的学习成果反馈给更广泛的团队来促进学习。创建演示文稿或撰写文章的过程使您可以更深入地研究某个主题并尝试将其提炼下来。在整个过程中,您可以更好地了解要向所有人展示的内容。

这个网站上的很多文章都是相同的。我们找到主题并对其进行研究,这有助于巩固我们对主题的理解。

回忆练习

虽然这些练习并非在所有软件社区中都很流行,但回忆练习对于记住代码非常有用。Leetcode和Hackerank被顶级科技公司用来招聘,许多开发人员研究了这些平台几个月。他们可能没有总是适用于现实世界工作的问题,但它们可以让您很好地了解如何解决特定问题。

文档

文档是快速掌握新语言、框架或包的好方法。它是许多广泛使用的编码解决方案之间的成败。它是一种重要的资源,可用于帮助您记住系统的某些怪癖。除此之外,文档中还提供了许多最基本问题的答案。

笔记

近年来,手写笔记已经过时了。但是,保留您的学习记录并写下某些内容以供以后参考是有意义的。我的意思不是复制和粘贴代码以重用。但是,记录您的学习涉及我们上面已经提到的几点。

我个人使用Concept,它很棒。它消除了记笔记的所有痛苦,同时提供了一些非常高级的功能,如数据库和发布到网络。

如何记忆代码?4个很棒的提示

记住代码具有挑战性,因为它既需要理解代码,又需要将其提交到内存中。

我不建议专门尝试记住代码,因为一旦你开始理解基本概念并有足够的练习,它就会自然而然地出现。但是,这里有一些关于如何更好地记忆代码的提示:

  1. 了解代码:在尝试记忆代码之前,您必须清楚地了解代码在做什么。这意味着通读代码和任何文档以了解每行代码在做什么。
  2. 分解一下:与其试图一次记住一大块代码,不如尝试将其分解为更小、更易于管理的部分。专注于记住特定的函数或类,然后从那里开始构建。
  3. 可视化代码: 尝试在你的脑海中创建一个代码的心智模型。这可以帮助您更有效地记住代码,因为您将代码与视觉提示相关联。创建心智模型也将帮助您更好地理解基本概念。
  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>&#xff0c;包含之后就好了 2.#error: Error in C Standard Library usage 这里就是用C语言写程序时使用了C的头文件…...

AR开发平台 | 探索AR技术在建筑设计中的创新应用与挑战

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

小白到运维工程师自学之路 第六十集 (docker的概述与安装)

一、概述 1、客户&#xff08;老板&#xff09;-产品-开发-测试-运维项目周期不断延后&#xff0c;项目质量差。 随着云计算和DevOps生态圈的蓬勃发展&#xff0c;产生了大量优秀的系统和软件。软件开发人员可以自由选择各种软件应用环境。但同时带来的问题就是需要维护一个非…...

SpringBoot 集成 Elasticsearch

一、版本 spring-boot版本&#xff1a;2.3.7.RELEASEElasticsearch7.8.0版本说明详见 二、Elasticsearch 下载和安装 Elasticsearch 下载 kibana下载 ik分词器下载 配置IK分词器 2.1 解压&#xff0c;在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代码还原 问题描述&#xff1a;在vscode中修改了代码&#xff0c;没有提交&#xff0c;而且不小心点击了svn更新&#xff0c;导致本地修改的最新代码被覆盖&#xff0c;因为没有提交&#xff0c;所以远程仓库中也没有刚才修改的代码记录 解决&#xff1a; 通过vscode的时间…...

zore-shot,迁移学习和多模态学习

1.zero-shot 定义&#xff1a;在ZSL中&#xff0c;某一类别在训练样本中未出现&#xff0c;但是我们知道这个类别的特征&#xff0c;然后通过语料知识库&#xff0c;便可以将这个类别识别出来。概括来说&#xff0c;就是已知描述&#xff0c;对未知类别&#xff08;未在训练集中…...

【Golang 接口自动化07】struct转map的三种方式

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

华为数通HCIA-网络模型

TCP 网络通信模式 作用&#xff1a;指导网络设备的通信&#xff1b; OSI七层模型&#xff1a; 7.应用层&#xff1a;由应用层协议&#xff08;http、FTP、Telnet.&#xff09;为应用程序产生对应的数据&#xff1b; 6.表示层&#xff1a;将应用层产生的数据转换成网络设备看…...

端口的解说

端口的定义 端口是指计算机与外部交互的出入口&#xff0c;可以按照所见性分为物理端口和虚拟端口 物理端口&#xff1a; USB、HDMI、PDP、VGA、CUP等虚拟端口&#xff1a;mysql——>25, ssh——>22 、http——>80 、https——>443等 IP地址只能锁定到计算机&am…...

“深入了解Spring Boot: 快速构建微服务应用的利器“

标题&#xff1a;深入了解Spring Boot: 快速构建微服务应用的利器 摘要&#xff1a; Spring Boot是一个基于Spring框架的开发工具&#xff0c;旨在提供快速、方便地构建微服务应用。本文将深入探讨Spring Boot的特点和优势&#xff0c;以及如何使用示例代码构建一个简单的微服…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

【ROS】Nav2源码之nav2_behavior_tree-行为树节点列表

1、行为树节点分类 在 Nav2(Navigation2)的行为树框架中,行为树节点插件按照功能分为 Action(动作节点)、Condition(条件节点)、Control(控制节点) 和 Decorator(装饰节点) 四类。 1.1 动作节点 Action 执行具体的机器人操作或任务,直接与硬件、传感器或外部系统…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

苍穹外卖--缓存菜品

1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得&#xff0c;如果用户端访问量比较大&#xff0c;数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据&#xff0c;减少数据库查询操作。 缓存逻辑分析&#xff1a; ①每个分类下的菜品保持一份缓存数据…...

从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)

设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile&#xff0c;新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

[Java恶补day16] 238.除自身以外数组的乘积

给你一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O(n) 时间复杂度…...