天天看點

《數學與泛型程式設計:高效程式設計的奧秘》一第1章 内容提要

内 容 提 要

不懂數學,就無法了解世界。

——羅吉爾·培根(Roger Bacon),《大著作》(Opus Majus)

這是一本談程式設計的書,但是它與大多數的程式設計書都不太一樣,因為除了算法和代碼之外,本書還會給出數學證明和一些講述從古代到20世紀各種數學發現的曆史材料。

另一個更為具體的特色在于:這是一本談論泛型程式設計(generic programming)的書。泛型程式設計是出現于20世紀80年代的程式設計方法,在20世紀90年代随着C++标準模闆庫(Standard Template Library,STL)而變得流行起來。我們可以這樣定義它:

定義1.1 泛型程式設計是一種專注于對算法及資料結構進行設計的程式設計方式,它使得這些算法及資料結構能夠在不損失效率的前提下,運用到最為通用的環境中。

用過STL的讀者可能在想:“不對吧?泛型程式設計的概念隻用這麼簡單的一句話就能定義出來?模闆和疊代器(iterator)等特性怎麼沒有提到呢?”其實那些特性應該說是工具,它們使得程式設計語言能夠支援泛型程式設計。程式員固然應該學會高效地使用那些工具,然而泛型程式設計主要談的是程式設計态度(attitude),而不是某一套工具。

筆者認為,所有的程式員都應該抱持這種程式設計态度,也就是說,都應該試着以這種通用的方式來編寫代碼。如果能夠寫出高品質的泛型程式,那麼很容易就能使用并修改其中的各個元件。這要比那種采用硬代碼來編寫的程式好很多,因為後者會針對具體的應用程式來給資料結構、算法以及接口施加一些毫無必要的限制。把程式寫得通用一些可以令它變得更為簡潔,也更為強大。

繼續閱讀