当前位置: 首页 > 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;以及如何使用示例代码构建一个简单的微服…...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式&#xff0c;可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

智慧医疗能源事业线深度画像分析(上)

引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...

黑马Mybatis

Mybatis 表现层&#xff1a;页面展示 业务层&#xff1a;逻辑处理 持久层&#xff1a;持久数据化保存 在这里插入图片描述 Mybatis快速入门 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6501c2109c4442118ceb6014725e48e4.png //logback.xml <?xml ver…...

逻辑回归:给不确定性划界的分类大师

想象你是一名医生。面对患者的检查报告&#xff08;肿瘤大小、血液指标&#xff09;&#xff0c;你需要做出一个**决定性判断**&#xff1a;恶性还是良性&#xff1f;这种“非黑即白”的抉择&#xff0c;正是**逻辑回归&#xff08;Logistic Regression&#xff09;** 的战场&a…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容

基于 ​UniApp + WebSocket​实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配​微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

微信小程序云开发平台MySQL的连接方式

注&#xff1a;微信小程序云开发平台指的是腾讯云开发 先给结论&#xff1a;微信小程序云开发平台的MySQL&#xff0c;无法通过获取数据库连接信息的方式进行连接&#xff0c;连接只能通过云开发的SDK连接&#xff0c;具体要参考官方文档&#xff1a; 为什么&#xff1f; 因为…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...