你绝对想不到:编程和音乐有这么多相似之处,程序员原来是艺术家

简介: 很多大师都会把编程比作建筑,比如架构、设计模式,基本就是用的建筑的语言,其实我个人感觉编程和音乐也是极其类似的。比如最近在断断续续在看一本《代码大全》,里边针对提高代码可读性的变量定义,提到了变量的“跨度”,这其实就非常像音乐中的“音程”。

编程和音乐

很多大师都会把编程比作建筑,比如架构、设计模式,基本就是用的建筑的语言,其实我个人感觉编程和音乐也是极其类似的。
比如最近在断断续续在看一本《代码大全》,里边针对提高代码可读性的变量定义,提到了变量的“跨度”,这其实就非常像音乐中的“音程”。

从通俗角度来说:
乱写的程序跑不起来或全是bug,乱弹的音符则扰人心弦。
编程和音乐都有相应的原理支撑,两者都或多或少依赖一些数学知识。

从专业角度对比,网上搜索了下,貌似还没有写这个的,那叔叔就简单总结一下两者相通的地方吧。

下面由伟大的诗人chenqionghe给你简单类比一下,are you ok ?

音符

比如四分音符、二分音符、全音符、八分音符、十六分音符、三十二分音符

网络异常,图片无法展示
|

基本规律就是二进制,编程语言就是靠二进制玩的,这不用说了吧。
举个例子:int32 int64 float32 float64

休止符

休止符和音符一样也是基于二进制的,四分休止符、二分休止符、全休止符、八分休止符、十六分休止符、三十二分休止符

网络异常,图片无法展示
|

这就类似编程语言中的:break、sleep、return

音名

比如有:
C D E F G A B
1 2 3 4 5 6 7

这基本就可以理解成语言中的变量,变量被组织成了程序,各种音被组织成了音乐。

音程

比如几度音程,就是包含了几个音

代码有一个类似的概念:
跨度(span):衡量一个变量的不同引用点的靠近程度,即两个引用点之间相隔的行数。
比如

a=1
b=2
c=3
d = a+b+c

在这段代码里,a变量的跨度是4,因为它最开始引用和结束引用占用了4行。

音色

虽然高低、长短、强弱可以都一样,但是由不同乐器演奏的音色不同,比如有:钢琴、小提琴、琵琶、二胡、古筝等等
编程一样,最终呈现的都是样的结果,但可以是由不同的语言写的,比如有:C、GO、Java、Python、PHP、JavaScript等等

反复

网络异常,图片无法展示
|


音乐中有的N种反复,基本就可以理解成了编程中的循环了:for、do-while、whie

跳音/重音/轻音等

这样的特殊处理,就可以理解成编程中的if了
遇到
相当于 if 遇到这个音符或者语句,特殊操作

if a == ''.'':
   跳音
if b == ''>''
   重音  
if c == ''<''
   轻音

小节

可以理解成函数

乐句

网络异常,图片无法展示
|


可以理解成函数中调用了N个子函数

比如这里有三小节,一个小节可以理解成下面函数的一个方法

def sea():
  a()
  b()
  c()

乐曲

可以理解成一个程序的类,或者一个包。

和弦、联弹、交响等

多种音同时发出、多种乐器同时演奏,基本就可以理解成编程中的并发、并行了。
比如各种编程语言,比如当我们使用APP或网页,执行一整套流程的操作时,背后是N种编程语言的共同协作下完成的,这不正是类似于交响乐中各种乐器的结合吗。

本文就是愿天堂没有BUG给大家分享的内容,大家有收获的话可以分享下,想学习更多的话可以到微信公众号里找我,我等你哦。

相关文章
|
6月前
|
程序员 数据处理
令人膛目结舌的代码技巧:探索编程世界奇妙之处(3)
令人膛目结舌的代码技巧:探索编程世界奇妙之处(3)
54 0
|
6月前
|
缓存 程序员 Python
令人膛目结舌的代码技巧:探索编程世界奇妙之处(2)
令人膛目结舌的代码技巧:探索编程世界奇妙之处(2)
54 0
|
6月前
|
程序员 编译器 数据处理
令人膛目结舌的代码技巧:探索编程世界奇妙之处(1)
令人膛目结舌的代码技巧:探索编程世界奇妙之处(1)
60 0
|
1月前
|
算法 搜索推荐 程序员
编程之舞:从代码到艺术的转变
【9月更文挑战第35天】本文旨在探索编程不仅仅是技术操作的集合,更是一种创造性的艺术表达。我们将通过具体的编程示例和技巧,展示如何将代码转化为富有美感和效率的作品。文章将引导读者理解编程背后的哲学和美学原则,从而提升他们的编码技能和审美意识。
40 3
|
3月前
|
算法 JavaScript 前端开发
编程之舞:从代码到艺术
【8月更文挑战第30天】在数字世界的舞台上,代码不仅仅是指令的堆砌,它更像是一种语言,一种能够创造无限可能的艺术。本文将带你走进编程的世界,探索如何将枯燥的代码转化为富有创造力的艺术作品,从而开启一段技术与艺术交织的旅程。
|
3月前
|
Java 程序员 C++
从代码到艺术:我的编程之旅
【8月更文挑战第29天】这是一篇关于个人编程经验的文章,作者通过自己的经历,分享了编程的乐趣和挑战,以及编程如何改变他的思维方式。文章不仅包含技术感悟,还融入了作者的人生哲学和对未来的展望。
|
4月前
|
自然语言处理 算法 安全
编程之道:从代码到艺术
在数字时代的浪潮中,编程已不仅是一项技术活动,它更是一种创造与表达的艺术。本文将通过探索编程的深层意义,揭示如何将枯燥的代码转化为充满创造力的作品。我们将一同走进编程的世界,感受逻辑与美学的交融,体验问题解决的快乐,并最终理解编程如何影响我们的生活与思维。
|
3月前
|
算法 搜索推荐
编程之道:从代码到艺术的探索
在数字时代的浪潮中,编程已不仅是一项技能,它逐渐演变成一种艺术。本文将通过个人的技术感悟,探讨如何从基础的代码编写,逐步深入到编程的艺术境界。我们将一起探索编程背后的思考方式、解决问题的策略,以及如何通过技术实现创造性的解决方案。文章旨在为读者揭示编程之美,鼓励更多技术人员以艺术家的心态去探索和实践。
34 0
|
5月前
|
算法 程序员 UED
探索代码的诗意:编程中的创意与美学
【6月更文挑战第4天】在数字世界的编织中,代码不仅仅是冷冰冰的指令集。它们像诗人的笔触,绘制出技术与艺术交融的画卷。本文将带你走进编程的深层次美感,探讨如何在逻辑的严谨与创意的自由间找到平衡,以及这种平衡如何激发技术创新和提升用户体验。
54 0
|
6月前
|
算法 程序员 UED
探索编程之道:从功能实现到艺术创造
【2月更文挑战第18天】 在数字世界的构建中,编程已不仅仅是逻辑与算法的堆砌,它正逐步演变成一种创造性表达的手段。本文将探讨编程从基础的功能实现向高级的艺术创造的转变过程,分析编程者如何通过技术深入、创新思维和持续实践,提升其技艺至艺术境界。我们将审视几个关键要素——技术的深度理解、设计的美学融入以及代码的工艺精神,并讨论它们如何共同作用于编程实践中,以培养出能够编织数字世界之美的编程艺术家。