瞭解C語言,是否表明瞭解C ++的一半?

C語言幾十年來一直是軟件開發的一種主力語言,若是我學習了C語言,這是否意味着我至少了解C ++的50%?算法

您已經有了答案。不,你沒有。編程


 

我想向您展現另外一個方面。在編程語言設計中,咱們談論正交特徵。這意味着特徵會打開一個正交尺寸,這意味着您能夠將新特徵與現有特徵結合。OOP不是一個新的維度。這只是一種適用於全部語言的設計模式。若是您徹底瞭解C,那麼使用C進行OOP就沒有問題。所以,您應該熟悉類和數據的隱藏和繼承,多重繼承和虛擬繼承。多數民衆同意在只是偶然的。C在這裏不支持您,可是全部這些均可以用C來表示。運算符重載和命名空間是一個很大的幫助,可是您也可使用C來管理它。所以,具備完善的C知識,您將成爲一名優秀的Java或C#開發人員(甚至更好),而且您將享受這些語言所提供的支持,而且討厭他們要求您提供的限制。您還將享受C ++在此方面爲您提供的支持。您將不受限制。設計模式

可是模板不能用C.,C#或Java表示他們很強大。編程語言

若是整個C是一個維,包括OOP和其餘全部內容,則能夠執行程序1,另外一個2和另外一個3,依此類推,您擁有無限的可能性。函數

如今,假設您添加了另外一個維度,例如「模板」。您已經知道C,因此如今您的三個程序分別是(0,1),(0,2)和(0,3)。學習

在C語言中,您可使用幾種數據類型的數據來評估表達式。在C ++中,您能夠計算不帶數據的表達式,您能夠評估數據類型並使用預先計算的屬性和功能構造新的數據類型。測試

所以,如今您還能夠開發軟件(1,1),(1,2),(1,3)和(2,1),(2,2),(2,3)和(3,1), (3,2),(3,3)。還有(4,1),(4,2),(4,3)…優化

有了新的維度,您的可能性不只會加倍,並且還會不斷增長。您的可能性仍然是無限的,但您的表現力倒是平方。設計


 

在C中,您能夠編寫將函數做爲參數並返回結果做爲函數的函數。3d

在C ++中,您能夠編寫將模板做爲參數並評估新模板的模板。這使您能夠將編譯時間用做運行時間。您能夠經過編寫建立解決方案的模板算法來在編譯時建立解決方案。這稱爲模板元編程。

您還能夠建立模板,這些模板能夠在運行時調用的編譯時建立優化的函數。在最佳狀況下,您能夠徹底刪除該功能。

想象一下一個操做兩個整數的程序。在C中,您能夠調用如下函數:

結果= add(1,2);

在C ++中,您能夠編寫一個模板:

結果= add <1,2> :: value;

「結果」將相同。可是C ++版本不須要任何CPU功能。它將在編譯時進行評估。add是一個模板,

根據其參數生成數據類型。結果將是具備值爲3的靜態常量「值」的數據類型。所以,在運行時沒有函數調用,只是將常量值3分配給結果:

結果= 3;

想象一下,您須要一組精心設計的預先計算的值。我會在編譯時預先計算它們,而您必須在運行時預先計算它們。您必須手動執行此操做。我有一種語言能夠在其中編寫程序。若是算法更改,我將更改算法。您必須重複全部計算。

我甚至能夠編寫一個程序來編寫程序,而後再編寫程序。

一個例子:個人一位朋友在一家CAD公司工做。咱們提供2D和3D軟件。所以,咱們在2d中有生成點,在3d 中也有生成點。以及每一個尺寸的線段和多邊形等。

Polygon2d p;

Polygon3d q;

他改寫了。如今他們有了模板,能夠在2d和3d中生成點和全部其餘尺寸。

多邊形2 p;

多邊形<3> q;

多邊形<4> r;

對於模板,數據類型Polygon具備參數。

該代碼變得更少,更一致,測試更多。使用模板編程更容易出錯,冗餘更少,更快。

所以,在您必須知道一個維度以前:一條線。您能夠從0到100%完美地走這條線。這條線很是重要。全部運行時軟件都遵循這一原則。可是如今您有了一個區域,只知道該區域中的一條線。如今,您能夠編寫建立所需軟件的軟件。

如今,您須要在從未被視爲C,C#或Java開發人員的領域得到經驗。

所以,瞭解C語言未必就意味着瞭解C++的一半,就比如您上了大學就未必都能知道高中的知識。這只是將方向更改成新的維度,您只能從新開始學習。可是,您對該領域的瞭解越多,您就越有能力成爲一名有潛力的開發人員,而且可以思考在C,C#或Java中沒法表達甚至沒法考慮的解決方案。

今天就講到這裏啦,你們記得點贊收藏,分享轉發,關注小姐姐哦!

相關文章
相關標籤/搜索