如何学习编程?

如何学习编程?

笔记来源:How To Study Programming The Lazy Way
声明:该博客内容来自链接,仅作为学习参考

写在前面的话:
大多数人关注的是编程语言本身,而不是解决问题和逻辑思维。不要试图记住语言本身,而是要学习模式(pattern)、解决问题的方法、以及不同部分如何组合在一起


编程要关注的是解决问题的方法和逻辑思维

Study Tip 1:信息转换为问题

Study Tip 1要学会将信息转换为问题

关注核心概念、基本原理
关于编程的核心概念,视频中提到的下图中右侧的技术路线图,详见网站roadmap,这个网站提供了许多计算机领域的技术路线图,可以以这个路线图来了解编程语言的核心概念


例如:学习面向对象编程OOP这个核心概念时提出的5个问题


将这五个问题写出来,自己搜索信息、书籍等材料给出回答

Study Tip 2:重新定义

Study Tip 2要学会重新定义
将原有定义抄下来,自己将该定义重新写为通俗易懂的话

Study Tip 3:文字与图结合

Study Tip 3要将文字和图有效结合

Study Tip 4:简单编码

Study Tip 4要在实践中学习

在理解完一个概念后,从网络资源中获取相关示例代码进行深入理解,在理解过程中注意示例代码中是否有模式/步骤/流程,在理解完示例代码后,可以让AI帮你生成一些概念相关的编程测试题

假设在学习如何从API中获取数据
从网络资源中获取示例代码


从示例代码中分析是否有处理步骤/模式,例如:第一步获取url,第二步创建try catch捕获错误……,随后根据这个模式写出自己的代码

Study Tip 5:项目驱动

Study Tip 5编码能力的提升还需要项目进行驱动

视频中提到的算法可视化网站:
平台地址:algorithm-visualizer.org
github地址:algorithm-visualizer


可以画一下项目的架构,分模块开始编码,从而构建起项目的整个代码
架构可视化可以帮助你了解项目如何运作

Other Study Tips

1.主动回忆(Active Recall)
通过测试来训练,而不是重读笔记,可以让AI帮你生成一些概念相关的编程测试题

2.空间重复(Space Repetition)
在快要遗忘时进行回忆,不断重复就会使得遗忘时间延长


3.善于运用AI工具
AI tutor:可以使用AI解释核心概念帮助自己理解、调试解释代码
AI Practice quizzes/exams:可以使用AI生成代码测试题


Comparing Notes with AI:将AI的回答与自己的笔记进行比较有助于发现自己理解偏差


Simplify & refine my notes:用AI简化完善自己的笔记,例如之前提到的重定义阶段


面试准备,视频作者在刷leecode时的注意事项
不要试图记住解决方案,应该理解解决方案的工作原理和使用模式

视频作者在刷leecode时的Notion软件笔记配置
将leecode题分为今天要完成的、未完成的、需要复习的、已经解决的
问题解决后将其拖动到其他栏中


问题状态、问题难度、问题类型、解决时间
问题陈述(从leecode中复制+)

自己尽量想出一个解决方案和一个优化方案
解决方案(算法的步骤语言描述、代码、时空复杂度)


最重要的一个经验:问题导向、自顶向下

Top-Down, Stepwise Refinement
方法总述:将一个问题不断分解,直到可以被用代码明确写出来位置

目前我对问题导向式学习法还在探索阶段,下面以一本C++书中的例子来说明

question(问题):We approach this class-averaging program

Top(一句话描述):

determine the class average for the quiz

First refinement(第一次细化):

initialize variables
input, sum and count the quiz grades
calculate and print the class average

Second Refinement(第二次细化)
We need
• a running total of the numbers,
• a count of how many numbers we’ve processed,
• a variable to receive each grade entered by the user and
• a variable to hold the calculated average.

initialize variables 细化为
initialize total to zero,initialize counter to zero
input, sum and count the quiz grades 细化为:
prompt the user to enter the first grade
input the first grade (possibly the sentinel)
while the user has not yet entered the sentinel
add this grade into the running total
add one to the grade counter
prompt the user to enter the next grade
input the next grade (possibly the sentinel哨兵)
calculate and print the class average细化为:
if the counter is not equal to zero
set the average to the total divided by the counter
print the average
else
print “No grades were entered”

最终将问题使用top-down方法以伪代码形式不断细化得到以下结果,这里的伪代码可以直接转化为代码


将上述伪代码转化为代码


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Uncertainty!!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值