PLT 板


LINE

看板 PLT  RSS
剛趕完一個工,來賺點 p 幣... 如果後來有把東西都整理好的話,會釋出這次的一些 action script 3 code, 名稱定為 avatar block, 顧名思義就是放一群 avatar 的 block, 原始模型是 flickr 的照片 flash, 不過我加了很多擴充的東西。 action script 3 比 2 好用滿多的,但還是有非常大的不足就是了... ※ 引述《jaiyalas (ZZZ)》之銘言: : 據說,這個版的版主之前有嘗試過以這樣的方式來實做 : 也許可以請版主大人稍微講一下實做的心得 = =+ 如果我沒記錯的話在 C_and_CPP 講過滿多的 ccc 不過後來懶了,就很少在那邊發言了。 其實我是覺得概念很簡單啦,基本上就理解成 meta-programming 就好了。 不過要用 C++ template 做 meta-programming, 其實限制很多, 做起來時常會讓人有腦爆感。而且 dependent on value, 幾乎可以說只對數字有效。 像是假設這樣: clas NaturalNumber{}; template <NaturalNumber n> class List{}; 這樣是不行的! 因為 NaturalNumber, 包含所有的 class, 都只能在 runtime 去 construct, 而 template 是完全 compile-time 的東西,兩者不能混著用。 再來看 factorial 吧 XD template <int N> class fact{ public: enum{ value = N * fact<N-1>::value }; }; template <> class fact<1>{ public: enum{ value = 1}; }; 這裡定義了兩種 fact, 上面的 fact 是 generic 的, 也就是一般的 template. 而下面的,叫做 template specialization, 有點像是 case of 的味道吧,當 N = 1 時,不使用泛用的 template, 要求使用特製的 template. 而 C++ 在還沒真正用到 fact 時, 不會做完整的 semantic 檢查,只有部份的 type check,(當然 syntax check 會做) 直到真正要用時,才會做第二階段的檢查,這叫 two-phase lookup, 這細節很多很複雜,而且也不是這裡的重點,所以就不多說了... @_@ 不過微軟的 VC 就是沒做 two-phase lookup 的最好例子 XD (2008 會不會做不知道,依照慣例大概是沒有吧 XD) C++ 強調 early error, 所以要求 two-phase lookup, 但是非常難實做, 所以微軟第一階段的檢查忽略不做。 anyway, 當我們呼叫: fact<10>::value 時,compiler 就會去檢查 10 符不符合哪個 template specialization? 答案是沒有,所以 fact<10> 會去 instantiation 最泛用的那個 N, 然後去計算他的 value 等於多少? 這邊 compiler 又會發現,value 是 N * fact<9>::value, 於是他再去計算 fact<9>::value 是多少? ... 最後 compiler 會找到 fact<1> 是某個 specialization, 他的 value 會是 1, 然後就能夠把 fact<10>::value 計算出來。 於是你的程式裡面就會有 10 個 class, 分別是: fact<10>, fact<9>, fact<8>, ... fact<1> 這 10 個 class 在 runtime 上分別是不同的 class, 所以用 template 時常會有 code bloat 的問題... 但在這個例子中,最佳化良好的話,其實一個 class 都不會產生。 因為 compiler 會發現 fact<10>::value 是個常數, 而其他地方都沒有用到 fact<...>..., 所以 linking 時就會全部捨棄了。 唉呀呀,有事,待續... : Omega http://web.cecs.pdx.edu/~sheard/Omega/index.html : 沒有試過,只有看過程式碼 : 感覺語法和Haskell很像 我是覺得算是擴充 haskell 吧? godfat ~ 3.2$ port info omega Omega 1.4.2, lang/Omega (Variants: universal) http://web.cecs.pdx.edu/~sheard/Omega/ Omega is a strict dialect of Haskell providing type-level computations and by this virtue integrates a theorem prover. Build Dependencies: ghc Library Dependencies: readline Platforms: darwin freebsd Maintainers: [email protected] -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.218.90.242
1F:推 jaiyalas:推簽名檔,好久沒碰了..Orz 10/01 17:15







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Boy-Girl站內搜尋

TOP