我生命中的JS和OO
ㄜ~其實…原本打算接著上次的話題,繼續寫一下canvas系列的(詳見
[canvas]上的事件 — (1)、
[canvas]上的事件 — (2))
可是,接下來這個,可能會講的落落長耶~ > 3< 有點點懶~so~~ XDDDD 剛好對JS和OO突然有fu,所以、決定來紀錄一下
這個突如其來的感想吧~
對、我很任性~ XDDD 想到、不做會很彆扭歐~ (扭扭) 所以、我一定要認真的紀錄一下。
嗯、回顧一下年輕的歲月… Q 口Q (老了、真的老了~都到了回顧的時候了~哭)
唸書時期歷經了幾個小小的階段:
剛學C的時候、呆呆傻傻的除了loop、if else…這類的ㄜ、所謂…結構化的語法,平鋪直敘的從上到下寫程式~什摸都不會用
。學到了OO、還是有著『OO、OO是啥~OO好煩、我不要OO』的這樣的青澀時期~ Q 口Q 其實是根本不太會使用OO。後來、學了C++、慢慢的接觸到~很像知道了什摸叫做『OO』,那時候就突然的像走火入魔一樣、除了OO其他什摸都不要,
不用OO的也一定要OO一下,自我感覺良好的想著『多好阿~我的code可以reuse…』緊接著、由於修課的關係,接觸到了組合語言這類的,再結合上logic design,突然~有種驚為天人的感覺~邁入了我無時
不刻都想要用 bit 運算的奇怪心態…||| 好吧~這個真的有點難想像,可是、看著自己的程式結合 bit 運算,寫出來的
結果,就像一幅邏輯線路圖一樣的感覺、很好~ 囧 (<— 我想、這種感覺不是每個人都會有的~) 我現在,其實還是蠻喜
歡這種感覺的,突然想到就要來一下…|||再後來、遇到了可以說是我至今的最愛的一種語言…LISP,也許很多人會討厭使用它的時候的那些括號,總覺得看的眼花,
總覺得,它的使用上,總讓人匪夷所思…『為什摸可以這樣寫』、『為什摸』、『為什摸』…相信應該有不少人類在使用
的時候對它有很多的疑問。很幸運的是、我在學的時候,很像就理所當然的認為…沒錯、就是這樣…一拍即合~ XDD也許、現在陸陸續續接觸到蠻多語言的,像是js、python這類的,也還蠻喜歡的啦~並不會討厭或排斥…不過、貌似我最愛
的LISP的地位似乎從來沒有動搖過耶~即使、我其實沒有機會用到它~ Q 口Q 頂多、偶爾翻翻…(現在應該墮落到…除了大概
看得懂、就不知道怎摸寫的地步了吧~ XDD 語法什摸的、都忘了差不多了的捏~)
好~~~歷經了那些,由於工作的關係、真正的踏入JS的大門,唸書的時候、也曾經短短的碰過…1個月(?),好吧~那時候覺得…
JS是個奇怪得東西~然後、因為工作的關係在學習的時候、仍然覺得它令人匪夷所思…不懂、就是不懂~翻了很多介紹、總覺得
JS真的好怪,然後、跟著大家一起討厭JS了。真的~我討厭過JS~ XDDD|||
然後、歷經了一番的實驗與磨練(真的很感謝、周遭的同事願意讓我實驗一些奇怪的東西~XDD),所以、我就從各個角度去實
驗JS,就跟以前實驗C/C++還有其他語言一樣…從各種我突然冒出來的角度去實驗它,而且,到處去挖別人家的code…|||
期間、也發現了大家說『JS也可以OO』的各種寫法(<—JS和OO終於有關係了~ w) 於是又開始不遺餘力的實驗起、JS和OO的
關係…。
(也許、有機會,我突然去想到可以很不認真的紀錄一下以前實驗JS的成果歐~ XDD 雖然、也許結果大家會覺得很怪、
我的結論也許跟網路上得人類說得都不太一樣~ Q 口Q||| 我也懷疑過自己的結論、可是,最後我還是決定、好吧~相信自己)
總之、有一陣子,就跟小朋友拿到新玩具一樣,一定要把它玩到膩為止,寫JS的時候、一定要想一下…這個可不可以OO阿~OO
好棒、OO萬歲、OO你太神奇了~
好~~~過了為期短短的不到2個月…(可能1個月都沒有歐~ = . .= 我好糟糕),我厭煩了~||| 啥OO阿~ JS跟OO一點都不搭、就
…該怎摸說呢~我想、應該是因為語言特性的關係,雖然JS可以模擬OO (<— 大部分的人都會說實做、不過,我比較偏向
的說法是模擬,這個貌似又可以開一篇呢~ 我又挖坑了~ Q 口Q||) 在我發現它們不搭的時候,我很阿莎力的、放棄了
JS和OO的磨合,因為、JS模擬OO的寫法、其實…不太能說服我耶~那是一種fu啦~所以、現在就不太強求在JS環境下、也堅持
非OO不可的寫法了。偶爾還是會用啦~畢竟、有時候真的還蠻好用的~ XDDD
是說…從唸書開始一直寫程式到現在…其實也蠻久了的歐~ = . .= 雖然有過對OO著迷的時期,不過、目前來說…當我聽到有人
跟我說『OO多好嘟多好~』這類的言論,雖然、可以理解啦~可是、真的好想潑冷水歐~(<— 欠揍耶~真的…) 其實、OO真的沒
有想像中的好~因為、它的使用方式會讓整個想法有點…唔、怪~ XDD 所以、還是在適當的時機用比較好~(<— 一整個廢話)
好、也許有人會好奇為什摸我會覺得怪…小小的舉個例子(這邊不討論哪種語法歐~就是、採取意思到了就好…):
- 例子:假定、你定義了房子物件。
- 也許、會有人採用這樣的房子OO寫法:
x = new Building(); // 房子的instance x.openDoor(); // 房子的門打開了
- 也許、會有人採用這樣的房子OO寫法:
也就是說、建立一個房子、然後房子的門打開了,這樣的寫法、其實也沒啥不對啦~你看歐
假如我有很多個房子、這樣的寫法還蠻不賴的耶~說真的…只要定義好一次Building這個class、然後、以後就可以
偷懶了、真的很好~。
那…為什摸我會覺得怪咧~這個例子也許誇張了一點啦~ XDDD 它其實、是有點…好吧~ 這摸說好了、如果它套入了以前
唸書的時候學到的『擬人法』那…我就不會覺得怪了,不然、真的很怪阿~房子怎摸會開門…囧 就很怪~ XDD 可是、
我寫程式的時候、不會想到擬人法阿~所以、我就覺得很怪…
- 如果以可能蠻多人都有興趣的遊戲的情況來說:
勇者有hp、mp、攻擊力這類的屬性,另外也有attack這類的…唔、手段
怪物同樣也有這些東西…
因此、可以把它們抽出來…用一個叫做、creature的class封裝起來,定義好它們的 default 運作、在產生這些instance的
時候就可以輕易的使用它們。在這樣的情況下,我就會覺得 OO 還蠻不賴的。
好~~這樣、不知道有迷有清楚為什摸我會覺得 OO 其實是個比較偏向在狹義一點的使用了。原因大概就是這樣…。
嗯嗯、下個結論就結束吧~!! 所以、我要說得是、在很認真的實驗過許多語言後,除了語言的本性以外、其實在某一方面
、OO 並不是真的那摸好~ 當然、也沒有真的哪個語言最好、哪種寫法最讚啦~ 這邊並沒有要貶低 OO,只是…要看用在哪邊,
就像…我寫assembly… = . .= 最好是會用functional language的特性下去兜啦~那也太蝦了~
[批註]
其實、我也不知道我這篇到底重點在哪耶~(汗|||) 就是、心裡面的 OO 魂突然冒出來、讓我揍他(?)、可是又覺得很對不起
canvas、所以、讓JS出來湊湊熱鬧的…感覺吧~ 囧
以上…