原创 GTK 入門文件

先來嘗試一下幾個簡單的 GTK 程式,並初步瞭解一些核心特性。 Hello!World! Orz.. 第一步,當然是先 克服 GTK 的安裝問題,然後來個簡單的 Hello!World! Orz... Ubuntu 下安裝 GTK 第一

原创 Qt4 學習筆記

新完成的Qt4學習筆記…http://caterpillar.onlyfun.net/Gossip/Qt4Gossip/Qt4Gossip.html

原创 命令式至函數式隨記(六)

English 從函數式得到的,並不只是將命令式外觀的程式碼重構為函數式外觀的程式碼,重點在於 對問題思考方式的重構,從而影響演算法的設計。 下面這個程式是個解 排 列組合 的例子:def rotated(list, i, j):   

原创 命令式至函數式隨記(二)

English 使用迴圈循序處理List中元素的問題,基本上都可轉為遞迴解,不必使用計數器,只要有辦法取List的head與tail就可以了。如果迴圈中又有迴 圈,基本上就是處理兩個問題了,函數式就是強迫你要分解問題。舉例來說: def

原创 「常見程式題目」第三版

更新紀錄: 第一版:最初的版本,主要以 C 語言實作為主,當時還是使用 CHM 格式製作,開啟有些問題吧! 第二版:將文件改為 HTML 格式,修改了 Java 實作部份,加入更多的題目。第三版:修改了大部份的 C、Java 程式實作,並

原创 命令式至函數式隨記(一)

English 這一陣子練習函數式,隱隱約約發現從命令式過渡到函數式有一些模式可循,但還沒很能抓得住,在這邊略作筆記一下,另一方面,最近在看 MapReduce,也是隱隱約約感覺,這種模式,有助於使用 MapReduce 時對資料的分析,

原创 受限多重繼承的演進

觀察到兩個以上類別具有重複定義時,可考慮將重複部份抽出至新類別,使用新類別的方式之一是透過繼承,這是由下而上的繼承思考方式;如果觀察到類別已定義某些功能,為了避免在新類別中重複定義,方式之一就是繼承該類別,這是由上而下的繼承思考方式。 

原创 程式語言的特性本質(三)從消弭重複性看封裝、繼承、多型

程式設計在某種程度上都是在消弭重複性,以提高程式可維護性來控制軟體複雜度。若從消弭重複性來瞭解物件導向中封裝、繼承、多型,就可具體瞭解這些基本原則的作用。  封裝消弭了物件的重複行為  假設你用類別基礎的Java設計僅具有name與bal

原创 山寨版 Java 深度歷險

之所以叫作山寨版 Java 深度歷險,其動機之一,就是彷照 Java 深度歷險 ,嘗試將一些市面上的書較少談及的東西寫出來。 至 於章節順序安排,則是我過去經驗中,發現最多人所忽略而引發問題的一些東西,有些問題其實都很基本,但也許是缺少訓

原创 命令式至函數式隨記(五)

English 來點輕鬆的好了!要把一組list中的資料全部加1怎麼寫? def addOne(list):    result = []    for ele in list:        result.append(ele + 1)

原创 認識 Lambda/Closure

在 CodeData 網站撰寫的一系列認識 Lambda/Closure 文章。 認識 Lambda/Closure(1)從 JavaScript 的函式物件談起認識 Lambda/Closure(2)什麼是 Closure?認識 L

原创 程式語言的特性本質(四)往數學領域抽象化的函數程式設計

許多程式語言融合了多種程式設計典範(Paradigm),除了為人熟知的結構化、物件導向等典範外,逐漸也可見函數程式設計(Functional programming)的蹤影,相對於物件導向將問題具體為物件

原创 命令式至函數式隨記(四)

English 在命令式至函數式隨記(三)中最後談到foldRight,本來想說有機會再談,不過剛好有個範例,想說就先隨便記好了,有這之前,建議先看看: List 處理模式抽象資料型 態與 代數資料型態 前幾篇都用Python作示範,那這

原创 程式語言的特性本質(一)靜態語言與動態語言的信任抉擇

型態系統是對底層位元組的抽象化,開發者只要瞭解型態,就可得知如何以高階操作處理資料,開發者選擇程式語言的第一步,就是如何從語法得知型態資訊,也就是決定選用靜態語言或動態語言。 具體來說,靜態語言是指變數是

原创 命令式至函數式隨記(三)

English 函數式的思考中心就是分解問題,舉例來說,計算list長度命令式如下: def length(list):    c = 0    for i in list:        c += 1    return c    將之