【自学编程】我的小白学习编程经验
1 编程的特点,如何学习编程? 1.1 现在的一些思考 编程学习,本质上是一种非线性旅程。市面上有无数条学习路线,但哪条才是最好的?答案可能因人而异。固定的教程路径不一定适合所有人,有时候,找到自己的节奏反而更重要。 另一个特点是前置概念多。面对一堆新名词,新手很容易感到畏惧。但这里有个常见的误区:
1 编程的特点,如何学习编程?
1.1 现在的一些思考
编程学习,本质上是一种非线性旅程。市面上有无数条学习路线,但哪条才是最好的?答案可能因人而异。固定的教程路径不一定适合所有人,有时候,找到自己的节奏反而更重要。
另一个特点是前置概念多。面对一堆新名词,新手很容易感到畏惧。但这里有个常见的误区:不必在每一个初始概念上纠缠过久。更高效的做法是快速浏览,做好笔记,留个印象,然后立刻动手去写。编程是一门实践的科学,只看不练,既难以发现问题,也很难真正理解。
经验表明,掌握编程往往需要螺旋式地反复几遍。这其实也是很多学科学习的共通之处。如果过段时间回头看自己写的代码,觉得“惨不忍睹”,这未必是坏事,很可能恰恰说明你又进步了。
最后,记笔记真的很重要。把思考过程记录下来,无论是用本地文档还是互联网博客,都能让学习轨迹更清晰,未来回顾时也更有价值。
1.2 这些思考参考
这些想法并非凭空而来,它们部分源于两本颇具启发性的读物:一本是日本人写的《计算机是怎么跑起来的》、《程序是怎么跑起来的》,它们帮助建立了对计算机运作的直观理解;另一本是李笑来关于Python的书籍,其中关于学习与思考的论述也带来了不少灵感。
2 编程的基础思想:程序就是一段I/O过程。
2.1 代码的基础构成逻辑:
无论多复杂的程序,拆解到底层,任何一段有意义的代码都离不开三个核心部分。这可以说是代码最基础的构成逻辑:
输入数据 -> 处理数据 -> 返回结果
这个过程清晰明了。下面这几个流程图能更直观地展示这一思想(图源自网络,非自制):


2.2 对比写文章和编程
为了加深理解,不妨将编程与写文章做个类比。两者在构思和产出上有异曲同工之妙(下图同样来源于网络):


基于这个类比,可以进一步延伸理解:从最底层的比特(bit),到字节(byte,8个比特),再到变量(指向存储地址的标识符),构成了数据在计算机中存在的层级。下图展示了这种从微观到宏观的抽象过程:

3 程序里各种概念
厘清编程中的各种术语,是摆脱“新手感”的关键一步。下面是一些核心概念的梳理:
- 代码/源代码:一个宽泛的统称,通常指用高级语言(非机器语言)编写的程序文本。
- 常量,变量:基础的数据与存储单位,目前理解到这个层面即可。
- 表达式:例如
x > 3这样的数学或逻辑式子。它不含完整语法,不能独立执行。 - 语句/命令:一条完整的、符合语言语法结构的指令,可以单独执行。
- 过程/语句块/block:多条被组织在一起的语句,可能具有特定功能,也可能只是顺序排列。
- 函数:一种封装多条语句以实现特定功能的特殊形式。
- 类:另一种封装形式,可以看作是创建实例的蓝图或理想化模板。
- 类的方法,属性,事件:类所具有的行为和特征。
- 对象:基于类创建的、更高级的封装实体。
- 实例:由类这个蓝图具体化、现实化的一个对象。
- 对象的方法,属性,事件:对象实例所具备的行为和特征。
例子:对一段代码里各种名称的准确描述
理论之后,看个实例。如何准确描述一段代码中的各个部分?
整个 if...endif 结构可以算作一个完整的语句或命令。事实上,在CMD等环境中,整个if结构确实可以写成一行,作为一个命令。
if condition( expression / 逻辑表达式 i>5 ) then
[语句序列]
elseif condition then ‘语法:分支
[语句序列]
else ‘语法:分支
[语句序列]
endif
再看 select case 结构:
select case 文本表达式 (如 i)
case 逻辑表达式
[语句序列]
case 逻辑表达式
[语句序列]
end select
4 结构化编程有3种语句结构
所有结构化程序都由三种基本控制结构构建而成,这是编程的基石:
- 顺序结构:这是所有程序语言的默认基础!代码默认从上到下,逐行执行。
- 条件/分支结构:简单说,就是根据判断条件的真假,让程序走向不同的分支路径。
- 循环结构:让一段代码重复执行。这正是代码自动化、高效处理问题的直接优势所在。
5 写于20200101的话:自学编程的路,冷暖自知
更新记录
这篇内容最早源于2018年8月刚开始学习VBA时的帖子。2020年1月1日,我重新整理并加入了第一大部分的内容。希望未来的自己看到时,目标能更清晰,动力能更持久。
行动:新年伊始,最近把博客彻底翻新了一遍。一方面因为CSDN的改版导致分类有些混乱,另一方面也是觉得自己早期写的东西不够成熟,借此机会重新梳理。
写这个的目的是什么:
坦白说,我仍处在编程新手的阶段,学习也是断断续续。但我希望把编程培养成一个长期的爱好。
每隔一段时间回顾自己写的东西,总会有新的体会。最大的感受往往是:当初写得真稚嫩啊,错误不少,理解也肤浅,甚至有过清空博客重来的冲动。
但转念一想,有必要吗?人生无法重来,走过的路,即便歪歪扭扭,也是自己真实的足迹。谁不是这样一步步成长起来的呢?或许,这个不完美的学习轨迹,对同样起步的其他人也能有一丝帮助。
如果是私人日记,或许就任其自然了。但CSDN毕竟是技术博客社区,我不希望这些编程小白的记录,将来成为搜索引擎里的“信息垃圾”。所以,尽一份力所能及的努力去整理和优化,算是为自己,也为可能看到它的同路人负责。
为什么要学编程
目的很明确:
- 兴趣驱动:喜欢编程带来的那种控制感和创造事物的满足感。
- 目标导向:希望能亲手用代码做出自己想用的工具或产品。如果不学编程,我可能就去钻研机械了。
- 培养爱好:至少,让它成为我生活中一个持久的兴趣点。
自学编程的最大动力是:
心里一直有个遗憾:身处IT行业,却不会编程,总觉得少了点什么。
一个直接的动力来自孩子。未来孩子如果要学编程,与其完全假手他人,不如自己先懂一些,将来或许能一起探讨,甚至引导。
为什么花这么大的精力学VBA
选择VBA的理由非常务实:工作中天天和Excel打交道,而Excel集成了VBA开发环境(VBE),可谓“近水楼台先得月”。学了VBA,马上就能解决工作中的一些重复性劳动,提升效率。这种“学以致用、即时反馈”的感觉,对于保持学习热情至关重要。
为什么学CMD,HTML
道理类似。CMD(命令提示符)和HTML,都是电脑上经常接触甚至“遇见”的东西。学习从熟悉的环境开始,总比从完全陌生的领域入手要容易得多,这不是舍近求远。
为什么学Python
原因很简单,因为它火。Python被公认为当下最热门、也是最容易入门的编程语言之一,至少社区普遍这么认为。实际接触下来,感觉确实不错,生态丰富,语法友好。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















