日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

好语言,就该善用它——《C++语言的设计与演化》读书笔记

發布時間:2023/12/31 c/c++ 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 好语言,就该善用它——《C++语言的设计与演化》读书笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?  C++真是讓人又愛又恨的語言之一。很多人都說C++功能強大,其實很多時候他們都是足夠幸運的,沒有遇到太多需要用代碼雜技解決的需求,或者沒有親身維護太多充滿“高技巧”的代碼的項目。我都遇到過,所以最后終于決定把Java當作自己的第一語言。C++作為以愛好為主的研究語言了。

  從2004年開始,我就陸續看了一些C++語言的書。學完C語言后,覺得它在某寫領域過于中級語言化了,我需要一種更高層的抽象方式,所以決定初探C++。那時也未有學習Java或動態語言的想法。一開始看得是入門級別的《C++ Primer Plus》,流水帳似的把語言的基本功能羅列了一遍,看后沒有學到什么思路。其次看了較為全面的《C++ Primer》,這本書又不失深度,講了一些例如虛函數表,模板參數推導等高級話題。看完覺得挺有用的,自己試著寫了一個四則運算表達式解析器,挺滿意的。當時尚未有面向對象思想的建立,仍然將C++看待為一個增強版的C工具箱。最后看了兩本重量級的知名書,《Effective C++》和《More Effective C++》,講了很多關于STL的內容,當時的水平接受起來確實有困難,只能說讀完了文字,但是沒有深入的研究。   直到最近,同事要寫一個游戲編輯器,用到了QT,所以我又重溫C++了。這次有了Java語言和面向對象編程的經驗,看起來就覺得C++值得深入研究的地方太多了。幸好C++的創始人Bjarne Stroustrup曾經寫過一本《C++語言的設計與演化》,正好拿來當我的復習教材。這本1995年的書,16年后的今天讀來,仍是讓人受益匪淺,尤其是那些和我一樣,   1.僅僅將C++作為一個增強的C語言工具包的人。   2.將C++作為代碼雜技試練場的人。   3.對C++語言各種功能不能系統掌握的人。   書中講到的基本是關于如何設計語言、如何給語言增加新功能、如何標準化一門語言之類的問題。那么,對于我們這些暫時不會設計一門語言,至多設計類庫、框架乃至終端應用的人來說,可以學到什么呢?我就擇要的列出幾個有啟發性的章節,與大家探討。   第三章談新功能的采用。作者認為任何人都能找到增加一個新功能的理由,然而這么做是不健康的,因為很難保證和既有功能的連貫性。所以,決定增加新功能時,不能單純靠貌似合理的理由,而是要建立在深入實驗的基礎上。   第六章談到工程質量與語言是否功能多,無必然聯系。工程質量的提升主要應著眼于設計,而不是眾多花哨的新功能。   該章還談到是否接受一個新功能的標準:1.是否表述精確,大家是否能夠理解這個功能;2.這個擴展的道理是什么,我們為什么需要它;3.它是否已經被實現過;4.對既有代碼的影響;5.對效率和兼容性帶來的影響;6.這個改變如何用文檔描述,如何教給大家;7.有沒有不引入這個擴展的理由;8.有沒有其它去實現這個功能。這些標準對庫、框架、應用程序設計者都有參考價值。引入新功能而不破壞既有工程結構的一致性、連貫性,是個很值得下工夫的任務。作者在第九章又重新強調了這一點。   第八章談到了盡量避免使用強制類型轉換。除了一些系統底層接口,過多的強制類型轉換必然會破壞類型系統。   第九章還談到C++程序員應該將程序看待為類型、函數、語句的信息集合,而非字符和文件的集合。   第十四章至第十七章應該細讀,這四章分別講了C++四個重要的語言功能。運行時信息識別(RTTI),模板,異常,命名空間。每一個功能都有一些使用時候的注意事項。例如RTTI不可誤用,只有當設計從外部信息源(例如文本文件)中制造對象時,才可以合理的使用。模板可以解決一些對繼承的誤用。如何在C++的終止式異常處理方式下處理需要重試型的異常情況(例如IO錯誤)。如何合理利用命名空間減少各種庫中名稱的沖突,避免污染全局命名空間。這些都是C++程序員經常容易出錯的領域,同時也可以給例如博主這種從Java語言出身的人一個通過比較法來學習語言的機會。   第十八章也即最后一章,講了宏(macro)的害處。除了#include之外,應盡量避免用宏,因為其可以擾亂開發人員對源代碼的理解和維護。尤其是慎用和編譯器的實現相關的#pragma。   綜觀全書,可以體會到:   1.C++是一個能非常得體得將功能、設計、運行效率、空間占用等因素平衡的語言。我們這些類庫、框架、應用設計者,也要在實際代碼中學習這種平衡的技藝。   2.對于新功能的加入要十分的謹慎和清醒。切忌破壞既有代碼、工程、設計的一致性、連貫性、內聚性和可用性。好的工程還是要注重設計。只有功能與設計不脫節,才不會使得過多的新功能難以維護。   3.對于每一個語言功能的運用,都必須建立在充分理解其設計意圖的基礎上。RTTI,模板,異常都是非常容易被誤用的領域。同理,Java語言的反射,RMI亦然。   作者用近似編年史的方法回顧了C++主要功能的萌發、構思、實驗、實現、應用這一連貫流程,希望大家和我一樣,在讀這本書的過程中,能夠對C++語言本身,C++和其它語言的比較,以及如何接受與設計新功能,新擴展這些問題有一個更深入的瞭解。有很多類似C++這樣的全面、高效、功能豐富的語言,如何善用它,如何用這種語言設計出符合其設計哲學的庫、框架、應用來,這是我們始終應該思考的話題。 (本文為作者原創,如需轉載請聯系eastarstormlee@gmail.com或http://weibo.com/eastarlee)

轉載于:https://blog.51cto.com/eastarlee/717320

總結

以上是生活随笔為你收集整理的好语言,就该善用它——《C++语言的设计与演化》读书笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。