初學編程,選C還是選C++,你選對了嗎


如果手頭有一個強大的C ++編譯器,切勿使用C。

如果需要,可以使用禁止C ++的所有功能的編碼約定,包括標准C ++庫,異常,RTTI以及C ++符號修飾。

但是,C ++具有許多可以編寫代碼的功能,更具可讀性…無需額外費用,更易於維護……無需額外費用,運行更快……無需額外費用,開發速度更快……無需額外費用,可以擴展並開放以進行關鍵更改……無需額外費用。

所謂成本,是指運行時性能,可執行文件大小和內存使用情況。但是,如果您願意做出一些取舍,事情可能只會變得更好。


 

一些細節:

1.在最基本的層次上,可以從更豐富的語法和關鍵字中受益。如auto,decltype,typename,using。在正確的上下文中嵌套信息。使用名稱空間,限定常量,類型名和嵌套的typedef。其中許多也涉及。還有一些語言功能可以消除C語言的冗長和晦澀:閉包vs f(void *),模板函數vs宏。

2.C程序是水平層,一層在另一層之上,抽象是一個void *。相同的信息需要反復編碼,然后所有方面都反映了如何在一個方面實施這種更改。在C ++中,可以一次定義信息並將其傳播以創建數據類型,匹配生產代碼以及診斷所有這些維護類型安全且無運行時開銷的信息。可以輕松編寫通用代碼。由於重載,模板功能和類型特征,可以在不同的上下文中重用功能較小或較大的代碼塊,並可以任意組合。

僅從智能宏起使用模板功能可以使您受益匪淺。然后使用RAII再也不會遇到相同的“忘記在返回路徑上放下鎖”了。元編程將幫助您生成編組或診斷代碼等。這些都不需要異常或C ++ lib或接觸面向對象的編程。


 

這里有一個提示:C ++庫之外的許多工具實際上不需要鏈接到C ++庫二進制文件。C ++編譯器能夠生成更好的優化代碼的原因很多。強類型系統(查找強別名),使用const類型和const表達式。然后,用作智能宏的模板函數可以消除循環,並且許多元代碼可以解析編譯時和實際調用中的條件。

在不同的上下文中再次重用通用代碼的能力意味着更少的代碼編寫。C ++允許以較小的片段來破壞程序,從而可以進行更精細的測試和/或通過不同的橫截面而不僅僅是層。測試是現代敏捷開發的基礎。缺乏測試通常源於不良的測試能力,阻礙了開發,阻礙了重構並鼓勵了技術債務的積累。

C的局限性傾向於使人們傾向於使用特定的分層代碼。某些類型的抽象無法表達,因此位最終散布在代碼庫中並被復制。沒有辦法將它們作為功能實體一起進行測試。只要新功能適合現有體系結構,一切都將適中。當需要進行一種顛覆內部層次結構的變革時,這確實令人痛苦。有很多代碼重寫,包括測試。風險很大。


 

總結一下,C ++具有許多小而強大的功能,這些功能累計會帶來巨大的不同。它們中的許多易於掌握,可以在現有的C代碼庫中使用。其他可能在重構或技術債務清除期間添加。甚至元編程也可以逐漸豐富類似C的代碼。

今天就講到這里啦,想了解C語言與C++的,可以關注我。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM