程式設計是否是藝術

2022-02-15 13:10:24 字數 2504 閱讀 2515

有的人說程式設計是一種藝術,有的人說程式設計不足以作為藝術,但這兩方似乎從未公開正式的當面辯論過。我只有乙個人,無法公平的分成兩邊來辯論,所以今天不講前人已有的各種理論,只嘗試從道理上分析一下——程式設計是否是藝術。

為了分析程式設計是否是藝術,我們首先分析幾種被廣泛認可的藝術形式,尋找它們的共同特徵。

繪畫藝術是人類最早掌握的藝術形式之一,它從原始人對生活見聞的記錄發展而來。人通過對現實事物的觀察,在頭腦中形成對現實事物的印象,而這種印象往往與現實事物存在差別,人的意識會讓更加關注的部分在印象中更為突出,人也可能對觀察到的多種事物在頭腦中進行組合與演繹。然後,人將頭腦中的印象繪製在通常是二維平面的載體上,在這一過程中人需要將自己神經元空間中儲存的資訊投影到二維平面空間中,並且由於二維平面的限制需要對影象進行「片元選擇」,不同的人根據不同的習慣進行投影與選擇,也就形成了不同的繪畫風格。

當繪畫藝術的載體被人**時,**者首先會由畫面中的主次關係安排體會到作者頭腦中對各種事物的觀感。更進一步的,當**者通過筆觸、顏色等每乙個細微的繪製選擇來對載體進行觀察時,將能反推到作者在做出這些選擇時的所思所想,用藝術的說法就是「看到作者心靈的倒影,達到和作者靈魂的共鳴」。

繪畫藝術由載體和繪畫形式的不同,又派生出了雕塑、書法等藝術形式。

**藝術同樣是最古老的藝術形式之一,其**主要有三個方面,一是生物的精神和身體達到某種狀態時的自然表現,比如哭泣、咆哮、呻吟;二是來自種群間進行資訊傳遞使用的各種聲音頻號,如話語聲、敲擊物體發聲等;三是來自對自然界聲音的模仿,如風聲、雨聲、鳥鳴聲等等。人在經歷過某些發聲場景後,根據記憶使用某種方式對這些聲音及聲音所代表的場景進行重現就是**藝術的雛形。

當**被收聽者聽到時,收聽者的大腦中會出現和最初體驗者類似的神經元連線方式,體會到和最初體驗者類似的感受。這時收聽者也可能會提取中這段**中自己感興趣的旋律,再以這些旋律為材料構造新的**,這時的**逐漸斷開了與現實場景的最初體驗間的直接聯絡,但仍然保留著相對應的情感。

**可以包含器樂和聲樂,而舞蹈藝術的形成方式也與**藝術相似。

文學藝術是人類的語言、文字發展到一定程度之後產生的藝術形式,其**在於人類使用文字對現實世界情況的記錄。作者根據自己的認知為世界表象下的情感與動機做出解釋,這裡的世界可能是現實中存在的事物,也可能是作者對現實中事物的某個方面的聚焦,也可能是作者根據現實和自己的知識虛構出的乙個世界,之後,作者又可以根據對世界執行規律的解釋,對世界的發展進行更進一步的推演。

讀者在閱讀文學作品時,可以根據自身的知識對作者傳遞來的世界和世界的規律進行「擇其善者而從之,其不善者而改之」的處理,最終文學藝術在讀者的大腦中以讀者和作者的知識的混合體的形式持久化。

以文學藝術為基礎,衍生出了戲劇、電影、動畫等「可視的文學」藝術形式,其中戲劇、電影藝術中演員的知識和情感也一同經由藝術傳遞給了**者,在**者頭腦中形成的是讀者、演員、作者的知識混合體。另一方面,讓文學作品的世界的細節或者發展方向根據讀者的選擇改變,又延伸出了「龍與地下城」式的遊戲藝術。

提取幾種被廣泛接受的藝術形式的共同點,我們可以得出乙個認識:藝術是關於「通過某種載體,在智慧型生命間傳遞經過了個性化加工的感受與知識,並使智慧型生命感到愉悅」的行為和方式的結合體。

讓我們轉回頭來看程式設計。

從功能上講,程式設計似乎和藝術一樣可以在智慧型生命間進行感受與知識的傳遞,我們詳細劃分一下和程式設計有關的知識傳遞:一是通過程式的執行效果傳遞,二是通過**文字傳遞。

其中程式的執行效果傳遞,比如顯示文字、聲音、影象、控制機器做出動作等,與傳統藝術中的文學、**、美術、舞蹈的界限非常模糊,無法完全視為由「程式設計藝術」本身產生,同時程式的執行效果的獨特性往往由設計師或者美工創造,而效果背後的程式則可能由多種不同的程式設計方式實現,由此可見「程式執行產生的藝術效果」不直接由程式設計決定。

而**的文字傳遞中,刨除注釋和**隱喻中屬於文學藝術的部分後,剩下的只屬於程式設計的部分與傳統藝術形式相比:

相比於繪畫、**這樣不需要額外知識就可以體會的原始藝術,程式設計者必須掌握足夠的相關知識才能理解程式設計創作;相比於同樣需要額外知識才能體會的文學藝術,程式設計所需要的額外知識比起文字和語言更為抽象,在大部分人的日常生活中接觸更少;相比於戲劇、電影等混合藝術,戲劇和電影的演員在參與表演時會努力讓自己的情感與作者設計的情感統一,而程式設計中使用的各種庫則為了支援盡量多的情況,追求所謂「天道無情」。

再來看「使智慧型生命感到愉悅」這一藝術的特徵,藝術的傳遞可以令接受到藝術的個體產生「自己比其他個體好」「自己被其他個體認可」「自己比之前變得更好」幾種認識,從而讓個體認為自身處在進化的優勢位置感到愉悅。而**的傳遞則更多的聚焦在傳遞的發起者「覺得自己很厲害」「想要讓別人感覺自己很厲害」上面,多數情況下並不能讓傳遞的接收者感到愉悅。

綜合上述比較,我們可以得出乙個初步的結論:程式設計和被廣泛接受的藝術之間的差別大於被廣泛接受的不同型別藝術之間的差別。

這樣,也許我們可以得出結論——「程式設計不是藝術」,但另一方面,我們也難以完全否認「程式設計是一種新興的、尚未被廣泛接受的、特殊的藝術形式」,但這樣的辯論就偏離到對「藝術」這個名詞的定義分歧上了,我們要盡量避免這種「白馬非馬」的智力空耗。

也許乙個更容易令人接受的結論是,正如擁有了棲身的洞穴人類才能進行繪畫記錄、擁有了大量個體組成的群落**才能傳遞、擁有了文字和紙張文學才能構造世界,藝術是人類進化的表現,程式設計則是人類進化的原因。

本文最早發布於

程式設計是一門藝術

stanley b.lippman 僅僅使用軟體的人們 通常意識不到編寫軟體有多麼困難。噢,設計部分和最初開發部分都很有趣。最困難的部分是使其正確執行 且執行速度足夠快 對於程式設計師而言,這就好比一餐開始時是美味的雙層牛奶巧克力咖啡乾酪餅,而結束時卻是菠菜奶油沙司。之所以說程式設計仍是一門藝術而不...

程式設計是一種藝術

感言 作為一名技術黨,我們要熱愛我們的技術,並願意把它當作一生事業去做。我一直有一句格言 程式設計是一種藝術 不管什麼專案,我都會在效能 風格 解題思路上下足功夫。每天我都會對今天所遇到問題進行歸納總結,並儲存到自己構建的知識庫中。如果有意思的問題,同樣也會發布到部落格上去,讓同行的戰友不再為此煩惱...

程式設計是一種「組合的藝術」

程式設計是一種 組合的藝術 wpf例項分析 金旭亮 有這麼一句名言 政治是一種妥協的藝術。這一規律同樣適用於軟體技術。就我個人的觀點,軟體開發在一定意義上是一種 組合的藝術 優秀的軟體工程師類似於優秀的廚師,能將一些常見的原料變成一盤色香味俱全的美味佳餚。為何說程式設計是一種 組合的藝術 且讓我慢慢...