《WF本質論》第一章OpenSesame我的實現

2022-01-13 14:41:56 字數 1166 閱讀 6570

相關的背景可以看有機會的建議看書。

剛開始看這本書,第一次接觸第一章的這寫概念,**省略的地方多了,看的感覺有點斷層。網上初略的找了一下源**,發現作者自己居然沒有提供,能找到的其他實現都沒有100%的實現,即不是乙個真正可執行的示例**。為了能夠更深入的理解,我自己按照書中給出的輪廓做了乙個自己的實現。我的實現中,並不是100%依照書中的描述,有一些是根據自己的理解改進的,比如我的實現中bookmarkmanager類並沒有done方法,語句的狀態,被定義到了programstatement這個父類中,我認為done這個動作是語句自身的狀態的一種,和書籤管理器本身沒什麼關聯。書籤的刪除也從語句中移到了非同步呼叫完畢(既continueat方法呼叫之後),這樣更合理,在書籤管理器中刪除書籤。增加了一些書中提到的但是跳過的(常用理由:不是本章內容),比如booleanexpression的實現(同樣使用了**來實現,順帶的及其簡單的實現了資料繫結),bookmarknotfoundexception,鈍化(使用system.runtime.serialization.formatters.binary來實現,目前發現.net framework也只有它能實現這個迴圈引用外帶委託的類的序列化,其他的其中datacontractserializer不支援迴圈引用,soap格式不支援委託,xml序列化沒嘗試,我想到datacontractserializer內部似乎使用了xml序列化)等。還有一些改動是按照書中所述很難實現的改動,記不清楚是哪些地方了,這個示例**陸陸續續的寫了2個星期。

沒有實現或完整實現的內容包括,最後的幾張資料庫表,因為實現解析器真不是本章內容了 :) ,我簡單的使用了c#本身來代替。書中提到書籤恢復之間的約束等(我感覺不是重點,而且加大了示例**的複雜度),資料繫結等。

program中假定了2種情況,一種是一次執行完畢(all),另一種是執行到需要輸入的時候鈍化(part1, part2),等待輸入以後啟用繼續執行。實際上是可以在任何乙個書籤點鈍化的,只不過opensesame中的邏輯中只有等待輸入時候需要掛起,因此就按照這個邏輯設計了另外一種執行方式。

另外,program中的書籤是面向輸入和key一致的情況,如果輸入和key不一致會引發bookmarknotfoundexception,原因是printgreeting沒有被執行,所以沒辦法恢復這個書籤。這種情況應該是正常的,書籤是由mythicalruntime的客戶端自己保管的,如果需要可以判斷然後使用不同的書籤,我的實現中沒有提供對這種情況的支援。

C 本質論 第一章 C 概述

學習新語言最好的辦法就是動手寫 庫 或稱為類庫 的副檔名是.dll,其中dll代表 動態鏈結庫 dynamic link library 不要在識別符號中使用單詞縮寫。一種是縮略寫,一種是專用縮寫 c 要求main方法的返回型別為void或int,而且要麼不帶引數,要麼接收乙個字串陣列作為引數。st...

PRML第一章 概率論

sum rule p x yp x y product rule p x,y p y x p x 2.貝葉斯理論 p y x p x y p y p x 先驗概率和後驗概率 例如先驗概率是p b 不需要給定的f,就可以得到的概率叫做先驗概率。後驗概率是p b f 給定f之後,才得到的概率就叫做後驗概...

python第一章筆記 第一章 基礎

參與除法的兩個數中有乙個數為浮點數,結果也為浮點數 如 1.0 2,1 2.0,1.0 2.0 python print 1.0 2 結果 0.5 print 1 2.0 結果 0.5 print 1.0 2.0 結果 0.5 整數 整數,計算結果的小數部分被截除,只保留整數部分 不會四捨五入 如 ...