C語言接口與實現(xiàn)

出版時間:2010 年8月  出版社:人民郵電出版社  作者:(美)David R. Hanson  頁數(shù):518  
Tag標簽:無  

前言

如今的程序員忙于應付大量關于.API(Application Programming Interface)的信息。但是,大多數(shù)程序員都會在其所寫的幾乎每一個應用程序中使用API并實現(xiàn)API的庫,只有少數(shù)程序員會創(chuàng)建或發(fā)布新的能廣泛應用的API。事實上,程序員似乎更喜歡使用自己搞的東西,而不愿意查找能滿足他們要求的程序庫,這或許是因為寫特定應用程序的代碼要比設計可廣泛使用的API容易。不好意思,我也未能免俗:lcc(Chris Fraser和我為ANSI/ISOC編寫的編譯器)就是從頭開始編寫的API。(在A Retargetable C Compiler;Design and Implem-entation一書中有關于lcc的介紹。)編譯器是這樣一類應用程序:可以使用標準接口,并且能夠創(chuàng)建在其他地方也可以使用的接口。這類程序還有內(nèi)存管理,字符串和符號表以及鏈表操作等。但是lcc僅使用了很少的標準C庫函數(shù)的例程,并且它的代碼幾乎都無法直接應用到其他應用程序中。本書提倡的是一種基于接口及其實現(xiàn)的設計方法,并且通過對24個接口及其實現(xiàn)的描述詳細演示了該方法。這些接口涉及很多計算機領域的知識,包括數(shù)據(jù)結構,算法,字符串處理和并發(fā)程序。這些實現(xiàn)并不是簡單的玩具,而是為在產(chǎn)品級代碼中使用而設計的。實現(xiàn)的代碼是可免費提供的。

內(nèi)容概要

  《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(英文版)》概念清晰、實例詳盡,是一本有關設計、實現(xiàn)和有效使用C語言庫函數(shù),掌握創(chuàng)建可重用C語言軟件模塊技術的參考指南。書中提供了大量實例,重在闡述如何用一種與語言無關的方法將接口設計實現(xiàn)獨立出來,從而用一種基于接口的設計途徑創(chuàng)建可重用的API。  《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(英文版)》是所有C語言程序員不可多得的好書,也是所有希望掌握可重用軟件模塊技術的人員的理想?yún)⒖紩m合各層次的面向對象軟件開發(fā)人員、系統(tǒng)分析員閱讀。

作者簡介

作者:(美國)漢森(David R.Hanson)漢森(David R.Hanson),普林斯頓大學計算機科學系教授,有著二十多年編程語言研究經(jīng)驗.他曾經(jīng)同貝爾實驗室合作開展研究工作,是適用于UNIX系統(tǒng)上的高質(zhì)量C編譯器Icc的開發(fā)者之一。

書籍目錄

1 Introduction 11.1 Literate Programs 21.2 Programming Style 81.3 Efficiency 11Further Reading 12Exercises 132 Interfaces and Implementations 152.1 Interfaces 152.2 Implementations 182.3 Abstract Data Types 212.4 Client Responsibilities 242.5 Efficiency 30Further Reading 30Exercises 313 Atoms 333.1 Interface 333.2 Implementation 34Further Reading 424 Exceptions and Assertions 454.1 Interface 474.2 Implementation 534.3 Assertions 59Further Reading 63Exercises 645 Memory Management 675.1 Interface 695.2 Production Implementation 735.3 Checking Implementation 76Further Reading 85Exercises 866 More Memory Management 896.1 Interface 906.2 Implementation 92Further Reading 98Exercises 1007 Lists 1037.1 Interface 1037.2 Implementation 108Further Reading 113Exercises 1148 Tables 1158.1 Interface 1158.2 Example: Word Frequencies 1188.3 Implementation 125Further Reading 132Exercises 1339 Sets 1379.1 Interface 1389.2 Example: Cross-Reference Listings 1409.3 Implementation 1489.3.1 Member Operations 1509.3.2 Set Operations 154Further Reading 158Exercises 15810 Dynamic Arrays 16110.1 Interfaces 16210.2 Implementation 165Further Reading 169Exercises 16911 Sequences 17111.1 Interface 17111.2 Implementation 174Further Reading 180Exercises 18012 Rings 18312.1 Interface 18312.2 Implementation 187Further Reading 196Exercises 19713 Bit Vectors 19913.1 Interface 19913.2 Implementation 20213.2.1 Member Operations 20413.2.2 Comparisons 20913.2.3 Set Operations 211Further Reading 213Exercises 21314 Formatting 21514.1 Interface 21614.1.1 Formatting Functions 21614.1.2 Conversion Functions 21914.2 Implementation 22414.2.1 Formatting Functions 22514.2.2 Conversion Functions 232Further Reading 238Exercises 23915 Low-LevelStrings 24115.1 Interface 24315.2 Example: Printing Identifiers 24915.3 Implementation 25115.3.1 String Operations 25215.3.2 Analyzing Strings 25815.3.3 Conversion Functions 263Further Reading 264Exercises 26516 High-LevelStrings 26916.1 Interface 26916.2 Implementation 27616.2.1 String Operations 28116.2.2 Memory Management 28516.2.3 Analyzing Strings 28816.2.4 Conversion Functions 293Further Reading 293Exercises 29417 Extended-Precision Arithmetic 29717.1 Interface 29717.2 Implementation 30317.2.1 Addition and Subtraction 30517.2.2 Multiplication 30717.2.3 Division and Comparison 30917.2.4 Shifting 31517.2.5 String Conversions 319Further Reading 321Exercises 32218 Arbitrary-Precision Arithmetic 32318.1 Interface 32318.2 Example: A Calculator 32718.3 Implementation 33418.3.1 Negation and Multiplication 33718.3.2 Addition and Subtraction 33818.3.3 Division 34218.3.4 Exponentiation 34318.3.5 Comparisons 34618.3.6 Convenience Functions 34718.3.7 Shifting 34918.3.8 String and Integer Conversions 350Further Reading 353Exercises 35419 Multiple-Precision Arithmetic 35719.1 Interface 35819.2 Example: Another Calculator 36519.3 Implementation 37319.3.1 Conversions 37719.3.2 Unsigned Arithmetic 38019.3.3 Signed Arithmetic 38319.3.4 Convenience Functions 38819.3.5 Comparisons and Logical Operations 39519.3.6 String Conversions 399Further Reading 402Exercises 40220 Threads 40520.1 Interfaces 40820.1.1 Threads 40920.1.2 General Semaphores 41320.1.3 Synchronous Communication Channels 41720.2 Examples 41820.2.1 Sorting Concurrently 41820.2.2 Critical Regions 42320.2.3 Generating Primes 42620.3 Implementations 43120.3.1 Synchronous Communication Channels 43120.3.2 Threads 43420.3.3 Thread Creation and Context-Switching 44620.3.4 Preemption 45420.3.5 General Semaphores 45720.3.6 Context-Switching on the MIPS and ALPHA 459Further Reading 463Exercises 465Interface Summary 469Bibliography 497Index 505

章節(jié)摘錄

插圖:A client is a piece of code that uses a module. Clients import inter-faces; implementations export them. Clients need to see only the inter-face. Indeed, they may have only the object code for an implementation.Clients share interfaces and implementations, thus avoiding unnecessarycode duplication. This methodology also helps avoid bugs —— interfacesand implementations are written and debugged once, but used often.An interface specifies only those identifiers that clients may use, hidingirrelevant representation details and algorithms as much as possible.This helps clients avoid dependencies on the specifics of particularimplementations. This kind of dependency between a client and animplementation —— coupling —— causes bugs when an implementation.

媒體關注與評論

“至今好像還沒人寫過關于如何設計、實現(xiàn)和有效使用庫函數(shù)的指南,Hanson的力作填補了這一空白。這是一本可與SoftwareTools比肩的作品,值得所有的C語言程序員珍藏。”  ——W.Richard Stevens已故知名UNIX和網(wǎng)絡專家“我向每位C語言程序員推薦這本書。你們早就該重視書中所描述的各種技術了?!薄  狽ormanRamsey貝爾實驗室研究員“從C語言新手變成高手的必讀之作;”  ——亞馬遜讀者評論

編輯推薦

《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(英文版)》特色:接口描述簡單明了,程序員可將此書用作相關接口的參考手冊深入剖析如何將數(shù)據(jù)結構及其相關算法打包成可重用的模塊分析了全部24個,API和8個示例應用的源代碼揭秘了許多鮮有文檔的C語言編程技巧可重用的軟件權塊是構建大規(guī)??煽繎贸绦虻幕?,創(chuàng)建可重用的軟件模塊是每個程序員和項目經(jīng)理必須掌握的技能C語言對創(chuàng)建可重用的AP0提供的語言和功能支持非常少,雖然C程序員寫應用時都會用到API和庫,但卻很少有人去創(chuàng)建和發(fā)布新的能廣泛應用的API《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(英文版)》介紹用一種基于接口的設計方法創(chuàng)建可重用的API,這一方法將接口與實現(xiàn)分離開來,且與語言無關書中詳細描述了24個接口及其實現(xiàn),便于讀者深入了解此方法這些接口涉及很多計算機領域的知識,包括數(shù)據(jù)結構、算法、字符串處理和并發(fā)程序《C語言接口與實現(xiàn):創(chuàng)建可重用軟件的技術(英文版)》是C語言領域的的經(jīng)典名著,出版十余年仍暢銷不衰,是幾代程序員倍加推崇的力作。

圖書封面

圖書標簽Tags

評論、評分、閱讀與下載


    C語言接口與實現(xiàn) PDF格式下載


用戶評論 (總計10條)

 
 

  •   內(nèi)容不必多言,印刷紙張也好。賣家包裝很結實。
  •   但是怎么我的書后面破損了。
  •   似乎是買了本舊書啊,封面已經(jīng)磨損了。
  •     如題,哪位朋友對這本書的課后習題敢興趣,可以在這里一起討論討論。
      我在看這本書的時候,對每章課后習題都不是很理解,不知道該怎么解決,還希望與各位一起討論。
      
      
      豆娘說我評論太短了~
      
      
      
      還是有點短~
  •     
      我說的“好”,指的是通順/明白/準確,并不是說有什么文采之類的。
      
      我粗略讀過這本書,感覺這書也算翻譯得不錯了,準確性很好。
      
      前一段看到dang-dang和amazo-n上都有人在惡評這本書,雖然不多,卻都很惡毒。
      
      就目前情況來說,翻譯得好的書不算多,翻譯得不好的書一大堆,對著爛書罵兩句也沒什么,挑挑書中的翻譯錯誤/筆誤也沒什么,對著一本翻譯不錯的書,胡亂罵街,算怎么回事!
      
      再者說了,2003年機械的版本也早就絕版了,沒什么利益沖突吧?!
      
      唉,總有喜歡吃屎的瘋狗,總有腦有貴恙的弱智,劣幣總是淘汰良幣,真TMD!
  •     相對于較抽象的主題-“接口”,內(nèi)容基本上過于豐富了(要建小"類庫":))。僅僅需要了解“接口”的話,隨便看看開始幾章即可,執(zhí)著于算法的可以從reference去展開...
      
      書中源碼的編排方式到時值得商榷的,個人比較不習慣這種先給占位符再隨后展開的代碼提供方式,未必比直接列出更清晰,特別是對于書中的代碼量都不甚大這種情況。
  •   剛看到內(nèi)存管理,課后題完全不知所云,真是覺得自己菜的無以復加
  •   我也是照著這本書抄了抄代碼,感覺難度挺高的,不過估計過兩遍以后對C的理解會比之前只局限于語法要清晰的多了。
  •   嗯,也只能咬牙上了
  •   作者/出版社的網(wǎng)站/頁面去看看吧
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7