出版時間: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
無
評論、評分、閱讀與下載