惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
S
Schneier on Security
A
Arctic Wolf
Scott Helme
Scott Helme
S
Securelist
Schneier on Security
Schneier on Security
W
WeLiveSecurity
Attack and Defense Labs
Attack and Defense Labs
Security Latest
Security Latest
Project Zero
Project Zero
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
Know Your Adversary
Know Your Adversary
P
Palo Alto Networks Blog
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Google DeepMind News
Google DeepMind News
P
Proofpoint News Feed
C
Check Point Blog
F
Full Disclosure
Stack Overflow Blog
Stack Overflow Blog
H
Hacker News: Front Page
T
The Blog of Author Tim Ferriss
TaoSecurity Blog
TaoSecurity Blog
Vercel News
Vercel News
A
About on SuperTechFans
N
News and Events Feed by Topic
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
The GitHub Blog
The GitHub Blog
S
Security Affairs
Y
Y Combinator Blog
T
The Exploit Database - CXSecurity.com
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Forbes - Security
Forbes - Security
IT之家
IT之家
WordPress大学
WordPress大学
Last Week in AI
Last Week in AI
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
F
Fortinet All Blogs
N
Netflix TechBlog - Medium
The Register - Security
The Register - Security
Jina AI
Jina AI
云风的 BLOG
云风的 BLOG
T
Tailwind CSS Blog
K
Kaspersky official blog
Hacker News: Ask HN
Hacker News: Ask HN
C
Cisco Blogs
MyScale Blog
MyScale Blog
博客园 - 【当耐特】
T
Threat Research - Cisco Blogs
D
Docker
G
GRAHAM CLULEY

硅上观道・我的个人技术博客

函数式心法 (3):巧用柯里化和部分应用 函数式心法 (2):理解运用高阶函数 打造 NixOS 开发环境 (2):NixOS学习与配置入门指南 打造 NixOS 开发工作流 (1):为什么选择 NixOS Haskell 心法 (1):初识 - 为何学、学什么和怎么学 Clojure 笔记 (2):基本语法结构和 REPL 驱动编程 Clojure 笔记 (1):语言生态介绍和环境配置 前端笔记 (1):ES 标准和 ES6+ 变量定义方法 当我们发现毕生追求的知识在AI面前毫无价值时,如何重建存在的意义? 5 月 28 日 DeepSeek R1 模型完成小版本试升级并开源,具体有哪些提升? 信息闭塞和被信息洪流冲刷,哪个弊端更大?谈错误信息的危害性 Rust CLI 实战:手搓微型 grep (4) 交互式处理错误文件名问题 Rust CLI 实战:手搓微型 grep (3) 更优雅的错误处理 Rust CLI 实战:手搓微型 grep (2) 实现软件第一版 Rust CLI 实战:手搓微型 grep (1) 新建项目 学计算机有什么好的获取学习资料的方法?掌握高效的资料收集技巧 有哪些看起来很高端的技术其实原理很暴力很初级?浅析CDN内容分发网络原理 长文 - 大一技术成长复盘:课程、竞赛与开源之旅 推荐一个IDE中的AI工具 - CodeGeex插件和AI辅助编程 关于本站 - 一篇旧文章,我对本站内容更新计划的最初想法 读书笔记:读庄子《齐物论》,探寻真正的自我 读书笔记 - 单向度的人:核心思想,内容解析以及我的感悟 一篇时评写作练习:矛盾与救赎 - 关于行善
学习编程可以为自己带来什么?- 理论与实践的紧密结合
硅上观道 · 2025-05-12 · via 硅上观道・我的个人技术博客
随笔思考

学习编程可以为自己带来什么?- 理论与实践的紧密结合

简单来说,学习编程可以带来理论与实践紧密结合的机会,解决实际问题的能力以及深入参与开源社区的基础.

这是我对一个知乎问题的回答。


简单来说,学习编程可以带来理论与实践紧密结合的机会,解决实际问题的能力以及深入参与开源社区的基础

1. 理论与实践的紧密结合

编程这项技能,或者再推广一点来说,计算机这门学科,几乎是整个理工科领域最容易把理论和实践紧密结合的领域。

原因很简单,编程的实践成本远远低于其他学科

学生物化学,想实践必须要有专业的实验室;学机械工程,想实践也得有专门的仪器和设备。计算机呢?不论是研究基础理论还是做偏向工程的实践,有台笔记本电脑就可以运行代码,可以随时随地进行探索。

由于这个领域的实践门槛实在是很低,主流的编程语言和技术方向往往在网络上有着大量的教程以及疑难解答。想要在入门之后进一步精进自己的能力,我们会发现在网络上有太多公开资源可以参考。

换言之,学习编程不仅可以让我们立刻实践,还可以在未来进行更深入地实践

理论与实践紧密结合的好处,主要在于能够给我们带来更快速的反馈。积极的反馈可以帮助积累信心,消极反馈同样能促进我们及时调整方向,小步快跑,敏捷试错。

正如教员在《实践论》中阐述的认知规律,编程完美契合理想的以实践驱动的认知迭代过程。

图1:《实践论》认知发展螺旋模型

也就是说,编程允许我们通过反复的实践,快速获得对于一个复杂问题的感性认知;在感性认知大量积累后,运用我们的逻辑思维,就可以实现从感性认知到理性认知的质变;最终,我们运用新的迭代后的理性认知去指导实践。

这样的“实践——认识——再实践”的循环多完成几次,螺旋上升,回望曾经的自己,大家一定会惊叹自己获得的知识和进步远超预期。

题主在问题描述中提到已经在 python 爬虫、游戏以及数据科学方向有所实践和探索,我想可能题主对于这个问题已经有了些体会。相信通过进一步的实践,这样的体会将会更加深刻。


2. 解决实际问题的能力

编程技能不仅可以通过紧密结合理论与实践的方式,实现能力和信心的快速提升;还可以培养解决问题的能力,拓宽我们改造世界的边界

具体来说,就是很多时候碰到生活中的一些问题,具备和不具备编程能力往往在结果上是截然不同的。比如,就拿题主提到的 python 数据分析来说,当我们在生活中碰到一些复杂数据需要处理时,掌握编程后就可以将我们从枯燥的重复操作中解放出来,显著提高整个流程的自动化程度。

我作为一个业余的天文爱好者,之前参与过一些公众科学活动,简单来说就是请志愿者肉眼对天文望远镜拍摄的照片进行分类,寻找之前未发现的小行星。

听起来挺有意思对不对?可是当观察数量变多时,起初再有意思的事情都会变得无聊起来。后来我一想,既然自己人工分类的数据最后很可能就是为了帮助其他科研团队训练自动化分类 AI,为什么我自己不能尝试训练一个呢?

说干就干。我很快根据哈勃望远镜的公开数据,通过微调 ResNet50 模型,实现了一个从自动下载图片到小行星识别的端到端流水线

图2:小行星项目数据处理示意图

两年前做的这个工作,现在看来,技术含量其实不高,纯粹就是自己做着玩,但是我的确是实际解决了人生中的一个切实存在的问题。解决这个问题,可能在学术上算不得什么,但却让我获得了莫大的成就感。

举这个例子,主要其实还是想说明学会编程会给我们一种拓宽了能力边界和对世界影响力边界的感觉,编程本身就是一个能力杠杆,帮助我们撬动更大的社会资源。

不知你是否感受到这其中独特的浪漫感呢?


3. 参与开源社区的能力

我最后想提的一点就是开源社区的问题。

学会了编程,不论语言、不论经验水平,你会发现自己就初步拥有了直接参与到开源社区的能力。

开源社区的特殊性,就在于你可以轻易在这里看到行业内最优秀的产品,最优秀的实践方案。更重要的是,你可以直接和行业内众多大佬前辈直接交流合作

图3:开源项目参与贡献流程图

之前有不少朋友向我吐槽学校里的教授很难给他们的编码思维和习惯带来有针对性的指导,很多时候作业实验完成了之后,能力提升还是要打个折扣的。

我不知道有多少朋友在大学里有这样的感觉。对于这种问题,我的统一解决方案就是:去开源社区。

在选择了合适的社区和问题解决后,我们往往会发现,社区内真的有不少人愿意带带新人——前提是你在问题上有了充分的思考和研究。

开源社区在很大程度上就是一些人用自己的时间换取别人的时间。只要你有心,付出了足够多的时间尝试解决一个问题,给出了你尽最大努力得到的解决方案,很多时候是会有人愿意拿自己的空闲时间认真审阅别人的代码的。

在参与开源的过程中,我们不仅能得到给知名项目做出贡献的获得感,更重要的是有行业专家对我们的代码进行审阅、分析和反馈

这种即时获取高价值反馈的特性,恐怕是其他学科很难达到的,可以说是开源社区独有的特色。

回到本文第一条提到的理论,那就是参与开源社区贡献可以从单个实践工作中能够得到海量的感性认知反馈,一次实践胜过别人数次实践。在此过程中,我们对于技术的认知水平必将获得更大幅度的提升。


可以说,学习编程,掌握计算机科学和工程带来的思维方式,不断进行实践,这一系列工作深刻改变了我自己,在思想上和实践上的益处已足够让我受益终生。

如果这些文字让你有所共鸣,欢迎关注交流。愿与君共勉!