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

1496 篇文章 10 订阅
1494 篇文章 14 订阅

编程和音乐

很多大师都会把编程比作建筑,比如架构、设计模式,基本就是用的建筑的语言,其实我个人感觉编程和音乐也是极其类似的。

比如最近在断断续续在看一本《代码大全》,里边针对提高代码可读性的变量定义,提到了变量的“跨度”,这其实就非常像音乐中的“音程”。

从通俗角度来说:

乱写的程序跑不起来或全是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=1b=2c=3d = 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个子函数

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

defsea():
	a()
	b()
	c()

乐曲

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

和弦、联弹、交响等

多种音同时发出、多种乐器同时演奏,基本就可以理解成编程中的并发、并行了。

比如各种编程语言,比如当我们使用APP或网页,执行一整套流程的操作时,背后是N种编程语言的共同协作下完成的,这不正是类似于交响乐中各种乐器的结合吗。

资源获取:
大家 点赞、收藏、关注、评论啦 、 查看 👇🏻 👇🏻 👇🏻 微信公众号获取联系方式 👇🏻 👇🏻 👇🏻
精彩专栏推荐订阅:下方专栏 👇🏻 👇🏻 👇🏻 👇🏻
每天学四小时:Java+Spring+JVM+分布式高并发,架构师指日可待
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值