官术网_书友最值得收藏!

Preface 前言

我將多年間學習類型系統和軟件正確性的經驗匯聚起來,加以提煉,并輔以現實世界的應用,編寫了這本實用的圖書。

我一直對編寫更好的代碼有濃厚的興趣,但是如果讓我準確說出從什么時候開始走上這條道路,我會說是2015年。當時,我換了團隊,想要快速學習現代C++。我開始觀看C++會議視頻,并閱讀Alexander Stepanov關于泛型編程的著作,從一種完全不同的視角了解了如何編寫代碼。

與此同時,我在業余時間學習Haskell,一步步了解它的類型系統的高級特性。在使用函數式語言進行編程后,就能夠很清晰地理解為什么隨著時間的推移,更主流的語言開始采用函數式語言中的一些被認為理所當然的特性。

我閱讀了關于這個主題的許多圖書,包括Stepanov的Elements of ProgrammingFrom Mathematics to Generic Programming 本書中文版已由機械工業出版社出版,中文書名《數學與泛型編程:高效編程的奧秘》,ISBN 978-7-111-57658-7。——編輯注,Bartosz Milewski的Category Theory for Programmers,以及Benjamin Pierce的Types and Programming Languages。從書名就可以知道,這些圖書更偏向理論/數學方面。在學習了關于類型系統的更多知識后,我在工作中編寫的代碼也變得更好了。類型系統設計的理論與日常生產軟件之間存在直接的聯系。這并不是一個革命性的發現:復雜的類型系統特性之所以存在,就是為了解決現實世界的問題。

我意識到,并不是每個程序員都有時間和耐心來閱讀那些提供數學證明、講解深入的圖書。但我閱讀這些書并沒有浪費時間,這使我成為一名更好的軟件工程師。我認為應該有這樣一本書:以更加輕松的方式來介紹類型系統及它們提供的優勢,并關注每個人能夠在日常工作中使用的實際應用。

本書旨在全面介紹類型系統的特性,從基本類型開始,涵蓋函數類型和子類型、OOP、泛型編程和高階類型(如函子和單子)。我沒有關注這些特性背后的理論,而是通過實際應用的方式來解釋每種特性,說明如何以及何時使用這些特性來改進代碼。

我一開始打算使用C++來編寫代碼示例。C++的類型系統十分強大,并且具有比Java和C#等語言更多的特性。但另一方面,C++是一個復雜的語言,而我不想限制本書的受眾,所以后來決定使用TypeScript。TypeScript也有一個強大的類型系統,但是其語法更加容易理解,因此即使你使用的是其他語言,在學習本書的大部分示例時應該也不會有太大的難度。附錄B為本書用到的TypeScript語法提供了一個速覽表。

我希望你能享受閱讀本書的過程,并學到一些可以立即用在項目中的新技術。

主站蜘蛛池模板: 宝丰县| 阆中市| 若尔盖县| 海伦市| 临邑县| 通山县| 永泰县| 巴楚县| 绥江县| 石棉县| 岳池县| 团风县| 射阳县| 浦城县| 六安市| 阜南县| 五台县| 嵩明县| 嫩江县| 舒兰市| 扶风县| 北辰区| 大丰市| 南溪县| 页游| 凭祥市| 龙井市| 财经| 光山县| 巴楚县| 海兴县| 奉化市| 宁波市| 鹤岗市| 建湖县| 新平| 湖口县| 牟定县| 保山市| 上蔡县| 嘉禾县|