posts - 176, comments - 240, trackbacks - 0, articles - 7

          從指針到引用

          Posted on 2007-12-02 22:14 canonical 閱讀(1187) 評論(2)  編輯  收藏 所屬分類: 設計理論
              地址(Address)是現代計算機體系架構中的核心概念,它在程序設計語言上的體現就是C語言中的指針(Pointer)。在C語言中,所有的高級技巧都和指針這個概念相關。指針只是一個存放了一個地址的變量,但是C語言中提供了一個方便的間接訪問方式,p->x, 它使得擁有指針在概念上就等價于擁有了指針所指的全部內容。在這種誘導下,我們漸漸模糊了地址和地址所存儲的內容之間的區別。這也是指針的指針這樣的概念總是讓初學者迷惑不解的重要原因。
              指針是對地址的符號化。它所帶來的第一大好處是使得我們擺脫了對絕對地址空間的依賴。如同Newton第一定律所闡述的:物理規律與所發生的慣性坐標系無關。同樣,數字空間中發生的的事件與所處的絕對地址也是無關的。在符號化的方向上更進一步,如果我們專注于指針的關聯語義,而放棄指針的指針這樣的混雜概念,就會得到具有獨立價值的引用(Reference)概念.
              從表面上看起來,數字空間只是一個無限延展的一維地址空間,每一地址處只能存放一個有限大小的離散數值,似乎它的幾何學是貧瘠的。但是因為在軟件設計中,一般是不考慮尋址時間的。這意味著在擁有指針的情況下,我們可以“立刻”訪問到數字空間的任意遙遠的地方。這種超時空的信息傳遞過程使得我們可以利用“引用”概念輕松的構建一個多維的表示空間。在面向對象的技術背景下,x.y.z這樣的形式表示暗示著x,y,z是同時存在的。當z發生變化的時候,通過y.z和x.y的信息傳導,x對象本身也發生了某種變化。
              隨著web技術的流行,獨立的狀態/地址空間的存在性逐漸成為系統不可回避的假設, "同時性"的物理約束越來越難以維持. 相對論規定了物理現象的定域性, 在數字空間我們一直忽視了它.但有趣的是, 網絡上的傳輸時延卻迫使我們重新發現了"引用"形式下必然存在著的物理過程. 引用本身只是標記了某種信息關聯, 并不一定意味著同時性約束. 并發編程領域的所謂的Future對象是對傳統引用概念的一種有趣擴展.
             result = obj.callMethod(args) ==>  future = obj.callMethod(args)
          future對象可以被自由傳遞, 只有當實際訪問到它的屬性的時候, 才會觸發時序約束. 

          Feedback

          # re: 從指針到引用  回復  更多評論   

          2007-12-03 12:47 by mingj

          領教了
          地址由最初到現在,在空間和時間上都發生了很大的變化
          最顯著的特點就是更耦合了

          我這個理解沒錯吧?

          # re: 從指針到引用  回復  更多評論   

          2007-12-04 00:08 by canonical
          從指針到引用,雖然在C++中顯得只是寫法上的簡化。但是仔細體會能夠發現概念層面發生的一些變化。我們不再依賴取址這個具體過程,而在某種符號化的層面上理解引用所表達的信息關聯。耦合不是一個合適的描述。
          主站蜘蛛池模板: 前郭尔| 白城市| 织金县| 九江市| 忻城县| 离岛区| 灯塔市| 芜湖县| 巴林右旗| 建昌县| 固镇县| 孝感市| 永城市| 海林市| 聂荣县| 昭平县| 徐汇区| 白山市| 纳雍县| 杨浦区| 江永县| 屯留县| 汉源县| 博客| 平顶山市| 顺平县| 清丰县| 开江县| 广西| 稷山县| 新安县| 广安市| 壤塘县| 博客| 察哈| 客服| 布尔津县| 志丹县| 水富县| 乐昌市| 嘉兴市|