`
熊likecocoa
  • 浏览: 18603 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

编程和音乐真的很像吗?

 
阅读更多
在过去的几十年时间里,对音乐作品和编程同时感兴趣的计算机科学家成功地将两者结合在一起。现在的人工智能谱写的音乐,几乎与由专业音乐人创建的没有区别。
很多专业的开发人员对音乐有着真正的激情,以及许多音乐家涉足过编程,这些已经不是什么秘密。例如,Elvis Costello,一位多产的英国音乐家,被誉为“他那一代最优秀的词曲作家”,在他的音乐生涯腾飞之前,在上世纪70年代操作IBM 360。

你可以发现为什么人们会沉溺于这两个领域:因为创作旋律和编写算法之间有很多共同之处。从表面上看这两者似乎颇不相同,但是开发有创造性的一面,而谱曲亦有机械化的一面。那么,编程和谱曲有什么相似之处呢?

你的心中已经有音乐的脉动

让我们先来看一看谱曲和编程之间的相似之处。

1.它们都遵循关于以下逻辑规则

谱曲,和编程一样,需要古希腊人所谓的三艺。即:
语法:扎实理解基本原理——乐谱和编程语言规则的理论或知识。
逻辑:你需要能够创建“逻辑推理”。当音乐创作或编码时,你需要遵循逻辑规则使得“活动件”一起正常工作。
修辞:和语法和逻辑一样,你需要说服听众和新方法的使用者接受标准做法。

如果不遵循作曲和开发的基本原理,一切都无法正常运转。一个胡乱编写的程序将充满bug,在相同意义上,病态的和弦结构会造成乐曲的不和谐。

2.它们从一件件小事开始构建了美的东西

要成为一个伟大的钢琴家,你必须先练习和完善基础知识:简单、重复的音阶和琶音。要成为一个伟大的开发者,你需要花费大量时间来确保即使是最简单的表达式,也能够优雅和被正确编码。从一件件小事开始,你渐渐打造出了一个个伟大的东西,因此:

3.你需要能够见微知著

正如作曲家必须考虑到乐团的不同乐器组以及这些乐器组是如何组合在一起的,而开发者则需要在他们的头脑中保持一个抽象的“大局观”,当他们开始构建程序架构的时候。这两个学科都需要构建一些更大,更好的东西。

4.自我表达是关键

音乐和软件开发都需要创造力和自我表达能力:两者都需要培养自己的风格,创造一些新的和令人振奋的东西。

5.你需要涉猎技术

音乐家和开发人员需要花费很长的时间来思考他们的创作如何与其他产品交互,以及如何呈现在“最终用户”的手中。作曲家可能会增加重音符号以指示乐团 成员要演奏的风格。吉他手可能会考虑使用外部硬件(amps,效果器等),或他们希望在录音室里制作他们的歌曲。同样的,开发人员需要牢记别人将在哪种设 备和什么上下文中如何使用他们的最终产品。

6.两者都包括协作和个人主义

莫扎特单独花了很多时间来想他的下一个曲谱,尽管如此,他依然需要与他人合作——也就是他指挥的乐师。同样,最成功的开发人员绝对不是一个纯内向的人:他们需要与最终用户、经理和用户体验设计师等人员合作。

我不是音乐开发人员!

虽然两者有很多的共同点,但一些反对意见也值得我们听一听。不是每一个开发人员都能成为下一个贝多芬!

1.这个比喻是不是只是一种我们作为开发人员吹牛和显摆的方式?

正如Coding Horror博客的作者认为的那样,开发人员将自己的技艺与绘画,音乐或其他艺术形式之间作比较不仅仅是一种比喻,更多的是一种自我夸耀。当然,我们都希 望我们正在构建的app能够像Gershwin的音乐一样棒一样好,或者我们刚刚设计好的网站能够像Miles Davis的《Kind of Blue》一样影响深远。但说实话,这的确大不相同,不是吗?

2.编程是为了解决问题

当你被要求去设计一个app的时候,通常是为了解决问题,例如,特定的业务或消费者问题。开发人员善于解决此类问题,但这是否真的可以比作音乐?从最纯粹的角度看,谱曲是纯真感情和情绪的迸发和表达。

3.编程有一个非常不同于音乐的目的

当你开发任意一种工具时,最终目标是让终端用户能够做一些具体的事情。假设你正在构建一个业务app——你的创作应该意味着为最终用户的日常工作提供便利。相比之下,音乐,则并没有一个特定的“目的”,只是一种超越纯粹的享受。

它们有多重要

我们依然无法做出决定:虽然显然,谱曲和开发绝对有着一些共同的因素,但它们也有很多区域是存在分歧的。我们所知道的是,开发人员和音乐家都可以丰富我们的生活,并给我们一些以前不知道我们需要,但是现在生活不能没有的东西。(作者:小峰  来源:码农网)

译文链接:http://www.codeceo.com/article/programming-similar-to-music.html
英文原文:Is Programming Similar to Composing Music?
分享到:
评论

相关推荐

    2.如何设置背景音乐?(Visual C++编程 源代码)

    2.如何设置背景音乐?(Visual C++编程 源代码)2.如何设置背景音乐?(Visual C++编程 源代码)2.如何设置背景音乐?(Visual C++编程 源代码)2.如何设置背景音乐?(Visual C++编程 源代码)2.如何设置背景音乐?...

    Verilog 音乐播放编程

    Verilog音乐编程 音乐播放 开关切换两首音乐 遇见和飘雪两首歌曲 txt文档内为Verilog代码

    Scratch少儿编程项目音效音乐素材-【游戏】音效-电脑游戏.zip

    Scratch使用积木块式的编程界面,使得编程过程像搭积木一样直观,适合初学者理解和操作。通过编程,孩子们可以创造出互动故事、动画、游戏等各种项目,培养他们的逻辑思维、问题解决和创新能力。 其次,**游戏素材*...

    Scratch少儿编程项目音效音乐素材-【乐器】音效-钢琴.zip

    总的来说,这个压缩包提供的钢琴音效资源为Scratch编程项目提供了丰富的音乐素材,可以帮助孩子们在编程学习过程中创造出更多富有创意的作品,同时加深他们对音乐和编程的双重理解。通过实践,孩子们将学会如何将...

    51单片机编程音乐乐谱提取软件和音乐常识

    总的来说,51单片机编程音乐乐谱提取软件和音乐常识是一个综合性的主题,涵盖了数字信号处理(DSP)基础知识、单片机编程技术、音乐理论以及软件工具的使用。对于想要用单片机实现音乐播放的爱好者和工程师来说,...

    Qbasic音乐编程

    这个"Qbasic音乐编程"的主题聚焦于如何利用QBasic来创作和播放音乐。QBasic虽然古老,但对于初学者来说,它是一个很好的入门平台,因为它具有简单易懂的语法和丰富的内置函数。 在QBasic中进行音乐编程主要涉及到...

    Scratch少儿编程项目音效音乐素材-【脚步声】音效-脚步声.zip

    少儿编程教育中,使用像“脚步声”这样的音效素材,不仅能让孩子们体验到编程带来的乐趣,还能帮助他们理解编程逻辑和事件驱动的概念。同时,通过实际操作,孩子们可以学习如何将音频资源与代码相结合,提升他们的...

    Scratch少儿编程项目音效音乐素材-【游戏】音效-超级玛丽-玩的背景音乐有开始吃金币顶蘑菇变大等.zip

    在Scratch编程中,音效和音乐是提升游戏体验的重要元素。"超级玛丽"作为经典的游戏,其音效深受玩家喜爱。本压缩包中的音频文件包含了"超级玛丽"游戏中的一些标志性音效,如开始游戏的声音、吃到金币的声音、顶蘑菇...

    单片机编程模拟音乐

    单片机编程模拟音乐是一项将数字信号处理技术与嵌入式系统相结合的有趣应用。在本项目中,我们将使用C语言来编写程序,使单片机能够播放“世上只有妈妈好”这首歌曲。C语言是单片机编程的常用语言,因其高效、灵活和...

    Scratch少儿编程项目音效音乐素材-动物音效.zip

    Scratch少儿编程项目音效音乐素材-动物音效.zip

    青少年编程之python与音乐学科的结合教学课件

    青少年编程之python与音乐学科的结合教学课件青少年编程之python与音乐学科的结合教学课件青少年编程之python与音乐学科的结合教学课件青少年编程之python与音乐学科的结合教学课件青少年编程之python与音乐学科的...

    Scratch少儿编程项目音效音乐素材-传真.zip

    在这个"Scratch少儿编程项目音效音乐素材-传真.zip"压缩包中,我们找到了专门为Scratch项目准备的音效和音乐素材,这将极大地丰富孩子们的编程创作体验。 在Scratch项目中,音效和音乐是不可或缺的元素。它们可以...

    )5音乐小车图形化编程

    )5音乐小车图形化编程米思琪,适合中小学的科技课程,

    chuck, ChucK音乐编程语言.zip

    chuck, ChucK音乐编程语言 强定时,并发和On-the-fly音乐编程语言欢迎使用卡盘 !它是什么ChucK是一种用于实时声音合成和音乐创作的编程语言。 它是开放源码的,可以在 macOS X 。Windows 和Linux上免费提供。 ChucK...

    编程猫:孩子们写的编程入门书.pptx

    通过与它互动,孩子们可以学会编写简单的程序,如让编程猫在屏幕上显示一条消息、播放音乐或移动到一个特定的位置。这本书不仅是一本编程入门书,更是一本有趣的读物,它让孩子们在轻松愉快的氛围中学习编程。 这...

    音乐代码转换软件 单片机编程时用

    总的来说,音乐代码转换软件是单片机编程中的一个重要工具,它使得音乐播放成为可能,为电子制作带来了更多趣味性和创新性。无论是业余爱好者还是专业开发者,都能通过这类软件打开通往音乐世界的新大门。

    基于QT编程的音乐柱状跳动图

    为了更好地理解这个项目,你需要打开"barvolume"文件,查看具体的代码实现和注释,这将帮助你深入学习QT编程和音乐可视化技术。同时,也可以通过编译运行代码,观察实际的跳动效果,从而提升对QT图形界面编程的理解...

    编程猫测试题(初级版)训练模拟题

    知识点9: 编程猫中的音频和音乐 * 音频可以用于实现游戏和动画 * 音乐可以用于实现游戏和动画 * 音频和音乐可以用于实现项目的音频效果 知识点10: 编程猫中的角色和造型 * 角色可以有多个造型 * 角色可以通过脚本...

    Scratch少儿编程项目音效音乐素材-动物音效-虎.zip

    Scratch少儿编程项目音效音乐素材-动物音效-虎.zip

    Scratch少儿编程项目音效音乐素材-【乐器】音效-软音乐.zip

    这样不仅可以让孩子们体验到编程的乐趣,还能让他们在实践中学习音乐理论和编程知识,培养跨学科的能力。 总的来说,这个“Scratch少儿编程项目音效音乐素材-【乐器】音效-软音乐.zip”压缩包为少儿编程教育提供了...

Global site tag (gtag.js) - Google Analytics