C++ 在哪些設計原則的指導下,變得越來越複雜?
例如:「儘可能兼容 C 語言」,「未被用到的特徵不會產生額外的性能開銷」等。
其實C++他爹的終極哲學是這樣的:我不希望我個人的喜好限制了C++的功能的選擇。也就是說只要能有的全部都要有,而且最好都用Library來做,語言只提供最小的那部分——當然了,還要兼容C語言。你們可以用C語言,可以用C+擴展,也可以完全不用C語言,這沒有關係,反正C++他爹喜歡什麼跟你沒關係。只要你要,C++就嘗試提供。
所以你們會看到各種五花八門的C++的新提案,當然了,選擇什麼通過,很大程度上已經是按照實現的難易程度和維護使用這些功能的代碼的難易程度來決定的,不是因為誰的什麼喜好。
C++之所以那麼複雜,就是因為不想限制你的想像力。對比起來C#就不一樣了,你只能做OO,做少量的FP,其他的什麼模式寫進C#都無比彆扭。C++就不是這樣。
所以你們只要掌握你們所需要的C++那個小小的子集就好了,你們完全不需要擔心完全學會C++太難如何如何,反正你們是學不會的(逃
反正同一個程序基本不可能使用C++所有的部分,那你為什麼要擔心學不會template會影響你使用stl來幹活呢,這些想法都是多餘的。就像漢語一樣,那你會因為學不會所有漢語就覺得自己講話沒有達到應有的效果嗎——當然了,話說出來肯定很糟糕,但反正聽的人懂了,他們說得也聽得懂,這就夠了。
我看就是題目中提到的兩點
只要不裝B,C++就不會變得越來越複雜。
輪子哥的回答讓人想起一件帶著蛋蛋的憂傷的往事:
A:我是學VHDL好還是Verilog好?各有優勢……(此處省略幾千字),糾結啊!
B:你自己玩的話可能會一種就夠了,但以後你不需要讀別人代碼嗎?不需要參考和學習別人的設計嗎?不需要與人配合工作嗎?所以,騷年,最後終究是要兩者都學的,別糾結了。同理,C++……不使用複雜的功能和特性,也可以很好的用來做項目。
其實我覺得標準發布者.etc再親民一點就好啦,比如把String處理函數等丟到STL庫中,過了好久才有一些東東從bosst丟到stl中,何必呢.......主兼容次性能.話說不兼容就好嗎?其實不兼容同樣是一種複雜度.
推薦閱讀:
※C++ 程序員怎麼寫簡歷?
※C++ 的 sizeof 是怎麼實現的?
※C++20 有哪些值得注意的新特性?
※剛學完c++primer的前18章,為了準備春招,現在是刷leetcode 更好,還是做些小項目?
※學習 OpenGL 用哪個版本好?