(1)
btw, 真的,boost::python 或是 luabind 這樣的,利用一大套**,讓機器轉換繁雜的介面,從乙個語言的介面轉換另乙個語言的方式,最終都是權益之計。把介面設計簡潔方是正道。
(2)為什麼說語言重要也不重要,演算法和資料結構重要也不重要。對要解決的問題的領域的理解很重要(即明白真正要做什麼)。理解了,我們才可以用物件導向,用模式去套問題;可理解了,我們又不真的需要這些繁雜的抽象。
(3)實現乙個 gui 系統(或是乙個 3d 世界)。需要實現乙個功能——判斷滑鼠點選到了什麼物件。這裡,每個物件提供了乙個方法,可以判斷當前滑鼠的位置有沒有捕獲(點到)它。
這時最簡單的時候方法是:把所有可以被點選的物件都放在乙個容器中,每次遍歷這個容器,檢視是哪乙個物件捕獲了滑鼠。
我們並不需要可被點選的物件都是同類,只需要要求從容器中可以以統一方法訪問每個元素的是否捕獲住滑鼠的這個判定方法。
(4)在沒有 gc 的環境中,addref 和 release 相當於讓每個物件自己來實現 rc (引用計數)的自動化管理。
(5)
c++ 提供了對物件導向的支援,但 c++ 所用的方法(虛表、繼承、多重繼承、虛繼承、等等)只是一種在 c 已有的模型上,追加的一種高效的實現方式而已。它不一定是最高效的方式(雖然很少能做到更高效),也不是最靈活的方式(可以考察 ruby )。我想,只用 c++ 寫程式的人最容易犯的錯誤就是認為 c++ 對物件導向的支援的實現本身就是物件導向的本質。如果真的理解了物件導向,在特定需求下可以做出特定的結構來實現它。語言就已經是次要的東西了。
(6)滑鼠選取的例子
的本質需求是:可以需要讓不同的物件可以用統一的途徑去檢查是否捕獲住滑鼠。只要滿足了這個,就可以把這些物件放在一起來處理。這就是 oo 在這個問題上作用。
(7)
當乙個物件被很多地方引用的時候,通常我們會給出引用記數,當記數減到 0 的時候就刪除,這是個看似完美的解決方案。但是,有多少地方會記得解除引用呢?借助 c++ 的語法糖,可以自動的完成這些工作。長期的引用關係,可以在構造和析構的時候操作;短期的引用,比如就在乙個函式內獲得物件,操作完畢後馬上解除引用。這個時候,可以通過返回幾個 warpper 物件來完成
(8)
對於全域性所有資源的管理,我個人的主張是一定要考慮採用樹結構,而不是線性表。因為掃瞄所有資源這種操作會比較常見。比如以上提到的掃瞄所有資源,刪除 mark 過的物件。採用樹結構的好處是,mark 的時候,可以同時 mark 父節點(對父節點計數)。這樣,任何資源樹上的任何一支都可以通過 root 知道是否需要遍歷分支。通常,刪除這種操作並不頻繁,通過檢查根節點一次就可以忽略整個遍歷過程了。
而且刪除操作往往是可以並行的。為了在刪除過程不影響資源樹的結構,我們還可以只是對資源樹上的節點置空,再統一壓縮掉空指標。這樣就可以獲得最大效率的刪除操作,不至於因為定期刪除資源而使服務停頓過久。
團隊管理的一些觀點。
績效管理 績效 管理 管理人員.大公司小公司的績效管理方案不相同,業務部門和研發部門的績效管理方案也不相同。程式設計師選擇工作機會的目標 工作環境,薪水,發展平台。wind river乙個研發部門的做法是 基本上是量化和人性化結合,會有一些硬的指標來打分給每個人 1.責任心 很重要 2.技術背景及技...
關於數學的一些觀點
做數學的藝術在於找到乙個特例,其中隱含了所有推廣的胚芽。我們可以測量乙個科學研究的重要性,藉著數數看因為它而變得多餘的出版物有多少。有時候乙個人的視野圈變得越來越小,當半徑接近零的時候它集中在一點。然後那個東西變成了他的觀點。越學習,越發現自己的無知。懷疑是智慧型的源頭。僅僅具備出色的智力是不夠的,...
關於Web Scale IT的一些觀點
fit2cloud聯合創始人阮志敏近日通過郵件向infoq中文站分享了他對web scale it的一些觀點,當中列舉了web scale it的典型特徵,並對企業實現web scale it提供了一些建議。以下是郵件內容 gartner近日發布了2015年十大it趨勢 其中包括web scale ...