※ 引述《Eleganse (王建民)》之銘言:
: 補充一下
: 程序導向的程式,會用到許多的"函式",
: 函式這種東西,乍看之下可以達成在OO導向中"類別"或是說"類別中的方法"相同的效果,
: 但是一個很主要的不同,是函式的撰寫多半是屬於call by value的概念,
pass-by-value 與 pass-by-ref, 跟 OOP 沒有關係
: 也就是一大堆數據或文字資料,經由一個函式的服務,
: 而輸出另外一大堆的數據或文字資料。
: 當系統的功能慢慢擴增,我們的函式也越來越多,
: 整個系統在執行時有那種"資料副本滿天飛"的感覺,
就算寫 C, 很多情況都會傳入指標而不是 copy of data
: 就我個人的主觀概念,如果程序導向的程式撰寫時能夠都使用call by referance,
: 也就是"指標"的廣用,一部份的程度上,是能夠達成OO導向的好處的。
OOP 的好處根本就不是這...
: 但是指標這種東西,在C語言的最新一代C#中,已有遭到棄用的現象,
: 指標的使用被當成了unsafe的寫法,
: 畢竟直接存取記憶體,對許多程式撰寫師而言,
: 實在是沒有必要承受的原罪與風險。
指標不等如直接存取記憶體. 絕絕大部份的指標的應用, 都只是
作為 指往某東西的指標, 這種應用, 與 java/C# 的 reference
概念上無異.
: 我猜測一個很大的因素,
: 是因為"類別"、"物件"的使用,一部份替代了指標的作用,
類別/物件 與 指標 的使用一點關係都沒有. 也不會因為你
用了物件就替代了指標的使用
: 我們再也不用關心數值資料在函數中來來去去的變化了,
: 因為物件的使用,直接達成了"牽一髮而動全身"的效果,
函式稍為寫得好, 你也不會關心數值資料的來去變化.
試問寫 C 的時候, 你在用 time_t mktime(struct tm*)
的時候, 有需要關心傳進的那個 tm struct 的資料來去變化嗎?
我覺得, 你整篇都把某 OOPL (C#/Java?) 的 language feature,
錯誤理解為 OOP 的特性. 所以整篇說的東西都是錯的