免费高清特黄a大片,九一h片在线免费看,a免费国产一级特黄aa大,国产精品国产主播在线观看,成人精品一区久久久久,一级特黄aa大片,俄罗斯无遮挡一级毛片

分享

隨談:軟件架構師與數(shù)學的關系

 過河卒沖 2016-03-07

記得上小學五年級時,我的數(shù)學老師問班上每個同學,為什么學習數(shù)學?記不清我的答案是什么了,大概是記賬和測量之類的很膚淺的說法吧。其實,隱隱約約地藏在內(nèi)心深處的還有一個模糊的想法,數(shù)學比較好玩,有意思??赡芫褪撬^的好奇心對未知的渴望吧。因為在我的那個剛剛可以吃飽飯的童年,好玩的有意思的東西實在不多,所以,只能把數(shù)學拿來湊數(shù)了,小學的數(shù)學其實應該叫做算術。

數(shù)學和軟件架構師到底有沒有關系呢?從功利的觀點來看,數(shù)學知識可以直接應用于許多領域,作為和數(shù)學有緊密關系的計算機軟件更不例外。比如,概率論與數(shù)理統(tǒng)計是語言模型的基礎,而語言模型是自然語言理解相關應用的必要模塊,如搜索引擎、機器翻譯和語音識別等。

毫無疑問,不懂概率論與數(shù)理統(tǒng)計,就談不到去理解、設計、開發(fā)這樣的軟件程序。當然,不是所有人從事的軟件領域都直接和數(shù)學相關,所以,也有論者認為,我做了很多年的軟件架構師,參與了很多項目,除了一般的加減乘除,從來沒有應用過稍稍高深一點兒的數(shù)學知識。結論就是,不懂數(shù)學,并不影響軟件架構師的職業(yè)發(fā)展。

這種幼稚的看法和我回答我的小學老師的問題的說辭聽起來一樣微不足道。數(shù)學對于軟件架構師的意義絕不僅限于數(shù)學知識的直接應用。有道是,功夫在詩外。陸游認為,學習寫詩,不能“但欲工藻繪”,只在辭藻、技巧、形式上下功夫。

詩的高下更著重于詩人的人生閱歷、精神境界和學問修養(yǎng),這些形而上的東西就是所謂的詩外的“功夫”。王國維在《人間詞話》中講到:“詞以境界為上。有境界則自成高格,自有名句。”也是同樣的道理。如果架構可以比做一篇詩詞,那么它的韻腳往往會落在數(shù)學的概念上。數(shù)學也就是軟件架構師的詩外功夫。

那么,數(shù)學和軟件架構師會有怎樣的關系呢?我們有必要先來探討一下軟件架構師究竟是怎樣一種角色,問題似乎太簡單了,顧名思義,軟件架構師不就是設計和架構軟件系統(tǒng)或應用的嗎?豈有他哉?在這里,我們不妨反問一下,果真如此嗎?

事實上,只要我們稍稍地質(zhì)疑一下,世上很多事情都經(jīng)不起仔細地推敲。一個軟件組織真的有那么多的架構的工作要做,以至于必須要有專門的軟件架構師的角色來承擔不可嗎?我觀察到的情況大多并非如此,譬如以軟件產(chǎn)品為主導的公司,根據(jù)用戶或市場的需求,不斷地開發(fā)新的功能,發(fā)布新的版本。

在此過程中,產(chǎn)品架構早已注定,還架構什么呢?即使有些重構的工作,但大多時候,恐怕都不會做劇烈的變動。以項目為主導的公司又怎樣呢?每個項目都不相同,是不是都要一一架構呢?項目雖然不同,但開發(fā)這些項目的環(huán)境如數(shù)據(jù)庫、編程工具、集成框架并無分別,因此架構這些項目的系統(tǒng)時,基本上是舉一反三,并沒有多少出奇之處

互聯(lián)網(wǎng)公司的那些五花八門的應用(如O2O)更是如此,無論是前端還是后端,都有越來越成熟的技術框架,這些框架本身就決定了應用的結構,沒有太多需要架構的東西和技巧。簡單地講,架構其實就是一個分解和連接的技藝。

一個大的應用系統(tǒng)被分解成不同層次的功能子模塊,然后定義子模塊之間數(shù)據(jù)交換的接口,把這些子模塊按照一定的邏輯連接起來,當然還要照顧到功能的一致性和可擴展性。不僅僅是架構師,任何程序員在寫程序時,這些不都是要考慮的問題嗎?

由此可見,實際的軟件實踐中,真正需要架構的東西并不多。而且,任何程序員都會或多或少地涉及到架構的問題,所以軟件架構師的角色并沒有那么的神圣,甚至于都沒有清晰的界定。那么,軟件架構師的作用和價值又在哪里呢?

我認為,軟件架構師更應該是一個解決問題的專家,其作用和價值也正在于此。在軟件產(chǎn)品或項目開發(fā)的過程中,隨時會遇到性能方面的或功能方面的不確定的問題。比如,如何用時間換空間和空間換時間的藝術實現(xiàn)性能瓶頸的突破。面對問題,軟件架構師要有辦法,知道從哪里著手,設定目標和方向;也要有能力,組織人馬,攻艱克難。 

一個軟件架構師在其職業(yè)生涯中,就某個領域積累了大量的知識和經(jīng)驗,形成了自己獨到的解決問題的方法論。而軟件架構師的數(shù)學修養(yǎng)決定了TA理解問題和解決問題的水平和高度。

數(shù)學的主要方法是思想(Idea)和技巧(Technique)交織在一起的邏輯推理的藝術。給定一個問題,首先,數(shù)學思想擘畫出大致的方向,然后,數(shù)學技巧完成具體的步驟,最終,達至預期的目標。

比如,我們欲窮千里目,那么,臨高眺望是為思想,而上樓或登山構成技巧。來看一個經(jīng)典的數(shù)學的例子,G?del不完全性定理(Incompleteness Theorem)的證明包涵了匪夷所思的數(shù)學思想和數(shù)學技巧。在G?del之前,對 Hilbert計劃(Hilbert's program)中所謂公理化的算術(Arithmatics)系統(tǒng)的一致性和完全性的討論都局限在元數(shù)學(meta-mathematics)中,沒有人對元數(shù)學命題的證明是什么有清晰的認識,更遑論如何證明了。

而G?del把關于算術系統(tǒng)的一致性和完全性的元數(shù)學的命題映射到算術系統(tǒng)自身即元數(shù)學的算術化的思想使得這一問題豁然開朗;為完成這一映射,G?del證明的技巧性體現(xiàn)在用到的46個預備性的定義和重要的引理,如著名的G?del數(shù)和對應引理。這些創(chuàng)造性的思想和技巧仿佛天授,非人力所及。

再看一個數(shù)學的例子,在證明實數(shù)集合不可數(shù)時,德國數(shù)學家Cantor建立了判斷兩個集合大小是否相等的思想,即如果能夠找到一個映射,使得兩個集合的所有元素一一對應,則兩個集合相等。而在證明的過程中,Cantor發(fā)明了著名的對角線法,真是巧妙之極。盡管Cantor的工作在數(shù)學界引起了巨大的爭論,但這一證明結果使我們認識到,無窮不僅是有意義的,并且無窮和無窮是不一樣的,即有多種不同的無窮,不能等閑視之。

需要指出的是,思想和技巧只有大致的區(qū)分,沒有嚴格的界定,當然,也完全沒有必要給思想和技巧做精確的定義。但是,可以確定的是,許多科學技術領域的方法論都不會超出思想和技巧的范疇,而不同領域思想和技巧的比重可能會有所不同。作為解決問題的一個模式,我們斷不可輕視思想和技巧的重要作用。比如說,雖然在很多程序庫中都實現(xiàn)了各種排序算法,但是我們還是學習排序算法的細節(jié),那是因為排序算法中包含了很多解決問題的思想和技巧,如合并排序和快速排序包含的分而治之的算法設計思想,以及快速排序用到的partition的技巧。思想和技巧作為硬幣的正反兩面,必須是以問題方案專家自許的軟件架構師念茲在茲的不二法門。

眾所周知,計算機科學是從數(shù)學尤其是從作為數(shù)學基礎的數(shù)理邏輯的發(fā)展中衍生出來的。計算機科學包含的思想和技巧往往與數(shù)學保持高度的契合。例如,數(shù)學歸納法是使用遞歸來完成一個數(shù)學證明,而遞歸又廣泛地用于計算理論和算法中。

遞歸不僅僅是程序和算法的一種機制,遞歸的思想也是思考和表示某些問題的一種簡潔的優(yōu)雅的方式,如樹和圖的遍歷。還有,算法時間復雜度和空間復雜度的分析思想來源于數(shù)學的極限的概念,表示的是算法時間和空間的花銷隨著輸入規(guī)模增長的快慢程度。 極限是數(shù)學分析微積分的基礎,今天廣泛使用的ε-δ形式的精確的極限的定義是數(shù)學家們經(jīng)過了兩百多年的痛苦掙扎才最終由德國數(shù)學家Karl Weierstrass給出的。

他山之石可以攻玉,軟件架構師完全可以借鑒這些和計算機科學相通的數(shù)學思想和數(shù)學技巧,提升和拓寬自身的視野,激發(fā)創(chuàng)造的靈感。對于計算機軟件而言,難題之所以是難題,常常是沒有理解問題中隱含的數(shù)學概念和數(shù)學關系,一旦這些最本質(zhì)的東西把握住了,就可以舉重若輕地實現(xiàn)巧妙的突破。而其他所謂代碼方面的困難的問題,如查找內(nèi)存泄漏,需要的只是耐心地、仔細地以機械的方法搜尋問題相關的瑣碎的細節(jié),盡量借助工具提供的線索,找到問題的根源。這是一個體力活,功夫到了,自然可以迎刃而解。

軟件架構師的一項重要工作是為真實的應用空間建立抽象的模型。有了模型之后,接下來要在計算機內(nèi)部表示模型,即用數(shù)據(jù)結構來表示模型的對象或?qū)嶓w,用算法來表示模型的過程。最后的代碼實現(xiàn)水到渠成。這個過程并非一帆風順,一層不變的,回環(huán)往復常常不可避免。有可能在寫程序的時候才發(fā)現(xiàn)模型有嚴重的缺陷,當然,這是極糟糕的事兒。構建模型的重要性正如Steven S.Skiena在其著作The Algorithm Design Manual所講的那樣:

“Perhaps the single most important design technique is modeling, the art of abstracting a messy real-world application into a clean problem suitable for algorithm attack.”

抽象的模型要求簡單、清晰和無歧義。這正是數(shù)學語言特有的優(yōu)點,所以數(shù)學語言是最適合建模的語言,很多時候,模型常常等同于數(shù)學模型。十七世紀的德國的哲學家和數(shù)學家Leibniz試圖架構一個史無前例的超級系統(tǒng),這一系統(tǒng)將囊括所有的人類知識和推理。

為此,Leibniz給出了三個階段的宏大計劃(grand program):第一,將人類的知識分門別類的整理出來,就像百科全書做的那樣;第二,用符號代替這些知識的關鍵概念;第三,將知識的推理規(guī)約到對這些符號的操作。Leibniz為他的系統(tǒng)建立的模型的核心思想就是用一個普適的數(shù)學符號系統(tǒng)來表示人類知識,發(fā)明一個神奇的計算工具來操作這些符號來代替推理演繹。這樣,當兩個人在爭論一個問題時,就不必徒逞口舌之利了。而只要按照Leibniz的系統(tǒng)定義的方法算算,孰對孰錯就清清楚楚了。

這可能是最早的人工智能系統(tǒng)的雛形吧。由此得到的啟發(fā)是:建模的方法是以數(shù)學抽象的方法找出系統(tǒng)或應用中的關鍵元素,用適當?shù)臄?shù)學符號表示他們,并定義他們之間的關系,當然,這種關系可以用數(shù)學公式表示。這里的關鍵是抽象,德國數(shù)學家Hermann Weyl更是毫不保留地說:“數(shù)學抽象中最關鍵的一步讓我們忘記這些符號所表示的對象,有許多操作可以應用于這些符號,而根本不必考慮他們到底代表著什么。”真是無招勝有招,與Leibniz英雄所見略同。數(shù)學離不開抽象,架構的建模過程同樣離不開抽象。道理常常是相通的,這種抽象方法在藝術領域也有廣泛的應用。

比如在拍攝風景題材的照片時,有經(jīng)驗的攝影師都知道:一幅好的作品真正打動人心的是光線、顏色和形狀(如優(yōu)雅的線條),因為這才是審美的最基本的要素。所以,通過調(diào)節(jié)曝光、光圈、焦距等參數(shù),通過精心構圖,表達出來的是攝影師心目中升華了的理想的的光線、顏色和形狀。至于拍攝對象是山川、江河、沙漠、草原、樹木、花草亦或是別的什么東西,還是忘了它們吧。咦,我們似乎也忘了,架構去哪兒了?

軟件架構師的另一項重要工作是確定系統(tǒng)的子模塊以及他們之間的關系。數(shù)學是特別講究關系的,實際上,一個數(shù)學對象是通過與其他數(shù)學對象的關系來定義的,這也是一個數(shù)學對象存在的原因和意義的總和。數(shù)學家本著內(nèi)心審美的直覺,常常會發(fā)現(xiàn)不同尋常的關系,Euler公式將三角函數(shù)、指數(shù)函數(shù)和復數(shù)這些貌似不相干的概念聯(lián)系起來。它之所以看起來那么美,那是因為揭示了紛繁蕪雜的大千世界背后的秩序、和諧與統(tǒng)一。

在數(shù)學中,這樣的例子并不鮮見,比如Gauss發(fā)現(xiàn)的素數(shù)分布定理、以及π的Leibniz公式都是對數(shù)學之美的很好的詮釋。再把目光投向計算機軟件,目前十分看好的大數(shù)據(jù)不就是應用算法對大規(guī)模數(shù)據(jù)進行分析來挖掘不同事物的相關關系嗎?有些事物之間的因果鏈太長,以至于很難靠人工的推理發(fā)現(xiàn)它們之間的相關性,但大數(shù)據(jù)技術可以做到。

是否可以利用大數(shù)據(jù)技術幫助數(shù)學家發(fā)現(xiàn)更多人類智能不容易捕捉到的微妙關系呢?不知道。不過在《大數(shù)據(jù)時代》這本暢銷書中,作者認為可以用大數(shù)據(jù)分析發(fā)現(xiàn)的相關關系代替因果關系。只問相關性,不管因果性,我想,這恐怕不過是作者為吸引讀者眼球吹勒個牛吧。不管怎樣,多了解一點數(shù)學,軟件架構師在尋找、定義系統(tǒng)模塊關系時,想必也是極好的。

最后,我們再次回到攝影的例子。一個技術高明的婚紗攝影師在職業(yè)生涯中為客戶拍過數(shù)不清漂亮的照片,但卻可能沒有一件偉大的作品讓人看上一眼就能夠聯(lián)想到愛情,因為他也許根本就不懂愛情。同樣的道理,不經(jīng)過數(shù)學浸潤的架構師無論做過多少項目,也很難超越那個婚紗攝影師所能達到的平凡的水準。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多