关闭

認識 Lambda/Closure

在 CodeData 網站撰寫的一系列認識 Lambda/Closure 文章。 認識 Lambda/Closure(1)從 JavaScript 的函式物件談起認識 Lambda/Closure(2)什麼是 Closure?認識 Lambda/Closure(3)Python 對 Lambda/Closure 的支援認識 Lambda/Closure(4)從 Scala 中借鏡認識...
阅读(2539) 评论(0)

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

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

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

English 來點輕鬆的好了!要把一組list中的資料全部加1怎麼寫? def addOne(list):     result = []     for ele in list:         result.append(ele + 1)     return result 改成函數式呢? def addOne(list):     return [] if list...
阅读(2531) 评论(0)

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

English 在命令式至函數式隨記(三)中最後談到foldRight,本來想說有機會再談,不過剛好有個範例,想說就先隨便記好了,有這之前,建議先看看: List 處理模式抽象資料型 態與 代數資料型態  前幾篇都用Python作示範,那這邊就繼續用它作示範好了,首先想想Python中兩個list的串接怎麼作?用+!像是[1, 2, 3] + [4, 5, 6]如果要在一個list前...
阅读(2463) 评论(0)

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

English 函數式的思考中心就是分解問題,舉例來說,計算list長度命令式如下: def length(list):     c = 0     for i in list:         c += 1     return c      將之改為函數式是許多介紹函數式的文章會有的範例: def length(list):     return 0 if list ==...
阅读(2308) 评论(0)

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

English 使用迴圈循序處理List中元素的問題,基本上都可轉為遞迴解,不必使用計數器,只要有辦法取List的head與tail就可以了。如果迴圈中又有迴 圈,基本上就是處理兩個問題了,函數式就是強迫你要分解問題。舉例來說: def toPFix(infix, isPost):     expr = infix if isPost else infix[::-1]     stac...
阅读(2099) 评论(0)

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

English 這一陣子練習函數式,隱隱約約發現從命令式過渡到函數式有一些模式可循,但還沒很能抓得住,在這邊略作筆記一下,另一方面,最近在看 MapReduce,也是隱隱約約感覺,這種模式,有助於使用 MapReduce 時對資料的分析,總之這是一個典型的例子之一,來試著收集更多的例子,看看能不能歸類出一些模式 ... XD 將命令式更改為函數式,需要乾淨點的程式碼與對流程的敏感度,典...
阅读(2342) 评论(0)

現代程式庫的多重角色

對於應用程式開發產能的影響,程式語言只是個出發點,現代程式庫不僅是可重用功能的中心,還扮演了規範架構流程、限制語言功能、擴充程式語義、模擬典範(Paradiam)等多重角色,有時體質不良的程式語言,因為有良好的程式庫約束了先天不良元素,反而使得原本不被看好的語言廣為接受而獲得重用。  可重用功能的集中處  基於開發程式時的可維護性與彈性,程式開發過程會不斷消弭重複性。傳統程式庫的角色,就是將重...
阅读(2009) 评论(0)

受限多重繼承的演進

觀察到兩個以上類別具有重複定義時,可考慮將重複部份抽出至新類別,使用新類別的方式之一是透過繼承,這是由下而上的繼承思考方式;如果觀察到類別已定義某些功能,為了避免在新類別中重複定義,方式之一就是繼承該類別,這是由上而下的繼承思考方式。  無論是直接支援多重繼承或提供受限多重繼承,思考重點都在於由下而上抽取出的重複,或是由上而下繼承的定義是否過於具體。  解決多重繼承複雜問題的規則過於複...
阅读(1891) 评论(0)

程式設計者的技術文筆與寫作

程式設計者是工程師?科學家?工匠或藝術家?Robert C. Martin在《Clean Code》書中第一章即談到:「We Are Authors」。Bruce Eckel在2009年於Artima Weblogs寫了一篇文章〈Writing Software is Like ... Writing〉。《Coders at Work》書中,多位大師也曾提及文筆表達能力對程式設計者的重要性。...
阅读(2937) 评论(0)

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

許多程式語言融合了多種程式設計典範(Paradigm),除了為人熟知的結構化、物件導向等典範外,逐漸也可見函數程式設計(Functional programming)的蹤影,相對於物件導向將問題具體為物件互動的世界,函數設計則往數學領域抽象化,將問題逐項分解為函數定義。  以數學形式定義問題  函數式程式設計(以下簡稱為函數式程設)經常與指令式程式設計(Imperative progr...
阅读(2278) 评论(0)

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

程式設計在某種程度上都是在消弭重複性,以提高程式可維護性來控制軟體複雜度。若從消弭重複性來瞭解物件導向中封裝、繼承、多型,就可具體瞭解這些基本原則的作用。  封裝消弭了物件的重複行為  假設你用類別基礎的Java設計僅具有name與balance的Account類別,而同事拿來建立多個物件,像是建立acct1、並為acct1.name與acct1.balance指定值,建立acct2並...
阅读(2472) 评论(0)

程式語言的特性本質(二)類別與原型的物件管理學

類別基礎(Class-based)與原型基礎(Prototype-based)為物件導向的不同風格。前者在設計時先強調物件的種類畫分,之後根據畫分的類別,建立具相同行為與結構的實例(Instance);後者先著重物件個體的行為描述,日後隨著程式演進再來擔心分類等問題。  更多內容:http://www.ithome.com.tw/itadm/article.php?c=73566...
阅读(1943) 评论(1)

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

型態系統是對底層位元組的抽象化,開發者只要瞭解型態,就可得知如何以高階操作處理資料,開發者選擇程式語言的第一步,就是如何從語法得知型態資訊,也就是決定選用靜態語言或動態語言。  具體來說,靜態語言是指變數是否帶有資料儲存型態,反之則為動態語言。  靜態語言的變數本身帶有型態資訊。例如底下的Java範例中,text宣告為String,就僅可參考String實例,若嘗試參考至其它型態,則會引發編譯...
阅读(1822) 评论(0)

Hello World 的試煉

類似Hello World的探索過程,可引導出語法層面外的許多議題  第一個Hello World範例的出現,據稱是在Brian Kernighan寫的《A Tutorial Introduction to the Language B》中,此後成為許多程式語言教學的第一個範例程式。隨著技術演進,Hello World的示範漸漸有另一種意涵,如何用最簡潔程式碼來顯示Hello Wor...
阅读(1679) 评论(0)

速食文化下的技術本質

作份早餐,多少因素要考慮?光是烤個土司、煎個荷包蛋、煮個咖啡,就得事先買好土司、蛋跟咖啡,隔天得早起料理,用餐完得清洗餐具,想到這麼麻煩,許多人寧可就近到早餐店、點份餐,中餐或晚餐大概也是類似方式解決,在速食文化下,誇張卻常見的現象,是在便利商店就能解決三餐,不少便利商店更以此作為廣告噱頭。  Hello World的本質  當面對的問題太複雜時,人們就會開始傾向簡化問題,幫助自己從複雜問...
阅读(2073) 评论(0)

Scala 起步走

        從一些簡單的語法開始,了解 Scala 的許多特性,所以就算是起步走,東西也夠多了。基本環境與指令簡單的小程式可以使用 scala 指令,編譯的事就交給 scalac,編譯想快點就用 fsc。 指令互動環境scala指令scalac與 fsc資料、變數、操作...
阅读(3633) 评论(1)

「常見程式題目」第三版

更新紀錄:第一版:最初的版本,主要以 C 語言實作為主,當時還是使用 CHM 格式製作,開啟有些問題吧!第二版:將文件改為 HTML 格式,修改了 Java 實作部份,加入更多的題目。第三版:修改了大部份的 C、Java 程式實作,並加入了 Python、Scala 實作。對於一些常見的題目,我整理在我的網站上,現在我也將之打包好了,這些題目是熟悉演算法與資料結構的常見題目...
阅读(3409) 评论(0)

山寨版 Java 深度歷險

之所以叫作山寨版 Java 深度歷險,其動機之一,就是彷照 Java 深度歷險,嘗試將一些市面上的書較少談及的東西寫出來。至於章節順序安排,則是我過去經驗中,發現最多人所忽略而引發問題的一些東西,有些問題其實都很基本,但也許是缺少訓練,或是在學習、運用的過程中,欠缺旁人的提點,而自顧自的用自己的想法實現而導致,這也是為何取名叫「Java 本質部份」的原因,因為那些東西是基本,但...
阅读(4040) 评论(3)

EJB3 入門文件(二)

        了解基本的Session Bean 與 Message-Driven Bean 撰寫方式,接下來看一些生命週期、攔截器、Timer 等服務。 ...
阅读(3677) 评论(0)
71条 共4页1 2 3 4 下一页 尾页
    个人资料
    • 访问:459074次
    • 积分:4615
    • 等级:
    • 排名:第7013名
    • 原创:70篇
    • 转载:1篇
    • 译文:0篇
    • 评论:430条
    文章分类
    最新评论