Java民工的鐵皮房

          Consciousness Of Programming - wjywilliam 想飛,總是會(huì)飛的......
          posts - 8, comments - 14, trackbacks - 0, articles - 9
            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          越來(lái)越覺(jué)得《盜夢(mèng)空間》是給程序員們拍的了。那么進(jìn)入一層夢(mèng)境到底怎么映射到編程?是遞歸?是循環(huán)?還是簡(jiǎn)單的函數(shù)調(diào)用?

            對(duì)于一個(gè)進(jìn)入夢(mèng)境中的人來(lái)說(shuō)是遞歸,一層層push進(jìn)了再一層層pop出來(lái),對(duì)于很多進(jìn)入夢(mèng)境中的人來(lái)說(shuō),是函數(shù)調(diào)用,因?yàn)橥T谀骋粚訅?mèng)境中的人與其他進(jìn)入更深夢(mèng)境中的人是同時(shí)工作的。更加確切的說(shuō),進(jìn)入夢(mèng)境中的人算是程序中設(shè)定的全局變量,夢(mèng)境中虛擬出來(lái)的人算是局部變量,而一個(gè)程序中一般不會(huì)只有一個(gè)全局變量,所以進(jìn)入夢(mèng)境不是遞歸操作而是函數(shù)調(diào)用了。每一個(gè)虛擬出來(lái)的夢(mèng)境都是一個(gè)函數(shù),可以由任何其他夢(mèng)境任何時(shí)候調(diào)用(進(jìn)入),進(jìn)入此函數(shù)(夢(mèng)境)的變量(人),一般還是要返回的,就是函數(shù)返回的參數(shù)了,此變量返回時(shí)作為人并非沒(méi)有任何變化,比如Cobb給Ariadne在夢(mèng)境中注入了一個(gè)思想,那么Ariadne作為變量返回時(shí)就是經(jīng)過(guò)處理的了。一般來(lái)說(shuō)編程中函數(shù)最好是返回參數(shù)的,要么是直接處理后得到的最終值,要么是得到的一個(gè)標(biāo)志變量,但也可以不返回參數(shù),也就是void型的,對(duì)應(yīng)到電影中就是:進(jìn)入此夢(mèng)境中的人可以返回,可以不返回,永遠(yuǎn)留在夢(mèng)境中。

            為什么進(jìn)入一個(gè)夢(mèng)境中比前一個(gè)夢(mèng)境(或許是現(xiàn)實(shí))時(shí)間要變慢了?或許可以這么理解:如果我們把現(xiàn)實(shí)世界看作主函數(shù)(main函數(shù))的話,那么我們一般不喜歡在一條主線中寫太長(zhǎng)的代碼,那么我們希望寫一個(gè)函數(shù)來(lái)調(diào)用,寫好函數(shù)之后,在此流程中直接寫一個(gè)函數(shù)調(diào)用語(yǔ)句就行了,具體的過(guò)程就由此函數(shù)來(lái)完成,我們默認(rèn)允許此函數(shù)用長(zhǎng)一些的時(shí)間去完成邏輯功能,當(dāng)然很多情況下處理時(shí)間越短越好。

            進(jìn)入夢(mèng)境的時(shí)候會(huì)選擇進(jìn)入誰(shuí)的夢(mèng)境,被選定的這個(gè)人在程序中就對(duì)應(yīng)一個(gè)最主要的變量,這個(gè)人在夢(mèng)境中如果被殺掉,就對(duì)應(yīng)此函數(shù)中的主要變量有問(wèn)題,不符合此函數(shù)(夢(mèng)境)對(duì)此變量(人)的要求。此時(shí)就要throw exception并且return回到上層夢(mèng)境(函數(shù))。

            設(shè)計(jì)夢(mèng)境的人就是編寫此程序的程序員。此人也可以進(jìn)入他設(shè)計(jì)的夢(mèng)境,而程序員面對(duì)自己的程序也要不斷深入,因?yàn)橐腋鞣Nbug.如果此程序員留在了夢(mèng)境中沒(méi)有出來(lái),我們可以這樣理解,這個(gè)程序員出了問(wèn)題或者說(shuō)這個(gè)程序員寫的程序出了問(wèn)題。所以說(shuō)選擇一個(gè)好的造夢(mèng)師(程序員)至關(guān)重要,所以cobb才會(huì)回到巴黎找他老師(也是父親?沒(méi)太弄清楚)要一個(gè)很聰明的學(xué)生,并把她培養(yǎng)成一個(gè)優(yōu)秀的造夢(mèng)師。cobb作為一個(gè)造夢(mèng)師,自身?xiàng)l件是很好的,可是有一個(gè)致命的缺點(diǎn):總是拋不掉自己過(guò)去的或是生活中或是夢(mèng)境中做的不好的場(chǎng)景,并且這些場(chǎng)景會(huì)經(jīng)常出現(xiàn)在新的夢(mèng)境中。對(duì)應(yīng)地,一個(gè)程序員,如果總是沿用自己過(guò)去寫過(guò)的程序,那些代碼段自己以前寫的時(shí)候或出現(xiàn)了問(wèn)題或者問(wèn)題沒(méi)有表現(xiàn)出來(lái),但是在新的要求下并不符合要求了,或者寫新的程序時(shí)候總是沿用自己過(guò)去的編程思想,或許那些思想并不適用于新的情況。所以一個(gè)程序員很重要的一點(diǎn)是要打破自己的慣性思維,遇到問(wèn)題即使跟以前遇到過(guò)的很像也要仔細(xì)地重新審視。打破常規(guī),發(fā)散思維,這樣一個(gè)程序員才會(huì)有長(zhǎng)足的發(fā)展。

            作者:alexzhan,作者電子郵件:alexzhan12@gmail.com ,歡迎來(lái)信交流

          ??? 轉(zhuǎn)載自月光博客?[?http://www.williamlong.info/?]?


          只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 华容县| 清新县| 两当县| 三都| 都匀市| 秭归县| 鲜城| 内乡县| 花莲县| 阿拉善盟| 遂昌县| 弋阳县| 沂源县| 菏泽市| 南召县| 通榆县| 萝北县| 文水县| 正蓝旗| 海原县| 汝城县| 肇东市| 浮山县| 萨迦县| 岑溪市| 阳曲县| 开江县| 长宁区| 揭阳市| 喀喇| 钟祥市| 金昌市| 霸州市| 马鞍山市| 新龙县| 阳东县| 名山县| 湘阴县| 德格县| 谷城县| 寿光市|