“敲代码”学编程的正确方式

简介: 【来信】   老师您好!我自学编程的,我想向您咨询一下,关于敲代码的方法!   第一:我先理解书上、视频的源码,然后根据自己对源码的理解,然后把代码的思路写下来,然后自己这个思路把代码敲出来,当我自己不懂的时候,再返回去看源码!   第二:理解书、视频的源码,完全照抄一篇。

【来信】
  老师您好!我自学编程的,我想向您咨询一下,关于敲代码的方法!
  第一:我先理解书上、视频的源码,然后根据自己对源码的理解,然后把代码的思路写下来,然后自己这个思路把代码敲出来,当我自己不懂的时候,再返回去看源码!
  第二:理解书、视频的源码,完全照抄一篇。
  我很长一段时间是使用第一种方法,但是我觉得好累啊!学得很慢,当我遇到一些难以理解的代码而且200多行的代码的时候,我感觉我虽然理解了代码,但是要我完全敲出来,总是会出错,当我全部功能实现之后,要花很长时间!我不知道我自己的这种方法是不是有问题,身边我也没有人可以请教!所以我想向您咨询一下这个问题!

【回复】
  很感动你的执着。初学遇上困难很正常,这一关过了,就可以迎接下一关的挑战了,不断过关,让自己的知识和能力上到新的高度,有辛苦,但是其乐无穷。
  从你描述的学法上,我先做些点评。
  “理解书、视频的源码,完全照抄一篇(遍?)”这个时期,我觉得不要照抄。“敲代码”靠的不是手指头,靠的是大脑。你首先要做的是阅读程序,深度的阅读。并且在读的时候,不要一下钻到细节中,先看结构。要解决的问题大致是清楚的,于是,程序有几大块,每块的任务是什么(你会发现,最宏观的,无非就是“输入-处理-输出”三块),然后再分解每一块。对十来行代码的程序这样阅读,等阅读200行,甚至2000行的程序时,这种思维就形成了,再不会被其中某个语法上的小疑惑困住了。照抄一遍会让你直接进入细节,忽视了结构,不利于你形成自己解决问题的能力。
  基于上面所说的阅读,在理解后,自己写代码。这时候,思路不清时,想结构,语法不清时,看语法即可。若写出了和源码不一样的程序,完全正常,不要追求一模一样。只要知道自己思路清楚,表达正确就可以了,甚至,在思路上、表达上和源码不一样,是件更好的事。当自己写得过程中糊涂了,有必要再回去看源码时,我也希望你能清晰地知道,是去发现思路(结构)上的问题,还是语法上的问题。语法上的问题,也完全可以去看有关的知识点,而不是源码。
  进入一个新领域学习,总是初时要慢。要学知识本身,还要学方法。从长远看,接受自己的慢起步。在做简单题的阶段,以及现在已经学一段时间后,可以回头再看,尝试一题多解(用多种思路/结构)和一义多表(同样的思路,用多种语法结构描述,如一段分支结构的逻辑,用if-else语句、switch语句、?:运算分别表示)的方式做一做,你学得东西就“活”了。
  以上是对你提问题的直接回答。
  再多说点。
  程序设计初学者,我特指学第一门编程语言的同学,感觉到的起步难就是源于两个方面:语言本身和解题思路。解决一个问题,两方面的能力都需要,但刻意地将这两个方面学着分开一些。初学做小项目时是这样,实际上,到成为高手后,做大项目、大工程,必然也是这样的,并且做宏观设计的人和最终用编程语言实现的人甚至不是一个部门的。阅读程序是学习过程中很重要的手段,先掌握结构,必要时将重点的语法部分再看一看,没必要时就不看了,用自己觉得更自然的语句去表达。而在写程序时,先将结构想清楚,甚至写出来(画流程图,或者就在源码中,用注释的方式标出来,以便后续填空),再考虑用什么样的语句表达。
  在学习过程中,注意一下及时总结。其实初学时,从语法角度,无非就是一些语句、表达式;从结构角度,顺序、分支、循环三种控制结构,再加上模块化程序设计机制等;从数据结构角度,简单变量到数组再到结构体等。学一段时间,将这些成份,以及它们之间的关系,在脑子中从宏观上织一织网,渐次再想到细节,你就不会被各种表象困扰了。
  就说这些。祝你学习顺利,也相信你能渡过难关。
  

目录
相关文章
|
25天前
|
Linux 定位技术
kali Linux 2025.2 安装失败-解决
在安装 Kali Linux 时,若出现“选择并安装软件”步骤失败,通常由网络连接、软件源或硬件驱动问题引起。建议首先尝试重试,若仍失败,可更换为国内镜像源(如阿里云、清华大学或中科大镜像)以提高下载速度和安装成功率。
406 0
kali Linux 2025.2 安装失败-解决
|
Ubuntu 网络协议 Linux
在Linux中,如何检查和配置IP地址?
在Linux中,如何检查和配置IP地址?
|
Shell Linux
高级用法查询指定进程使用到的环境变量
查询指定进程使用到的环境变量
|
负载均衡 容灾 安全
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
Docker Swarm总结+基础、集群搭建维护、安全以及集群容灾(1/5)
439 2
|
网络协议 Linux
关于xenomai3 RTnet的一点记录
Xenomai3的RTnet协议栈支持TCP和UDP,但不包括IGMP,且ARP支持有限,可能导致延迟或错误。服务端仅允许单个客户端连接。启用`CONFIG_XENO_DRIVERS_NET_ADDON_PROXY_ARP`时,RTnet与rtproxy MAC相同,否则rtproxy不支持ARP。TCP/IP的实时性不足,但Xenomai4的EVL核聚焦二层实时网络。更多详情见链接。
294 0
|
Web App开发 数据可视化
如何轮播 DataV 大屏
如何轮播 DataV 大屏 当你使用 DataV 制作了足够多的大屏时,一定会冒出一个需求:轮流播放大屏页面,不要怕,一分钟就可以搞定 安装 Chrome 插件 TabCarousel 首先安装神器插件 TabCarousel 使用 安装完成之后,地址栏右侧会出现这么个小图标 。
19242 4
如何轮播 DataV 大屏
|
程序员
带你读《电路基础》之一:基本概念
本书内容采用简明易懂的风格,介绍了六步解决问题的方法,并在实践中的问题和实践问题,结合了超过468个新的或改变家庭作业问题。涵盖了全面的线性电路分析的方法,并保留了“设计一个问题”的功能,这有助于学生发展他们的设计技能,有学生发展的问题,以及解决方案。
|
弹性计算 Ubuntu 安全
阿里云服务器可选操作系统汇总(公共镜像类型)
本文介绍了阿里云服务器公共镜像类型可选系统汇总,可供新手用户了解当前选择公共镜像类镜像时有哪些可选的操作系统。
1566 0
阿里云服务器可选操作系统汇总(公共镜像类型)
|
JSON Java API
PHP 调用第三方API接口 、带参数跳转PHP
PHP 调用第三方API接口 、带参数跳转PHP
1055 0
PHP 调用第三方API接口 、带参数跳转PHP
|
运维 安全 NoSQL
如何使用官方最新源代码部署yapi?
我们之前使用的yapi 1.9.2,存在高危漏洞,攻击者可利用该漏洞在目标服务器上执行任意代码,导致服务器被攻击者控制,植入木马或挖矿病毒。通过目前网络上给出的安全解决方案,总感觉解决的不彻底,yapi 官方仓库已经修复了沙箱提权的问题,我尝试使用官方最新源代码部署yapi,遇到好多问题,顺手记录下来,无论部署新环境或者升级新版本,日后方便自己回顾或者他人参考。
1387 0
如何使用官方最新源代码部署yapi?