为了账号安全,请及时绑定邮箱和手机立即绑定

音乐里的代码:钢琴如何教你编程技巧

假期来了!

每年到了十二月,有两件事你绝对逃不掉:

  • 如果你是程序员,那就是著名的《Advent of Code》。
    • 如果你走进商场,那就是著名的柯克卡迪的贝尔岩(Kirkcaldy's Bell Rock)。

就是这样——规则不是我说了算。

Advent of Code 主要是编程谜题,就像你在 LeetCode 上全年都能找到的那样。它的目标是让你成为一个“更好的程序员”,这里的“程序员”。这里指的是程序员,而不是开发者。

所以,怎样才能提高编程水平呢?是不是每天都要做 LeetCode 或练习 LeetCode?我在工作中从来没有用到过归并排序,所以我真的需要学吗?

哇哦,慢点儿!

说到这儿,你知道钢琴在意大利语里叫"慢"吗?完美的切入,因为在我们开始编程之前,让我们谈谈钢琴。别急——这可不赖。

……

玩钢琴

当我没在用电脑键盘的时候,你大概可以在钢琴旁找到我(键盘、钢琴、电脑——你看出来联系了吗?对了,我懂了)。

有趣的是,学钢琴和编程还挺像的。

弹钢琴都包括些什么?这不仅仅是记住每个键的名字和声音。(通常你知道 C 在哪里。根据你的手相对于 C 的位置,你可以知道要弹哪些音符。但你不一定需要确切知道 AB 在哪里。)

弹钢琴就是弹出正确的音符和节奏。这实际上是两者的结合。如果你乱弹一气,那只是噪音,而不是音乐。

虽然你弹对了音符,但每个音符之间都间隔了10秒的静默,这也不是音乐——没有节奏感。

为了提高这两项技能,有许多不同的练习方法。对于击中正确的音符,你可以非常缓慢地演奏,完全忽略节奏,这样可以更专注于音符的准确性。目标是弄清楚乐谱上的音符及其对应的指法。有时你可能需要移动手,因此你需要练习调整手的位置。为了建立肌肉记忆,你可以非常缓慢地演奏几个音符或旋律。

为了节奏,你敲击简单的音符或音符序列,而不是演奏旋律,目标是在规定的时间内敲出音符。

随着你进步,练习难度会不断增加,但最终目标始终不变:通过精确的音准和速度来维持节奏感,演奏出一首完整的曲子。

当你达到中级水平,第一次演奏一首简单的曲子(比如儿童歌曲)时,几乎可以一次性完美演奏出来,只需要稍微练习一下。但是,如果你尝试演奏一些更具挑战性的曲子(比如爵士),你就需要对音符准确性和节奏进行专门练习。

另一个有趣的地方在于:你可以学习演奏一段难度高的曲子,几个月不碰,再试一次。你的第一次尝试可能会很糟糕,但你会很快找回手感,完美演奏,而不需要重新学习整个过程。

如果你想在钢琴上有所进步,你也需要走出舒适区。你可以一辈子都只弹儿童曲目,但这不能让你不经练习就演奏爵士乐。你需要尝试各种风格、不同难度和不同节奏的曲子。

总的来说,学钢琴,你需要做到以下几点:

  • 练不同类型的曲子来提高你的音乐技巧。
  • 演奏难度渐增的不同曲目。
  • 偶尔回去练练老曲子,找回手感并强化肌肉记忆。

…… 或 ……

编程呢?

嗯,也差不多。

就这样,谢谢你的宝贵时间,很快再见到你!

……

编程呢?

嗯,也是。

像 LeetCode 这样的题目就像是小曲。解决这些问题需要用合适的数据结构和算法(就像钢琴上的音符),并且要在限定时间内搞定(就像是弹奏旋律的节奏)。

如果你第一次在 LeetCode 上遇到需要归并排序的谜题,建议你在解谜题之前,先了解归并排序是什么,它是如何工作的,以及如何编写代码实现它。一步一步地来。之后,你可以尝试在规定时间内解决这个谜题。一开始,你可能会超时,但通过练习,你会逐渐找到节奏。

一旦你掌握了那个练习后,你可以探索其他谜题——其他旋律。有些相似,有些则大不相同。通过增加难度来取得进步,但不要期望一次就能成功。这并不是目标。

几个月后再去看它们(可能是为了一个项目或一次面试)。你会发现一开始你的实现可能有点慢,但你很快就能重新找回节奏,并在规定时间内再次解决这个题目。


我是钢琴演奏者,而不是音乐家;我是程序员,而不是开发者

现在,做编程题会让你成为更好的程序员吗?如果你经常做,大概会。但它们会让你成为更好的开发者吗?其实不然,因为这两者不一样。

如果我弹钢琴,我可以在家轻松地弹《铃儿响叮当摇滚版》。这太棒了,我可以玩得很开心,还能增添节日的热闹气氛。但弹钢琴并不能教我做其他事情:

  • 写自己的歌。
  • 和其他乐器一起玩。
  • 在交响乐团里拉一拉...

简单说,就是挺多事情。弹钢琴不一定让我成为音乐家。我是个业余钢琴手,这完全没有问题,挺好的。

同样,擅长编程并不意味着你就是一名真正的开发者(职业)。它不会教你如何编写结构化的代码、编写文档,或者还需要做很多工程师需要做的其他事情。它只是教会你如何解决编程中的难题。

当然,有些问题可能在专业环境中重复出现(例如,我经常处理树遍历问题,如DFS和BFS),但这与我工作中做的其他事情相比,只是很少的一部分。


节日快乐!如果你现在脑子里一直绕着《铃儿响叮当》这首歌,那我可就“功德无量”了。🎄

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消