What have you found for these years?

2009-06-24

dynamic/static typing

下午重新把 flash 拿出來,對之前的程式開始動刀,
發現... 一堆 compile error @_@

首先是不小心把 as2 的程式混進去了,拿掉。

接著發現一堆 type 不合的問題。感覺是 type 檢查更嚴格了。
這是好事.. 後述。

另一個是 for each loop 從原本詭異的 javascript 形式,
變成正常的形式了。詭異的是 for each 居然丟 index,
現在好像變成 value 囉。

所以想想這些更新都是好的。

邊在修的時候邊在想,為什麼明明 Action Script 3
是由 ECMAScript 改過來的,所以當然是 dynamic typing,
也可以說是 duck typing, 但我卻把所有的 type 都寫出來?

為什麼 ruby 的 dynamic typing 寫得很愉快,
但 actionscript 2/3 我卻非把 type 寫出來不可?
為什麼從 ECMAScript 改過來,向 Java 靠齊我想拍手叫好?

好簡單的。(香港 style?)

我用 ruby 是寫什麼?

1. 用後即丟,一次性工作的程式
2. 小玩具
3. web application/framework
4. etc.

基本上幾乎每一個都不需要很複雜的結構,
或是,需要快速大量地變動!
舉凡跟 user 有最直接互動的程式,
往往都需要快速大量地變動,因為人類真的是很難搞的生物.....

這時候 dynamic typing 很佔優勢。但像是 flash 的東西,
我大概都是寫以下兩種:

1. 遊戲
2. GUI

這兩樣東西,結構都極其複雜,完全不是上面 ruby 所寫的東西,
可以比擬的... 儘管遊戲和 GUI 同樣面臨需要面對 user 的窘境,
但前者的複雜度太高,再怎麼樣還是需要完備的結構,
而後者,通常是自己建立 GUI library, 然後再拿這些元件去組裝。
因為 GUI 要比遊戲要來得容易 generalize 得多!
可以很輕易地切成兩塊,一塊極其複雜;一塊面對囉嗦的 user.

或許 Flex 可以解決這個問題,不過那又是另一回事。

總之,很自然而然我就會希望 ActionScript 能夠用 static typing.
要 model 遊戲,從來就不是一件可以隨便完成的事情。
或許用 ruby 寫遊戲,也並不是那麼適合也說不定...

那麼用 c++?
我覺得這也不是個好選擇,原因很簡單,遊戲仍然是直接面對 user,
我們會需要能夠更快速有 feedback 的情境。c++ 的 compilation model,
並不適合快速 compile, 難以快速給予 feedback.

像是這樣緩慢的編譯流程,比較適合 spec 確定就不會動的東西,
例如一些 system 需要用到的程式,也就是面對程式或是機器,
不是直接面臨該死萬變的人類... @_@

所以我覺得遊戲還是需要 static typing, 但也同時能夠快速 compile,
快速給予 feedback, 並快速修改的環境。
單就這點而言,或許 java 是不錯的選擇,不過寫 java 很沒樂趣,
表達能力太差,我實在不大喜歡...

搞不好最好的辦法,還是 prototyping 和 c++ 才對。
這種形式,前者用什麼就都無妨了,不過為了減少改寫的困難,
最好還是用 static typing 的語言。這種作法,
最大的問題恐怕是成本過於高昂......

可能 prototype 才剛做好,資源就燒光了 XD

而我又痛恨土法煉鋼........ 一點樂趣也沒。

==
說到這,順便提一下好了,我也一直想研究 methodology 的東西。
無奈.. 沒有人力實驗一點辦法也沒有..
嗯?多一個人能幫上什麼忙?
棍!沒試怎麼知道!!人力不同用的方法當然不同!

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0