白話面向智能體編程(Agent Oriented Programmig, AOP)(之一)
來源:互聯網
上載者:User
Adrian同志有一篇關於Aspect Oriented Programming的Blog The Ted Neward Challenge (AOP without the buzzwords),俺非常的喜歡。這篇文章中文翻譯過來可以是“無廢話AOP”,它從一個脫離了具體實現手段的視角,用簡單清晰的語言向我們表達了Aspect Oriented Programming的本意:
盡量將需求和實現的關係由
1:N逼近至1:1。俺也非常希望能整出這麼一個“無廢話Agent Oriented Programming”,可是基於下面兩點考慮,俺還是決定放棄:一個是Agent Oriented Programming不光是個有意思的技術話題,還與學術界,理論界有很深的淵源。要“無廢話”,且饒有趣味地闡述這樣一個理論問題,是相當有難度地,還是時不時有必要來點廢話,才不至於讓同志們看得睡著過去。另一方面,記得上學的時候,老師傳授的讀書體驗是先把書讀厚,再把書讀薄。書讀薄了,吃透了,歸納出來,寫出來的都是精華,當然也就無廢話;而俺現在還處於把書讀厚的第一階段,所以寫出來廢話會比較多一點。基於這樣的考慮,這個系列的文章可以被稱為是“白話Agent Oriented Programming”。 如果俺有足夠的耐性把文章全整出來and您有足夠的耐性看完所有文章,您會對以下的內容有一個大概的瞭解: l
什麼是
Agent
和
Agent Oriented Programming
Agent這個概念並不是空穴來風,在理論界對它的研究已經很深入,Agent是Object的進化版本,進化的目的是為了讓軟體系統更貼近現實世界。從程式設計的角度理解,可以認為Agent就是綁定了Thread的Object。l
為什麼要整這麼個概念出來,這個東東和其他一堆泛濫的概念的關係是什麼
可以說搞軟體的人,特別是搞平台軟體的人,本質上都比較
懶,整天琢磨著怎麼
更懶,如果有個東東可以讓100行的代碼壓縮到10行,將設計,調試,維護的時間由1天壓縮為1個小時,他們就會將這種方法拎出來,湊成一個概念。OOP,AOP,SOA什麼的基本上可以說都是這麼整出來的(戲言戲說)。l
怎麼樣在
.Net
平台上實現
Agent Oriented Programming
Agent Oriented Programming是一種思想,與平台無關。但既然是準備貼在以微軟技術為主題的部落格堂上,為了以示尊重,還是選擇在.Net平台上實現的比較好。l
俺們設計的一個
Agent SDK
,及其一些蠻有趣的特性
實際上這個Agent SDK是俺們設計一個工作流程引擎的副產品。在給大家做示範的時候,這個SDK倒是比上層的工作流程引擎更能引起大家的興趣(除了胸悶還是胸悶)SDK部分地實現了Agent的一些特性,例如AgentMethod,TimerMethod,Sensebility等。l
未來之路
這裡的未來之路包含兩個意思。一層意思是,圍繞著Agent Oriented Programming,還有很多進階的特性等待我們去實現,例如移動Agent,合作Agent等。另一方面,對於任何思想,技術而言,光掌握其原理,明白是怎麼回事,是不夠的,還是得運用到項目中,創造效益,老闆才會高興,才會去下力氣去推廣。所以俺們也要考慮如何將這麼好的東東應用到實際的項目開發中去。