Feeds:
Posts
Comments

Archive for the ‘System Design’ Category

Google稱霸搜尋器業務,是一個無可致疑的事實。從一個搜尋器專家的角度看。Google的運算能力大大超越了其它同類型公司,甚至是將全球所有除了Google以外其他搜尋器的運算力總和,也不足以對抗Google。

這些運算力的差異在那些地方呢?計算機的數量、管理系統、硬件、軟件,所有的因素,Google也在其考量之中。

Google 最初的成立公司時以家裡的車房作為中心,以平價電腦加open source的管理系統組成。這訂下了發展的方針,以大量低價的電腦,匯集成今天聞名的Google電腦海。

相對於yahoo剛成立時,記憶中它是用雙核版本的太陽電腦,是那個時代的頂尖電腦。

由於引入公開源碼的Linux使得Google得心應手地改良,看它公開的那個Google Chrome OS可想而知已經很早就將Linux打做成高速的雲端管理系統。

Google 連資料庫軟件也不放過,早就放棄了32bit的舊式設計,突破單一物件4GB記憶上限,更將運行模式大幅修改為雲端模式,成為名叫Big Table的傳說級資料庫。

Google的技術暫時沒有能平起平座的對手,因為天生是雲端的本質,會比其他對手更優勝。

下一步要走的路,就是硬件的優化。將軟體的運算樽頸,轉為以硬件運算,例如,硬件加密,硬件搜尋。

如果未來的電腦能有硬件搜尋的Big Table,能利用硬件Regular Expression的電腦語言,能使用GPU的矩陣運算,有Physic Engine等等的硬件優化。甚至利用GPU的平行矩陣來優Big Table,用Regular Expression來改良現有搜尋機制。利用硬件加密來強化Google的保安設施。

如果這些都是由Google研發,一定會一統資訊科技界。

Read Full Post »

昨天跟一位中學的師兄在電話上談論IT的技術。師兄以前是從事會計,對IT也很有興趣。由於對工作的環境不滿意,放棄了高薪的會計工作,轉了入一間知名的會計軟件公司。由於他對上市公司的合拼帳的運作很熟悉,負責設計新的會計系統。

在電話裡跟他談了很多不同的電腦技術。其中一樣比較新鮮的就是設計「流程管理」軟件,我的師兄說他的公司已經開發了一套「流程管理」Workflow的軟件,由於規模比較大,難於應用在小規模的計劃內。那套「流程管理」的軟件是從收購其他公司而得回來,未能融合在其他產品之上。他的公司曾經花了很多時間和資源去從新開發另一套「流程管理」的系統,但結果不理想,內部人士的評語是設計了另一套解讀c#的c#。這個奇怪的評語,指的就是,用一套類似c#的語言來表達整個流程,包括表達圖片及表真正的流程及其相關的邏輯。

令我想起了我公司那套專為「中介付款系統」背後的「流程管理系統」。設計者是其中的一位同事,是兩年多年的產物。主要的原理是利用邏輯而產生出SQL語言,然後將SQL執行的結果,轉換成流程。

我師兄的老闆是C#高手,而我的同事是SQL高手。他們在設計時難免會以自己最熟悉的技術出發。本來,這種思維模式是理所當然的。可是,c#或SQL太不像圖象,用他們來做圖象介面,不太合適。C#不能直接翻譯,所以用來表達「流程」的邏輯,吃力不討好,SQL處理邏輯不太靈活。這兩種電腦語言,用在「流程管理」上是「相去甚遠」。就算設計者是「神」級也要花巨大的氣力才可以勉強成事。

所以,每當我們要去解決自己熟悉的領域之外的問題時,要細心想想,自己所習慣的模式是否「相去甚遠」呢?

回到原先的問題,本人覺得,古老的「流程圖」還是最合適表達「流程」。則DOM是種很好的描述畫面的中介語言。最後,JSON是一種很好的溝通及直譯的電腦語言。所以,我們可以採用「流程圖」->「DOM」->「JSON」的方式來將「流程」轉化為「JSON」。「JSON」可以被儲存、提取及轉化為真的「流程」及其邏輯。

當然,我們亦可以考慮用XML取代JSON的角式,也可以用UML代替「流程圖」。設計理念是差不多的。

Read Full Post »

作為資訊科技重要的一個環節,系統分析,從來也不是一件容易的事。

對談論系統分析,應從最早期的流程圖、方塊圖、結構方塊圖、等等早期沒有物件理念的圖開始。這個系統分析的萌芽期之後,出現了跟「個體理念」相關的系統分析方法,例如:「個體關係圖」Entity Relation Diagram或者是「數據流程圖」Dataflow Diagram都,他們都試圖用單一圖表的方法,希望可以將系統的每個環節分析及表達出來。

「個體理念」的出現,是系統分析的成長期。除此之外「個體理念」,也曾經有電腦學家用數學中的「集合論」Set theory作為分析方法。用「集合論」作為分析的工具,結果當然是用「集合論」的符號來表達。

最近的廿年,是系統分析的成熟時期,當中最較流行的系統分析方法,莫過於UML。UML鼓吹使用多種不同類形的圖表,捨棄了單一圖表的方法。這也是理所當然的。系統分析員所涉及的工作越來越複雜,單一的圖表往往不能有效地將情況作出分析,而且分析得出的圖表也未必容易轉化為電腦程式。

UML算是一個比以往更全面、更有系統的圖表分析方法。

而且,它也是其中一種針對「面向物件編程」的分析方法。使得分析後的結果,更容易就可以轉換成「面向物件編程」的程式。

至於本人主張的有關「面向集體編程」,現在還沒有配合的分析方法,在這方面,我會在之後文章再探討。

Read Full Post »