程式設計的藝術門檻

2021-07-15 06:02:19 字數 1998 閱讀 7742

那麼藝術到底是什麼?我一下懵了,發現從來沒有想過這個問題,只好求助於 google。wikipedia 上的定義是:「藝術是具有智慧型思考能力的動物(目前其實只有人類吧),藉由各種形式及工具藉以表達其情感與意識形態,所產生的形態泛稱之為藝術.

而上面那篇文章中老師的觀點是:

設計是實現別人的需要,藝術是自我表達的需要。

和 wikipedia 的說法相近,核心都在於表達。而目前公認的藝術分類,包括八大藝術種類:文學,

繪畫,**,

舞蹈,雕塑,

建築,戲劇,

電影。

它們的共性是這些都是人類自古以來的創造,其中最年輕的藝術門類當屬「電影」了,其作品承載了作者的情感和意識形態。而所有被公認的藝術門類,顯然它們最終作品呈現出的藝術表達形態更容易被普通人直接的感受到,直接作用於人們的視覺、聽覺和觸覺感官。

關於程式設計是一門藝術這個概念,到底什麼時候鑽入程式設計師的頭腦中的呢?也許來自我們在學習程式設計的路上,很多講述程式設計的書籍都冠以藝術之名,比如:《unix程式設計藝術》,這是一本講述 unix 專家們在創造 unix 過程中形成的理念和文化,那麼技術文化是藝術麼?還有另一本程式設計師中的聖經《計算機程式設計藝術》,我們都知道,卻幾乎沒讀過。這是一套講述演算法,並基於數學來推導和論證演算法的基礎書籍,那麼演算法是藝術麼?

所以相對而言,程式設計也如設計是實現別人的需要,像我在這寫作倒更多是自我表達的需要了。程式設計受限於程式語言的表達能力,是不可能達到像自然語言的表達能力的,因此程式設計的藝術性,它的受眾也只可能是程式設計師們。雖然面向大眾的藝術,很多大眾也表示看不懂,但至少能感受,而程式設計藝術則是只有程式設計師本身才可能感受得到了。

程式設計師的日常程式設計工作就是編寫**,完成功能,實現別人的需要。在這個過程中不小心就還會製造一些 bug,程式設計師也不知道這些 bug 是怎麼變出來的,就像你天天在家做飯,不知道怎麼廚房裡就多了那麼多小強。美食也不屬於公認的藝術門類,但時不時我們會聽到美食藝術的說法,這一點倒是和程式設計藝術很像。但若是你在創造美食的過程,時不時冒出些小強,**還有去感受藝術的心思。程式設計師大部分時候就是在不斷的解決源源不絕,生生不息的 bug,這個過程與藝術無關,只與技術有關,技術越練越好,bug 也就越來越少。bug 少到我們能騰出精力和心思,才能去感受程式設計的藝術性。

程式設計的藝術源於技術,沒有技術則藝術成了無源之水,無根之木。所以那些冠以「藝術」之名的程式書籍其實都是講的技術或者技術原則與文化。而關於程式設計最基礎的技術當然是寫好**,而如何寫好**這件事以前看過王垠寫過的一篇長文《程式設計的智慧型》,其中觀點我都認同,包括下面一些方面:

文章很長,但花點時間細細讀來,必有收穫,其中關於推敲**這點於我感觸最深。

看乙個作家的水平,不是看他發表了多少文字,而要看他的廢紙簍裡扔掉了多少。

我覺得同樣的理論適用於程式設計。好的程式設計師,他們刪掉的**,比留下來的還要多很多。

我曾經自己維護了乙個專案,包括一些樣板**,稱手的小工具等等。每一年我都會抽業餘時間對這個工程做一次重構,一些**隨著技術發展而過時了,一些則被重新實現變得更簡潔。每年的一次回顧,對過去自己的審視,對**的推敲都帶來新的成長,這個過程持續了大約七年。

在技術成長到了一定階段,有些程式設計師就會開始不滿足於僅僅實現別人的需要,也會在**裡嘗試自我表達。最基礎且最明顯的表達是為**簽名,打上自己的標籤,要是雷軍二十年前沒有為那段彙編**簽名,我們今天**知道這會是雷軍寫的,並在這裡評頭論足。但依然有很多程式設計師不會為自己的**簽名,連機器生成的**都會簽名說這是自動生成的,而乙份沒有簽名的**是缺乏藝術最基本的要素「自我」的,永遠停留在藝術的門檻之外。

單獨說程式設計藝術是不完整的,程式設計是從技術走向藝術。程式設計藝術是開在枝頭的鮮花,而技術是支撐花朵的枝與根。

而在技術和藝術之間實際存在一道很高的門檻,藝術是一種自我表達,但自我表達卻未必是藝術。關於這一點我們說個大家耳熟能詳的人

程式設計的藝術門檻

藝術那麼藝術到底是什麼?我一下懵了,發現從來沒有想過這個問題,只好求助於 google。wikipedia 上的定義是 藝術是具有智慧型思考能力的動物 目前其實只有人類吧 藉由各種形式及工具藉以表達其情感與意識形態,所產生的形態泛稱之為藝術.設計是實現別人的需要,藝術是自我表達的需要。和 wikip...

程式設計的藝術

以前對程式設計最一致的誤解是思維活動是純技術性的,本質上來說完全準確,就像數學和物理一樣。但計算是準確的,程式設計卻不是。前者是機器操作的結果,後者仍是人類行為。處於頂層抽象概念上的程式設計需要很多創造力,而工具和技術我們可以在教室裡學習到 所有的理論表明只需要一小部分需求就能創造乙個偉大開發者。如...

程式設計的藝術

對於外行人甚至有些內行人來說,程式設計就是乙個純技術性的活。就像是數學正確的結果往往是唯一的一樣,計算機也是如此,會毫無偏差的執行派給其的指令,如果出現意外的結果,那不是計算機的錯,但是程式編寫人自己產生的bug 程式的執行是準確的計算,但是程式設計本身卻是一門藝術。其實程式設計也是一種才藝,解決同...