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

          從指針到引用

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

          Feedback

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

          2007-12-03 12:47 by mingj

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

          我這個理解沒錯吧?

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

          2007-12-04 00:08 by canonical
          從指針到引用,雖然在C++中顯得只是寫法上的簡化。但是仔細體會能夠發(fā)現(xiàn)概念層面發(fā)生的一些變化。我們不再依賴取址這個具體過程,而在某種符號化的層面上理解引用所表達的信息關聯(lián)。耦合不是一個合適的描述。
          主站蜘蛛池模板: 遂平县| 虞城县| 闽侯县| 曲阳县| 库伦旗| 华阴市| 阿克| 五原县| 莱芜市| 永丰县| 揭西县| 隆安县| 舒城县| 宝山区| 广平县| 洛隆县| 株洲县| 泰顺县| 如东县| 赫章县| 罗定市| 泾阳县| 阿城市| 佛教| 洪湖市| 华蓥市| 通化市| 黎城县| 黑水县| 慈溪市| 大田县| 绵阳市| 视频| 浑源县| 宝清县| 乌苏市| 广河县| 仁布县| 漳浦县| 岳普湖县| 饶阳县|