程序员是怎么记住代码的?
程序员能记住所有东西吗?
程序员不会记住他们使用的所有代码,相反,他们倾向于阅读文档,学习基本概念,并使用软件社区来解决问题。大约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的特点和优势,以及如何使用示例代码构建一个简单的微服…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...
Python 包管理器 uv 介绍
Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...
Redis的发布订阅模式与专业的 MQ(如 Kafka, RabbitMQ)相比,优缺点是什么?适用于哪些场景?
Redis 的发布订阅(Pub/Sub)模式与专业的 MQ(Message Queue)如 Kafka、RabbitMQ 进行比较,核心的权衡点在于:简单与速度 vs. 可靠与功能。 下面我们详细展开对比。 Redis Pub/Sub 的核心特点 它是一个发后…...
Java + Spring Boot + Mybatis 实现批量插入
在 Java 中使用 Spring Boot 和 MyBatis 实现批量插入可以通过以下步骤完成。这里提供两种常用方法:使用 MyBatis 的 <foreach> 标签和批处理模式(ExecutorType.BATCH)。 方法一:使用 XML 的 <foreach> 标签ÿ…...
手机平板能效生态设计指令EU 2023/1670标准解读
手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读,综合法规核心要求、最新修正及企业合规要点: 一、法规背景与目标 生效与强制时间 发布于2023年8月31日(OJ公报&…...
