编程和音乐
许多 高手都是会把编程比成工程建筑,例如构架、策略模式,基本上是用的建筑物的语言表达,其实我我觉得编程和音乐也是非常相近的。例如近期在时断时续在看一本《代码大全》,里面对于提升源代码易读性的变量界定,提及了变量的“跨距”,这实际上 就特别像音乐中的“音程”。
从简单视角而言:胡写的程序流程跑不起來或都是bug,乱弹的音符则惹人烦心灵。编程和音乐都是有对应的基本原理支撑点,两者都多多少少依靠一些数学思想方法。
从专业的视角比照,在网上检索了下,好像都还没写这些的,那大叔就简易归纳一下二者互通的位置吧。
下边由杰出的作家chenqionghe让你简易对比一下,are you ok ?
音符
例如四分音符、二分音符、全音符、八分音符、十六分音符、三十二分音符
基本定律便是二进制,编程语言表达便是靠二进制玩的,这别说了吧。举个事例:int32 int64 float32 float64
休止符
休止符和音符一样也是根据二进制的,四分休止符、二分休止符、全休止符、八分休止符、十六分休止符、三十二分休止符
这就相近编程语言表达中的:break、sleep、return
音名
例如有:C D E F G A B1 2 3 4 5 6 7
这基本上就可以了解成语言表达中的变量,变量被机构变成程序流程,各种各样音被机构变成音乐。
音程
例如多次音程,便是包括了好多个音
编码有一个相近的定义:跨距(span):考量一个变量的不一样引入点的挨近水平,即2个引入点中间相距的个数。例如
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身高涵数
例如这里有三小标题,一个小标题能够 解释成下边涵数的一个方式
def sea():a()b()c()
曲子
能够 解释成一个程序流程的类,或是一个包。
和旋、联弹、交响乐等
多种多样音与此同时传出、多种多样传统乐器与此同时弹奏,基本上就可以了解成编程中的高并发、并行处理了。例如各种各样编程语言表达,例如在我们应用APP或网页页面,实行一整套步骤的使用时,身后是N种编程语言表达的相互合作下实现的,这并不恰好是类似交响音乐中各种各样打击乐器的融合吗。