发布于 2026-01-06 0 阅读
0

为什么学习编程这么难?***

为什么学习编程这么难?

***

我听很多人说过这样一句话:

“我尝试过很多次学习编程,但似乎总是学不会。”

你以前说过类似的话吗?别担心,你绝对不是一个人。我之前教过很多编程入门课程,发现很多刚入门的开发者都有这种感觉。

学习编程很难。虽然有些人确实比其他人更容易学习编程(可能是因为他们兴趣更浓厚,或者更擅长逻辑/数学推理),但一个人自学编程的方式会影响他们掌握和保持这些技能的可能性。

学习所有新技能时,人们总是很容易急于求成,想要立刻做出一些很酷的东西,比如钩织一件毛衣,或者烤一个十二层楼高的焦糖泡芙塔。但重要的是要区分你的最终目标(你想做出什么)和为了实现这个目标你需要知道/学习什么。

除此之外,你还应该培养各种技能,以帮助你解决在完成项目时可能遇到的任何障碍或错误。

在本文中,我将讨论我与数百名往届学生分享的、帮助他们增强自信心和能力的最佳建议,以及我以前的导师与我分享的建议。

为什么学习它与其他技能如此不同?

学习编程常常被比作学习一门语言或乐器。因此,像学习任何语言一样,间隔重复等方法也经常被推荐用于学习新的编程语言。尽管这是一种有效的学习方法,但重要的是要认识到学习编程语言和学习人类语言之间的差异。主要区别在于:

编写代码时容不得半点错误。

例如,假设你正在学习法语。你通过与一位法语流利的人交谈来练习法语。即使你发音错误,或者句子中词序颠倒,对方很可能仍然能理解你想表达的意思,对话也能继续下去。不幸的是,计算机没有这种直觉。编程中没有“差不多就行”这种说法——只有对或错。这正是编程如此困难的原因。

如果你问任何一个有编程经验的人,我敢肯定他们都能回忆起好几次因为拼写错误或语法错误而卡在一个愚蠢的bug上好几个小时甚至好几天。如果他们想不起来……那他们肯定在撒谎!我本人就经历过这种尴尬:被一段有问题的代码困扰了好几个小时,最后才发现我把“document”写成了“docmuent”;或者因为连不上服务器而抓狂,最后才发现它运行在8888端口而不是888端口。人能理解代码的本意,但编译器可没有这种能力。

捂脸

代码的严苛特性使其学习起来异常困难。也正因如此,掌握一些关键技能至关重要,这些技能既能减少错误,又能帮助你解决和调试错误,从而从错误中吸取教训,继续前进。

我应该学习哪些技能?

电脑

如果你想学习编程,首先需要学习以下四件事:

  1. 核心编程概念
  2. 问题解决策略
  3. 如何调试你的代码
  4. 您所选语言的核心特性

核心编程概念

复制粘贴你在Stack Overflow上看到的答案是一回事,理解你写的代码及其作用又是另一回事。如果不先理解代码的基本组成部分,几乎不可能学会编程。以下是一些值得先研究的内容:

  • 变量和基本数据类型
  • 复合数据类型(字符串、数组、列表、哈希表)
  • 内存分配
  • 循环
  • 布尔逻辑

网上有很多课程可以教授这些概念,YouTube 上也有无数的视频。总的来说,这些技能在不同语言之间是通用的。

我刚开始学习编程的时候,主要看的是“The Coding Train”的视频。如果你想挑战自己并获得反馈,“Code Academy”也是个很棒的资源。

问题解决策略

一旦你掌握了核心概念,就应该花些时间练习完成功能,让自己接触不同的场景,并制定自己的应对策略。

接触一些常用的搜索排序算法。练习实现这些知名算法有助于你更好地理解计算机科学概念。此外,练习越多,你的问题解决能力就越强。这可能需要一些时间才能提高,但同时也会非常有趣。

以下是一些有趣的练习资源:

  • 破解编程面试:解析编程面试中常见的问题。
  • Coding Bat:我刚开始学编程的时候经常用它。完成题目后看到旁边出现金星,真的很有成就感。
  • LeetCode:另一个练习面试题的好工具。
  • Geeks 4 Geeks:精彩的文章深入浅出地讲解了流行的算法和核心编程概念。非常适合用来复习那些你可能已经有一段时间没接触过的知识点。

金星

如何调试你的代码

当你的代码出错时,重要的是要问问自己:我理解我写的代码吗?代码出错是因为我对这部分内容缺乏理解吗?

你的编程之旅很可能会遇到数不胜数的错误。即使是经验丰富的程序员,每天也依然会遇到各种各样的 bug 和挑战,需要逐一解决。经验丰富的开发者和经验不足的开发者之间的区别在于,前者拥有有效的策略来调试和解决代码中的问题。

调试代码的最佳方法(尤其对于初学者而言)是将变量打印到控制台,或者使用集成开发环境 (IDE) 内置的调试工具。通过逐行执行代码,找到问题根源,你会对代码有更深入的理解。在脑海中追踪代码也可能非常棘手和复杂。尝试在单步执行代码的同时,在纸上绘制内存图并追踪变量的运行轨迹。

宿醉

你遇到问题的经验越多,将来就越能更好地应对。如果一开始犯了很多错误,不要灰心丧气——我们都会犯错,而且每个人的学习曲线都不一样。把每一次错误都当作一次学习的机会——你会惊讶地发现,以后遇到类似问题时,你会很快领悟其中的原理。

Code Academy 的 Mike 重点介绍了一些很棒的调试策略,供初学者练习。

语言的核心特性

对你想学习的语言做一些研究。这并非严格意义上的步骤,而是你在学习概念和练习解决问题时应该自然而然养成的习惯。毫无疑问,你会遇到各种各样无法解释的错误和语法漏洞。通过研究你所选语言的语法规范,你就能更早地发现这些错误。不妨安排时间与一位有这门语言学习经验的人交流,请教一些技巧。

另一个需要考虑的因素是你想要开发什么类型的产品。这将影响到哪种编程语言最适合你。如果你计划开发 iOS 应用,Swift 是一个值得学习的语言。如果你想开发网站,JavaScript 则更为合适。做好调研并寻求建议。市面上的语言和工具种类繁多,找到最适合你目标产品特性和功能的语言至关重要。

***

额外提示

  • 找个导师。没有什么比找个人倾诉你的问题而不用担心自己显得愚蠢更好的了。他们的支持在你整个求知过程中都将是无价之宝。
  • 寻求帮助并不丢人。我知道我一直在重复这句话,但犯错是学习过程的一部分。它不会让你显得愚蠢,只会让你变得更高效、更有创造力。
  • 找几个伙伴一起学习。和一群人一起学习编程会容易得多。
  • 教别人。教学是最好的学习方式之一,所以一旦你对某个主题感到得心应手,就试着把你学到的东西教给别人。
  • 尽早养成好习惯。例如,给变量和函数命名时使用有意义的名称,添加代码注释,以及使用版本控制。未来的你会感谢自己的。
  • 记笔记。到处都有资源,试着整理一些笔记供自己参考。
  • 谷歌并非总是你的朋友。如何搜索以及搜索什么内容需要经验积累。与其搜索解决方案,不如搜索有助于你更好地理解问题的信息,这样你才能找到自己有依据的解决方案。
  • 买只橡皮鸭。我是认真的。把你的所有烦恼都告诉它,在解释问题的过程中,你或许就能找到答案。对着镜子说话
  • 这有点难度,但还是建议你做些测试。测试代码在各种不同极端情况下的响应至关重要,这样才能确保它能按预期运行。
  • 最后,也是最重要的一点,别指望自己能立刻掌握所有知识!冒名顶替综合症在计算机和工程领域非常普遍。我的朋友格蕾丝写了一篇关于冒名顶替综合症的精彩文章,我强烈推荐大家阅读。人们很容易将自己与那些似乎无所不知的人进行比较。但试着提醒自己,每个人都是从零开始的,每个人都曾经历过你现在所处的阶段。这种感觉很糟糕,但如果你坚持下去,投入时间,你也能像你那位在 GitHub 上拥有海量项目的朋友一样博学。

编程最棒也最糟糕的地方在于,学习永无止境,技术也在不断发展变化。对自己要有耐心,制定学习计划,然后反复练习!

企鹅

文章来源:https://dev.to/sophiekaelin/why-is-learning-to-code-so-hard-2921