tft每日頭條

 > 生活

 > 程序員進階架構師思維圖譜

程序員進階架構師思維圖譜

生活 更新时间:2024-09-17 13:12:24

程序員進階架構師思維圖譜(程序員架構修煉之道)1

引子

我們不是技術決定論或技術萬能論者。我們不能忘記,産品畢竟是給人建造的,無論是強調範式、結構與信息,還是注重交互、界面與智能,我們都會顧及用戶的個人想法——也就是時刻關注“用戶體驗”。

從傳統的建築到新興的架構

architecture 這個詞應該與什麼動作搭配呢?這要看你問的是誰,因為不同的人會用這個詞來表達不同的意思,有時指的是建築,有時指的是架構。

職業建築師會告訴你,他在設計 architecture。他的工作是對建築物進行設計,盡管有的時候也會參與構建,但其工作重點依然在于設計。反之,對于編寫軟件的程序員以及設計信息架構的設計師來說,他們用的說法則是做 architecture,也就是設計一套系統,讓各個部件形成一個整體。為此,他們既需要自上而下地考慮這套系統的運作方式,又要自下而上地打好基礎。從這些數字設計師與程序員的角度來看,建築師的工作與他們的工作很相似,因為兩者都特别複雜,都要考慮各種瑣碎的問題。

設計師與程序員之所以使用architecture一詞來描述他們要做的東西,是因為這種東西與建築師要設計的那種architecture有相通之處,它們都很煩瑣,都需要與之相關的專業知識。總之,他們用的說法是自己正在做architecture。

建築是一項很嚴肅的工作,從事這項工作的建築師必須認真對待該工作,這樣才能對得起這一頭銜。架構師也使用architect 這個詞來描述自己的職位,這透露出他們所要處理的問題及數字結構與建築師所要面對的建築工作一樣,也很複雜。

建築物可以用結構來容納各種複雜的實體,并為其提供支持。因此,工程師、計算機科學家以及數字産品的設計者,自然會想到借用建築方面的概念來描述自身工作中的一些複雜狀況,因為這些概念和說法可以把大的問題拆解成多個層面,并将各層面中的要素關聯起來。如果某人不是建築師,但卻用architecture來指代他要做的産品,那說明他是想把自己的産品比作建築,或是将自己設計該産品的過程比作建築師設計建築物的過程。他們要做的那種架構與建築師要設計的建築物一樣,都要考慮人與空間的交互。因此,建築與架構領域中的一些概念其實相當接近,并不像某些人想的那樣遙遠。

Architecture 這個詞

architecture(建築)一詞的傳統定義根據Oxford English Dictionary《牛津英語字典》[7]所說,是指building or constructing edifices of any kind for human use(建造或構造任何一種供人居住的建築物)的活動,它既能指代“建造的動作或過程”,又能夠指代這種動作或過程所産生的抽象及形象結構,此外,還可以表示建築物在風格、結構以及裝飾上面的組織方式。

談論 architecture 時,不僅要關注它的建造,而且還應該強調它最初是怎麼構想出來的,其理念後來又經過了哪些變化。

這至少應該與建造本身同樣重要,因為建築師畢竟不能剛一上來就直接動手蓋樓,而是必須先做很長一段時間的理論與建模工作,然後才能真正開始建造。還有一個建築學術語叫作 model(模型、建模),起初,它是指對構建工作所做的規劃(法語的 modèle 或意大利語的modello在17世紀進入了英語,并形成了model一詞),該詞源自拉丁語的modulus,它在建築學上面的意思是“測量、衡量”。

這樣看來,model 可以理解為對想法進行權衡,将其從腦中的某個意象轉換成一張圖紙,進而轉換成三維形式。這些與architecture有關的說法并不是最近才提出的。有遠見的建築師Étienne-Louis Boullée(艾蒂安-路易·布雷,1728—1799)早在18世紀末就說過:“必須對建築進行構思,這樣才能将其建造出來……對我們來說,這種為了産生并創造建築物而進行的構思才是最有意義的。任何一幢建築物,其建築藝術都體現在我們是怎樣把它給構想出來并加以完善的。”

對于Boullée來說,建築的要義并不在于建築物的建造過程(建造本身也是一種建築藝術,但與設計相比,隻能算次要的藝術)。

建築師真正應該做的是把建築給設計好,把細節給構思好,并把各種規格給制定好。

建築師與學者 Robin Evans(1944—1993)在 “Translations from Drawing to Building”的論文中說,建築與翻譯之間在某些地方是可以比拟的,因為建築圖紙同建築目标之間的關系有點像原文同譯文之間的關系。“翻譯是一種表達方式,是在不改變意思的前提下移動某種東西”。

對建築進行設計是一種構思與處理的過程,需要在圖像與語言之間移動,而且要做出诠釋與翻譯。

工程師、程序員與各種設計師在描述複雜系統的設計與再現時,同樣會将其稱為architecture。這種architecture是指用結構化的方法來設計複雜的系統,這涉及如何将程序組織成各種模塊,以及怎樣給計算機系統的用戶研發更好的界面。

計算機的architecture是指:

“計算機或基于計算機的系統在使用或設計上面的概念結構與總體邏輯布局”。

工程師設計軟件的方式與建築師設計建築物的方式其實是比較像的。Oxford English Dictionary對計算機的architecture所下的定義來自Frederick P.Brooks(1931年生)提出的 Architectural Philosophy(架構理念),收錄于1962年出版的Planning a Computer System一書中,該書讨論的是世界上第一台超級計算機IBM 7030(也叫作Stretch)。

Brooks說,“計算機的architecture與其他的architecture一樣”,“都是這樣一種藝術:要求我們在資金與技術的限制之下,判斷出某套結構的用戶有着什麼樣的需求,并據此進行設計,以便盡量滿足這些需求”[14]。Brooks的看法源自John von Neumann(約翰·馮·諾伊曼,1903—1957)在1946年寫的論文,那篇文章把設計EDVAC(它屬于第一代電子計算機)的過程視為對計算機的“邏輯元件進行安排”,并據此制定相應的指令集。

系統架構師需要對這些邏輯元件進行翻譯與變換。這樣的“概念結構”不僅涉及電路圖與電線,而且還強調了诠釋與翻譯。Stretch計算機在細節與電路上面比同時代的其他計算機都複雜,但如此複雜的電路并沒有幫助它取得成功,反而讓它的速度始終達不到IBM所宣稱的效果(IBM預計它要快100到200倍,但實際上隻快了30倍)。這樣的情況持續了5年時間,導緻該計算機的銷售以失敗告終(本來可以賣1300萬,後來跌價到800萬,而且隻有政府機構來買)。

盡管Stretch失敗了,但它的架構卻保留了下來,其後大獲成功的IBM 7090及IBM S/360計算機還有其他品牌的一些計算機都是以該架構為基礎而設計的[15]。這套架構後來終于得以發揚光大,因為它所依循的邏輯與平台可以遷移到新一代的系統上面,進而又遷移到該系統的下一代系統上面,并這樣一代一代地傳承下去。

架構設計理念:Architectural PhilosophyChristopher Alexander ( 1936~ )

程序員進階架構師思維圖譜(程序員架構修煉之道)2

Christopher Alexander(克裡斯托弗·亞曆山大,1936年生)開發過一套旨在強調秩序的操作系統,一開始,他是依靠計算機及相關的計算技術進行開發的。

後來,他與同事把這套系統的理念提煉為模式語言。Alexander的這套方法把認知心理學、啟發法、控制論以及早期的人工智能理論全都融了進來。

Alexander對編寫程序及開發數字産品的人産生了很大的影響,許多程序員談到模式的時候,用的都是Alexander當年提出的一些說法,數字産品的設計師在讨論架構時也是如此。

不過,有一些建築師對他的這些成就卻有所批評,他們認為Alexander的方法說教氣息太濃,而且太過刻闆。

在20世紀60年代初,他所采用的做法是,通過集合與圖論把建築問題表達成固定的格式,後來,又通過IBM大型計算機來運行程序,以分析這些需求。他利用各種拓撲結構形象地展示建築問題,從而讓自己能夠利用手頭掌握的計算範式來相應地處理這些問題。在這個過程中,他會調整自己描述問題時所用的措辭,讓這些問題更容易得到展示。

後來,他發現自己要研究的結構越來越複雜,于是不再依賴計算機,而改用模式語言。這種語言的生成能力較強,而且能夠靈活地表達出他想要強調的那種秩序,因此,Alexander對此很感興趣。對程序開發者影響最大的要數他的名作Notes on the Synthesis of Form and A Pattern Language,面向對象的編程語言、軟件中的模式、維基百科(Wikipedia)等網站所依賴的維基格式、極限編程等開發方法,其理念都與這本書有所關聯。

Alexander提出的模式對以人為中心的設計者尤其重要,那麼,建築師與這些系統設計師之間到底還有沒有區别了?如果有,那究竟體現在什麼地方?傳統的建築師能否從Alexander對其他領域的影響上面獲得一些啟發?物聯網與智慧城市等說法這幾年變得相當流行,然而早在1996年,Alexander就對程序開發者說過:“如果這世界上還有某個方面沒有讓相應的程序影響到,也就是說,還沒有人寫出這種程序來管理這方面的實體與操作,那你恐怕就很難确定這個方面該叫什麼名字才好。” 他還問道,程序開發者對于“影響、塑造并改變環境” 究竟願意擔負多大的責任。在這個數字化程度越來越高的時代,各種各樣的架構師、設計師與程序開發者是不是都應該按照同樣的理念來做事?

Richard Saul Wurman(1935~)

對于Richard Saul Wurman來說,信息建築或信息架構是(information architecture)對頁面、地圖與書籍中的信息進行組織時所使用的方式,這種設計語言還可以推廣到城市層面,進而運用于整個世界。由此來看,Wurman所說的信息架構可以通過圖形清晰地描述結構并進行交流,或以書與地圖集的形式展示信息,這些圖形如果能夠适當地予以運用,那麼可以系統化地套用到城市層面,而地圖集這一形式也從20世紀70年代中期開始逐漸流行起來。

Wurman剛開始和Louis Kahn(路易·卡恩,1901—1974)一起做建築,後來在費城獨立工作,最後改變了職業方向。近些年來,他最知名的舉動可能要數創辦TED大會了,Wurman一直都在通過各種活動與會議推行自己的理念。他在1972年主持了題為“The Invisible City”的亞斯本國際設計大會,1976年,又在費城主持了題為“Architectures of Information”的AIA(American Institute of Architects,美國建築師學會)會議。這個會議的小冊子上寫道:

“如果我們都能夠很自然地在城市中找到适合自己的生活方式,那麼這座城市是不是就顯得更有意義,也更有趣一些了呢?要想讓城市更适合居住,建築師不僅要建造漂亮的房子,更要注重信息,也就是要通過适當的信息體現出各個地點的用途及結構,幫助大家表達自己的需求,并對變化做出回應。這正是Architecture of Information的意義所在。”

Wurman影響了整整一代的軟件設計者與網頁設計師,讓很多人都接受了“信息架構”這一理念,并将其運用在網站、軟件以及移動應用程序的設計上面。

軟件設計領域已經越來越多樣化了,與此同時,信息架構這個概念也随着互聯網的發展而有所變化,它現在主要指對用戶上網時的體驗做出規劃。

Cedric Price(1934—2003)

Cedric Price 是按照其信息的流動情況來設計建築物的。他把控制論中的反饋回路引入建築項目中,使得建築師、用戶、地點與技術之間的關系變得與從前不同,這些建築物以及有成長能力的建築項目可以用一種意想不到的方式來了解用戶的使用情況,并據此做出調整與回應。比方說,他運用控制論與前衛的劇場導演Joan Littlewood(1914—2002)及控制論方面的專家Gordon Pask(1928—1996)一起合作,設計了Fun Palace(該項目于1963至1967年之間進行,最終沒有興建),又在Oxford Corner House項目中設想着用計算機技術來裝備餐廳所在的大樓(該項目于1965至1966年之間進行,最終沒有實現)。

1976至1979年間,Price設計了名為Generator的網絡化智能休閑中心,并在其中安排了一套響應式的部件(這個項目最終沒有實現)。Price幽默地颠覆了傳統的建築與系統設計理論,他用控制論與信息處理技術來挑戰自己,并刺激那些有可能使用該建築的人,讓大家覺得這棟建築并不一定隻能用來做這件事。Price構想的建築物會高度利用計算機來運作,從而形成一套多媒體的環境,并構成分布式的智能平台,這促使我們想象,在計算機化程度極高的社會,大家應該如何學習、如何娛樂、如何生活。

盡管他的大部分作品都沒有構建成實際的建築,但Price依然很好地啟發了後來的建築師、學生以及英國大衆,讓大家思考建築物這一概念在計算機時代會怎樣變化。與其他建築師、設計師與技術專家相比,Price對編程語言及數碼産品的設計并沒有太過直接的影響,然而他的理念與前者同樣重要。

Nicholas Negroponte

Nicholas Negroponte(尼古拉斯·尼葛洛龐帝,1943年生)與同事Leon Groisser創建了MIT Architecture Machine Group(簡稱AMG),這個實驗室由一群喜歡研究東西的建築師與電子工程師組成。它是1967年成立的,後來成為MIT Media Lab(麻省理工媒體實驗室)的基礎,并于1985年并入後者。

Negroponte把他們在這個實驗室中所做的建築研究工作視為MIT在技術與科學方面的一項事業,并與Artificial Intelligence Lab(人工智能實驗室,這個實驗室成立于1959年,當時稱為AI Project)合作,同時也接受美國國防部及公司的資助。起初,AMG的研究方向是給CAD(Computer-AidedDesign,計算機輔助設計)系統及屏幕上顯示的界面做設計,後來,這些項目的範圍越變越大,而且所追求的效果也越來越逼真。

AMG的研究者設計出了整個屋子那麼大的多屏幕環境,讓處在該環境中的用戶有種身臨其境的感覺。後來,Negroponte用“media”這個詞給實驗室起了個新名字,将其稱為MIT Media Lab,這是個特意選出來的詞,用來涵蓋消費性電子産品、圖形、出版、學習、音樂、手勢、屏幕及語音命令等各種系統。

AMG所做的這些研究對今天某些新興的領域依然有着貢獻,比方說人工智能(Artificial Intelligence,AI)、機器學習、智能環境、虛拟現實(Virtual Reality,VR)、遙感以及無人機偵察,等等。目前,很多人在展望數字時代的發展前景時,首先想到的都是MIT Media Lab。

30多年後的今天,我們更加需要認真思考這個實驗室是怎樣演化到現在這個樣子的,它所提出的設想會在哪些方面引領未來30年的發展趨勢,該實驗室的研究者又提出了哪些值得大家探尋的問題。

計算機的創新能力

Marvin Minsky估計:就算以“最保守的”态度來看,計算機都将在“很大範圍内對我們有所幫助”。他還舉了一些較為“直觀”的例子,比方說,Minsky認為,計算機圖形系統可以繪制、渲染或生成平面圖。到了1974年,他又預計,建築事務所以後可以用計算機圖形技術來工作,這句話基本上沒說錯。然而,Minsky并未就此止步,他還繼續展望了20世紀90年代中期的發展情況。

用不了30年,計算機就會變得與人一樣聰明,甚至比人還聰明。這些機器不僅能夠進行規劃,而且可以完全以機械的方式來進行拼裝。現在,某些計算機已經安裝了掃描設備,因此可以觀察到建築圖紙,以後,這些計算機還将有手臂及眼睛,并且會安裝适當的程序,從而相當迅速地完成拼裝與建造工作。到了那時,承包商必須面對建築行業的自動化趨勢,與此同時,設計師也必須适應設計領域的自動化潮流。我認為,計算機的創新能力最後會強大到令人恐懼的地步。

Minsky的這些話既提到了20世紀60年代的建築師與AI研究者所憂慮的問題,又點出了令他們感興趣的一些地方,其中很多預言後來都成了現實。後來的建築師還是在擔心計算機會取代自己,這種情緒直到今天都一直存在。其實其他行業(例如醫生、從政者以及制定決策的人)也同樣擔心該問題,隻不過,這個問題對于建築師來說有着特别的意義。Greenfield寫道:“特别的地方在于,建築學中的問題涉及許多變數,要想解決這些問題,我們必須用三維的形式來加以表達,而且最後必須求助于解析,建築問題在形式上的這種特殊之處最為重要。”

不過,還有一個問題是:

計算機到底會不會自發地産生出創新能力?人機共生

J.C.R.Licklider(1915—1990)于1960年發表了“Man-Computer Symbiosis”(人機共生)學說,在涉及智能與交互的概念中,這是一項經久不衰的理念。他這樣寫道:“人機共生是人類與電子計算機在交互協作的過程中自然發展出來的,它涉及人類與其電子搭檔之間的這種非常緊密的耦合關系。”

人機共生的目标是讓雙方能夠以相互協作的方式來解決問題,而不是先由人把程序調配好,然後再交給計算機去執行。Licklider強調,這種協作讓人與計算機之間能夠以新的方式“合作,以制定決策并控制各種複雜的狀況,而不是必須依賴預先編好的某一段固定程序”。

控制論

控制論用來描述各種系統及有機體之内的反饋與控制情況,例如生物系統、計算系統、人類學系統或政治系統等。cybernetics這個詞是Norbert Wiener(諾伯特·維納,1894—1964)在1948年創造的,它源自希臘語的kybernetes,意思是舵手。這項理論圍繞着反饋這一概念而發展,它關注的重點在于某一組消息是通過什麼樣的交換方式來控制系統的,而不在于其中每條消息的具體内容。系統在執行某個動作時,會收到與該動作的效果有關的信息,并據此做出相應的調整,這與舵手掌舵的情況有些相似。

控制論後來之所以吸引了許多人,其真正原因在于它可以運用到各種各樣的有機體與實體上面,動物、人、政府、劇場與其中的表演、藝術品、建築物等全都适用。它可以為Geof Bowker所說的那種全方位策略提供支持。Bowker寫道:“總之,控制論專家呼喚新的時代,這既能夠融合各種領域(考慮到當前的技術與戰争狀态),又能夠激發各種思想(考慮到它所能激發的各種人文理念)。它是一種強大的工具,能夠在這兩個意義上面來回轉換。”

人工智能

人工智能這個說法是John McCarthy(約翰·麥卡錫,1927—2011)在1956年提出的。然而,這種能夠自主解決問題的計算機其實早就有人想到了。

人工智能以及與之有關的自動機等機械其曆史可以追溯至公元一世紀,隻不過要到20世紀50年代,它才發展成一項專門的領域,旨在以人腦的思考方式為模型,設法讓機器具備與之類似的邏輯。

對于控制論與系統理論方面的許多學者來說,人工智能不僅對計算機科學有意義,而且其研究範圍還可以擴展到生物學、神經學、數學、統計學、語言學、管理科學及心理學等諸多領域。

盡管AI研究是從控制論中誕生的,但它所關注的核心問題卻與控制論不同。這些問題主要考慮的是系統如何學習,或怎樣自我複制。早期的AI研究者樂觀地提出了許多種有可能實現的概念,然而這些概念真正想要實現卻需幾十年時間。正如Marvin Minsky在1961年所寫的那樣:“我認為……我們正在開啟這樣一個新的時代,在這個時代中,智能的解題機器将會強烈影響我們,甚至有可能統治我們。

在Minsky的人工智能理念中,啟發法早就占據了核心地位,不過,他于20世紀60年代給“智能”一詞下定義時,卻說得相當謹慎。

什麼是智能?什麼樣的行為才是智能的行為?

這些問題始終不好回答,到現在也沒人說清。你當然可以用啟發法或分類法拟定一套規則,讓計算機按照這套規則來行動,但這樣做是不是缺了什麼呢?Minsky寫道:“我明白,如果把各種複雜的啟發式方法組合起來,那麼我們遲早能夠拼裝出解題能力超強的程序。”然而,單純地堆技術并不會發生本質變化,于是,Minsky就問:“如果用盡了各種手段都無法産生智能,那麼我們是否應該考慮一下,自己到底有沒有正确地理解‘智能’這個詞?”

參考閱讀

我們能夠根據親自解決或觀察他人解決問題時所獲得的經驗提出合理的猜測。在人工智能與認知心理學領域,研究者會運用這種方法來探尋人類是怎樣把問題的解法給找到的。研究者可以将這套探尋手法創建成軟件模型,從而運用啟發法對其他問題的求解過程進行研究。建築師也可以運用這些手法構思出具備進化及學習能力的建築系統。Christopher Alexander的Notes on the Synthesis of Form一書的核心程序就使用了啟發法。

建築師會把建築學當作一門解決問題的學科來進行探索,并且會在探索的過程中運用啟發式的方法(或者叫作試探法)。啟發法的意思是“有助于發現”問題答案的方法,它是通過How to Solve It(《怎樣解題》)這本書流傳開的,該書出版于1945年,作者是George Pólya(波利亞·哲爾吉,1887—1985)。這本書不僅對數學很有影響,而且還波及了控制論、認知心理學、人工智能以及計算機科學等領域”摘錄來自: 【美】莫莉·賴特·斯廷森(Molly Wright Steenson). “架構啟示錄。”

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved