程式設計是一門藝術

2021-04-13 00:39:03 字數 1968 閱讀 5543

stanley b. lippman

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

之所以說程式設計仍是一門藝術而不是一門科學或工程學科,是因為我們還不能將其分解成多個組成步驟,而後機械地進行。一旦我們在此方面獲得成功,在某種程度上就會出現一種新的可能性:在程式設計時採用以人為本的設計語言 (podl) 編寫程式,通過程式設計來證明程式的正確性以及分析和支援語義查詢。然而到那時,程式設計依然是一門藝術,也就是其中含有那麼多傳統智慧型。

但是,如同許多傳統智慧型一樣,此模擬經不起進一步推敲。事實上,編制程式(我幹這行已經有 20 多年了)根本一點都不像藝術 — 至少不像寫**(我幹這一行也已經有 20 多年了)那樣的藝術。讓我用兩個片段(乙個程式片段和乙個散文片段)來說明我的觀點吧。

第乙個片段是乙個用於分析 visual c++® 7.1 的詞法分析程式的一部分。該片段如下所示:

if ( index >= tokenid::lastkeyword() ) 

}

第二個片段是我在大約 27 年前所撰寫的乙個故事的開頭,那時我居住在亞利桑那州的圖森市,從事散文教學和創作:

we were her pride of 10, miss steward named us: the prodigal, phoenix,

benjamin, and perspicacious, pacific suzanne. hush, child. benjamin, be

still, miss steward commanded him gently. people are never just.

兩個片段都經過了精心設計 — 也就是說,我預先花費了大量時間來設計整個工作的體系結構,而且這些片段反映了我所付出的設計努力。該程式有乙個效能缺陷 — 我是按值而不是按指標在關聯的字串表中檢索字串條目的。如果將該**投入生產,則很明顯需要進行修訂。這與正確性無關,而只是與效能有關。對於較小的源**程式,速度上的差異不可測量,因此我選擇了更簡潔但更慢的物件語法,因為我不喜歡 c/c++ 的指標操作標誌。

儘管我的散文沒有吸引數百萬讀者,但那些確實閱讀散文的人都很欣賞其在嚴格的符號框架下編織情感的巧妙方法。那些不欣賞散文傳統的人認為它故弄玄虛,因為它毫無作用。藝術的目的是以特定的可塑性**(對於散文而言就是詞語)在公共事件中反映出個人感情以及個人私生活的真實性。當然,它不像程式那樣具有與生俱來的內在價值。

我喜歡程式的設計過程,喜歡弄清楚程式的不同部分是如何相互作用的。我喜歡定義抽象或抽象族。我將其視為自己的人物塑造。並且,我喜歡編制介面,因為它們就是我的人物彼此之間所做的事情。這其實就是我編寫程式的方式。

我不喜歡編寫表示式和語句。我希望我們能有一種符號式程式語言,這樣我就能夠更好地用其進行思考並將其記在我的腦海中了。坦白地講,我無法使算術表示式和括號巢狀保持清晰。儘管我能記住八個單獨的文字部分,對其進行對比和回顯,但我搞不清楚在我所設計的類及其介面之外的程式的意義。

在 john markoff 所著的 pc 行業大事記《what the dormouse said》(睡鼠述)中,他聲稱最初幻想家使人人都能夠支配計算機的目標已經實現。但是他錯了。該目標僅實現了一半。如果乙個人本身不會程式設計,怎麼能說該人已擁有了計算機的全部威力?我們還沒有實現他們的夢想,因為我們還未弄清楚如何將程式設計變成一門藝術,以使人人都能夠分享它。在我們實現此目標之前,程式設計仍舊既不屬於學科範疇,也不屬於藝術領域。目前,程式設計只不過是一種新式「煉金術」。沒有人能真正理解它,也沒有人能將規範變成真金。

stanley b. lippman從 1984 年開始在 bell 實驗室與 c++ 的發明者 bjarne stroustrup 一起研製 c++。之後,stan 在迪斯尼和夢工廠從事形象動畫方面的工作,並擔任了《fantasia 2000》(幻想曲 2000)的軟體技術總監。此後他一直擔任 jpl 的名譽顧問,並在 microsoft 的 visual c++ 團隊中兼任設計師。

專案管理是一門藝術

在網上看到一位在微軟做pm 程式管理 漂亮女人寫的一篇文章,寫得很精彩,這也是自己曾經在工作中的體會,把內容貼在下面 曾經聽過乙個比喻,如果把乙個專案比作乙個大蛋糕,開發人員會切走一大塊,測試人員會切走一大塊,使用者體驗專家會切走一大塊,使用者教育人員也會切走一大塊,而剩下的所有東西 無論是剩下的大...

This is it 語言是一門藝術

最近一直在搞合作,每天能算娛樂活動的也就是早上聽聽英語了,哎,這日子,像我這種划水型選手,怎麼跟的上節奏啊。每天從醒過來就燃燒小宇宙到晚上回宿舍,at field全開,再加上我大狼院的畢業設計要中期檢查,要在下個星期完成基本設計。簡直要報警了。好吧,還說回英語,這乙個月還是聽得 jessie 直到前...

銷售即是一門藝術,更是一門科學?(二)

銷售的藝術之二 親近但保持適當的距離 注意 親近但是要保持與顧客適當的距離。我們很多傳統的銷售培訓和課程中 都是要與顧客拉近距離,這個距離越近越好 甚至把顧客做成朋友。其實,隨著社會發展,在目前商業社會中,這種觀念越來越證明是不太合理的。最佳的方式 保持親近,也要保持適當的距離。沒有顧客會拒絕善意的...