在过去的几十年中,对音乐创作和编程都感兴趣的计算机科学家设法将两者结合在一起。人工智能现在可以创作与专业音乐家创作的音乐几乎没有区别的音乐。
许多专业开发人员对音乐有着真正的热情,这已经不是什么秘密了,许多音乐家也涉足计算机编程。例如,多产的英国音乐家Elvis Costello被描述为 “他那一代人中最优秀的词曲作者 ”,在他的音乐事业起飞之前,他在20世纪70年代经营着IBM 360。
你可以看到为什么人们可能会被这两个概念所吸引; 创作旋律和写作算法有很多共同点。从表面上看,这两者似乎完全不同,但发展有创造性的一面,而作曲有机械的一面。那么,编程和作曲有多相似呢?
你有音乐在你
让我们先来看看组合和编程之间的相似之处。
1. 它们都是关于遵循逻辑规则。
作曲,就像编程一样,需要古希腊人称之为Trivium。您需要:
- 语法: 扎实掌握基础知识-无论是乐谱和理论还是编程语言规则
- 逻辑: 您需要能够创建 “逻辑论证”。在编写音乐或代码时,您需要遵循逻辑规则,以使 “移动部件” 正确地协同工作。
- 修辞: 除了遵循语法和逻辑,你还需要能够说服听众和用户采用新的标准做法。
如果不遵循组成或发展的基本原则,事情就是行不通的。一个随意编写的程序将充满错误,从同样的意义上说,一个不完整的和弦结构将产生不和谐。
2. 他们是关于使一些美丽的小部件
要成为一名出色的钢琴家,您必须首先练习并完善基础知识: 简单,重复的音阶和arpeggios。要成为一名优秀的开发人员,您需要花费大量时间来确保即使是最简单的表达式也能优雅且正确地编码。一旦你有了这些小块,你就可以建造更大的东西,这同样重要:
3. 你需要能够看到更大的图景
就像作曲家必须考虑管弦乐队的所有不同部分以及它们如何结合在一起一样,开发人员在开始构建程序架构时需要在脑海中保持抽象的 “更大的画面”。这两个学科都是关于建立更大更好的东西。
4. 自我表达是关键
音乐和软件开发都需要创造力和自我表达; 两者都是关于培养自己的风格,创造新的和鼓舞人心的东西。
5. 你需要在技术上参与
音乐家和开发人员需要花很长时间思考他们的创作将如何与其他输出进行交互,并在 “最终用户” 的手中。作曲家可以添加重音标记 ,以指示管弦乐队成员演奏的风格。吉他手可能想要考虑使用外部硬件 (amps,效果踏板等),或者他们希望如何在录音室中制作歌曲。开发人员同样需要牢记其他人将如何使用他们的最终产品,在哪种设备上以及在什么情况下使用。
6. 它们都包括协作和个人主义方面
莫扎特可能花了很多时间独自研究他的下一篇作品的声音,但他的技能也需要与其他人合作-即他指挥的音乐家。同样,最成功的开发人员不能是纯粹的内向者; 他们需要与最终用户,经理,UX设计师等合作。
我不是音乐开发人员
虽然这些学科有很多共同点,但值得听听反对的论点。并非每个开发人员都打算成为下一个贝多芬!
1. 这种比较只是一种方式,我们作为开发人员吹起我们的自负?
正如《编码恐怖》博客的作者所指出的那样,开发人员在手工艺与绘画,音乐或其他艺术形式之间进行的比较可能更多地被视为自我强化,而不是真正的比较。当然,我们都想认为我们正在构建的应用程序与Gershwin的最佳应用程序一样精彩,或者我们刚刚设计的网站具有与Miles davis的那种蓝色相同的持久影响力。但老实说,这不是完全一样的事情,是吗?
2. 编程是关于解决一个问题
例如,当你被要求设计一个应用程序时,通常是为了解决特定的业务或消费者问题。开发人员擅长解决这类问题,但这真的可以与音乐相提并论吗?最纯粹的构图应该是代表和激发纯粹的情感和情感。
3. 编程有一个非常不同的目的,音乐
当您开发任何类型的工具时,最终目标是让最终用户能够使用它做一些特定的事情。假设您正在构建一个业务应用程序-您的创建应该意味着最终用户的日常任务得到促进。相比之下,音乐除了纯粹的享受之外,并没有真正服务于特定的 “目的”。
称量天平
陪审团仍然在这个问题上; 虽然很明显,组成和发展肯定有某些共同的因素,但也有很多不同的领域。我们所知道的是,开发人员和音乐家都可以丰富我们的生活,并为我们提供我们从未知道我们需要的东西,而我们现在无法没有这些东西。