TOP
英國出版界指標大獎肯定!A.F. Steadman 獲年度作家,《史坎德》系列帶你踏上熱血奇幻旅程
C#函數式程序設計:經典編程技術在現代項目中的應用(簡體書)
滿額折

C#函數式程序設計:經典編程技術在現代項目中的應用(簡體書)

商品資訊

人民幣定價:45 元
定價
:NT$ 270 元
優惠價
87235
絕版無法訂購
無法訂購
商品簡介
作者簡介
名人推薦
目次
書摘/試閱

商品簡介

《C#函數式程序設計:經典編程技術在現代項目中的應用》絕大部分例子通過微軟.NET平臺上的C#4.0語言來實現。少數幾個例子採用其他語言,但是它們只是起演示作用。如果讀者想測試這些例子,但是當前使用的並不是C#4.0或VisualStudi02010版本,則用C#3.0或VisualStudi02008也能得到同樣的效果—在C#4.0中,新增加的功能並不是很多,而且這些功能都沒有應用到例子中。但是,有幾個例子利用了.NETFramework的功能(如ParallelExtensions),這些功能只出現在.NET4.0中。《C#函數式程序設計:經典編程技術在現代項目中的應用》介紹函數式程序設計的基本概念,以及如何把這些概念應用到C#語言中。作者儘量提供具有實用背景的示例,但是大多數例子只考慮到語言因素。函數式程序設計是一種與代碼、算法和程序結構有關的技術:這一點不同於程序的體系結構。當然,它需要與程序的體系結構相兼容。須知,有時很難在太理論化與偏離重點之間做到理想的平衡,但是作者已盡了最大的努力。在編寫《C#函數式程序設計:經典編程技術在現代項目中的應用》時,作者專門開發了一個函數式的輔助代碼庫,即FCSlib(FunctionalCSharpLibrary)。讀者在自己的項目中可以隨意使用這個庫,但是需要指出的是,該庫無法提供任何保證。包含這個庫代碼的下載文件(有關下載文件的更多信息,請參閱“源代碼”一節的內容)中還包括一個應用於FCSlib代碼的LGPL許可文件。

作者簡介

OliverSturm有20多年的專業軟件開發經驗。他是應用程序體系結構、程序設計語言和DevExpress開發的第三方NET工具等多個領域的專家。自2002年開始,他的主要興趣在於NET平臺。Oliver曾在許多國際會議上發表過演說,編寫了20多個培訓課程,並在雜誌上用英語和德語發表了100多篇文章。他也曾從事計算機基礎編程教學15年之久。由於他對NET社區所做的貢獻,因此多次獲得微軟英國最佳C#程序員稱號。以蘇格蘭為據點,Oliver主要從事自由諮詢師和培訓師的工作,同時還是國際諮詢公司thinktecture的顧問。吳文國,博士,溫州大學物理與電子信息學院副教授。其研究方向是計算機圖形學和地球物理及探測技術,主要從事面向對象程序設計、數據結構等基礎課程的教學工作。他工作之餘還從事軟件開發和翻譯工作,已翻譯出版了《交互式計算機圖形學:基於OpenGL的自頂向下方法(第4版)》、《UNIX原理與應用(第4版)》等10多本計算機圖書。另外,他還在《計算機輔助設計與圖形學學報》、《中國物理快報》、《電子學報》等雜誌上發表過多篇文章。

名人推薦

《C#函數式程序設計:經典編程技術在現代項目中的應用》提供了眾多的不同類型實例,這些實例結合了多個方法解決不同領域里的問題。既包括了并行計算和高性能計算等復雜的問題,也包括了Web服務和尚業邏輯實現等簡單的用例。《C#函數式程序設計:經典編程技術在現代項目中的應用》希望幫助程序員在C#語言里找到問題的解決方案,并向讀者介紹C#函數式編程的優點和缺點。《C#函數式程序設計:經典編程技術在現代項目中的應用》的主要目的是幫助程序員最大限度地利用已知的程序設計技術。

目次

第Ⅰ部分函數式程序設計引言第1章函數式程序設計簡史1.1函數式程序設計簡介1.2函數式程序設計語言1.3與面向對象程序設計的關係1.4小結第2章函數式程序設計思想在現代項目中的應用2.1控制副作用2.2敏捷開發方法2.3聲明式程序設計2.4函數式程序設計的定向思維2.5用C#實現函數式程序設計的可行性2.6小結第Ⅱ部分C#函數式程序設計基礎第3章函數、委託和Lambda表達式3.1函數與方法3.2重用函數3.3匿名函數與Lambda表達式3.4擴展方法3.5引用透明3.6小結第4章泛型4.1泛型函數4.2泛型類4.3約束類型4.4其他泛型類型4.5協變與逆變4.6小結第5章惰性列表工具:迭代器5.1什麼是惰性5.2用.NET方法枚舉元素5.3迭代器函數的實現5.4鏈式迭代器5.5小結第6章用閉包封裝數據6.1動態創建函數6.2作用域存在的問題6.3閉包的工作機制6.4小結第7章代碼即數據7.1.NET中的表達式樹7.2分析表達式7.3生成表達式7.4.NET4.0特性7.5小結第Ⅲ部分用C#實現常用的函數式設計技術第8章局部套用與部分應用8.1參數的解耦8.1.1手動局部套用8.1.2自動局部套用8.1.3調用局部套用函數8.1.4類上下文8.1.5FCSlib庫的內容8.2調用函數的各部分8.3參數順序的重要性8.4小結第9章惰性求值9.1惰性求值的優點9.2傳遞函數9.3顯式的惰性求值9.4惰性求值方法的比較9.4.1可用性9.4.2效率9.5惰性求值方法的選擇9.6小結第10章緩存技術10.1記住以前結果的重要性10.2預計算10.3緩存10.3.1深度緩存10.3.2緩存的幾個考慮因素10.4小結第11章遞歸調用11.1C#中的遞歸11.2尾遞歸11.3累加器傳遞模式11.4後繼傳遞模式11.5間接遞歸11.6小結第12章標準高階函數12.1應用運算:Map12.2使用篩選條件:Filter12.3累加操作:Fold12.4LINQ中的Map、Filter和Fold12.5標準高階函數12.6小結第13章序列13.1何為列表推導13.2用函數方法實現迭代器13.3值域13.4限制13.5小結第14章由函數構建函數14.1組合函數14.2高級的部分應用14.3各種方法的綜合14.4小結第15章可選值15.1空值的含義15.2可選值的實現15.3小結第16章防止數據變化16.1變化不總是件好事16.2錯誤的假定16.2.1靜態數據受歡迎16.2.2深度問題16.2.3克隆16.2.4自動克隆16.3實現不可變容器數據類型16.3.1鏈表16.3.2隊列16.3.3非平衡的二叉樹16.3.4紅黑樹16.4持久數據類型的替代選擇16.5小結……第Ⅳ部分函數式設計的實際應用

書摘/試閱



可以看出,可以根據受擴展方法支持的字面類型調用擴展方法,也可以根據此類型的變量調用擴展方法。SecondElement方法甚至擴展了一個泛型接口類型,在示例代碼中這個類型用傳入的int數組來實現。但是同一個接口可以由不同的集合類型來實現,因此這個函數具有廣泛的應用。使用一個可以為一大群類型打開一個函數的參數類型是值得推薦的做法,但是利用擴展方法可以使得這樣的輔助函數變得容易使用,更加直觀。
在本書的后面章節中,讀者將會看到有關擴展方法如何成為標準.NET機制的基礎等令人感興趣的細節內容,以及對許多標準擴展方法的詳細介紹。
3.5 引用透明
在指令式程序設計中,編寫一個計算機程序意味著定義一個為實現某個具體目標而需要的操作序列。在這個序列中,需要定義狀態和狀態的轉換——A狀態如何轉換到B狀態,A狀態和B狀態的具體內容,以及什么時候從A狀態轉換為B狀態。當人們說指令式程序設計都是與狀態有關時,就是指這個意思。
從理論上講,一個序列程序可以逐行編寫,程序的執行過程是從頂部到底部并在底部結束。實際上,即使在CPU級,也總是有工具提高程序設計的效率。程序設計語言提供了函數、方法以及其他模塊,這些都可以用來增加問題的抽象性。在指令式程序設計中,這些模塊的基本作用是防止代碼重復,把代碼分解成更容易管理的函數級模塊。指令式程序設計的最大問題之一是隨著時間的推移,模塊會變得越來越大。這在代碼庫中情況尤為突出。
由于指令式程序設計把重點放在執行序列上,因此函數和方法的引用總是不透明的。這是指,即使用相同的一組輸入參數(或者沒有參數)調用函數,也無法保證每次都得到相同的結果。函數的實現經常要用更大作用域中的變量(例如類級別的字段),這些變量通常稱為全局變量。正如前面虛構的由無數行代碼組成的無窮序列例子中一樣,選取的函數和方法必須按某個特定順序進行調用,這樣它們之外的狀態才會與它們的算法相符。
引用透明正好與此相反。這個術語可以應用于任何表達式,它可表示這樣的意思:表達式可以用表達式的值取代而不會影響程序,也就是不會影響使用此替換操作的算法的最終結果。
在數學上,表達式總是引用透明的,很容易找到這方面的例子。例如,在任何數學情形下,表達式3+2都可以用5來代替,而且不會改變其本意。遺憾的是,在計算機程序設計中,情況并非都如此。
有些表達式或函數絕對不可以透明引用,因為它們的作用就是返回改變后的值,或者每次返回不同的值。在.NET中,這些例子包括DateTime.Now、File.ReadByte()或Console.Read()。在C#中,返回值類型為void的函數不可以作為表達式,因此它們不能透明引用。
函數式程序設計中一個重要的概念是在函數實現時避免出現副作用。這個主題與引用透明的主題非常接近。純函數是指一個不會有任何副作用的函數,即一個只從一組輸入參數計算得到返回值的函數。這樣的函數可以調用其他函數作為其算法的一部分。它可以訪問作用域之外的數值,前提是它們是引用透明而且絕對不會發生變化的。想象一下,一個算法引用Math.PI值——這是允許的,因為被訪問的對象是一個常量。

購物須知

大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。

特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。

無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。

為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。

若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

優惠價:87 235
絕版無法訂購

暢銷榜

客服中心

收藏

會員專區