程式設計和音樂真的很像嗎?

盛夏光年lll發表於2016-04-22

本文由碼農網 – 小峰原創翻譯,轉載請看清文末的轉載要求,歡迎參與我們的付費投稿計劃

在過去的幾十年時間裡,對音樂作品和程式設計同時感興趣的電腦科學家成功地將兩者結合在一起。現在的人工智慧譜寫的音樂,幾乎與由專業音樂人建立的沒有區別。

很多專業的開發人員對音樂有著真正的激情,以及許多音樂家涉足過程式設計,這些已經不是什麼祕密。例如,Elvis Costello,一位多產的英國音樂家,被譽為“他那一代最優秀的詞曲作家”,在他的音樂生涯騰飛之前,在上世紀70年代操作IBM 360。

你可以發現為什麼人們會沉溺於這兩個領域:因為創作旋律和編寫演算法之間有很多共同之處。從表面上看這兩者似乎頗不相同,但是開發有創造性的一面,而譜曲亦有機械化的一面。那麼,程式設計和譜曲有什麼相似之處呢?

你的心中已經有音樂的脈動

讓我們先來看一看譜曲和程式設計之間的相似之處。

1.它們都遵循關於以下邏輯規則

譜曲,和程式設計一樣,需要古希臘人所謂的三藝。即:

  1. 語法:紮實理解基本原理——樂譜和程式語言規則的理論或知識。
  2. 邏輯:你需要能夠建立“邏輯推理”。當音樂創作或編碼時,你需要遵循邏輯規則使得“活動件”一起正常工作。
  3. 修辭:和語法和邏輯一樣,你需要說服聽眾和新方法的使用者接受標準做法。

如果不遵循作曲和開發的基本原理,一切都無法正常運轉。一個胡亂編寫的程式將充滿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?
翻譯作者:碼農網 – 小峰
轉載必須在正文中標註並保留原文連結、譯文連結和譯者等資訊。]

相關文章