我當然會說「我不完全同意這一點。」如果這是汽車行業,那麼你可以同樣說:「現在我們有塑料和碳纖維,你不需要金屬來製造汽車。當然,可以用塑料製造汽車(除發動機和輪軸等之外)。碳纖維,但同時它不是很實用,也不是「最佳選擇」(除非你正在經營一級方程式團隊,或在法拉利,保時捷等工作),所以期待福特,奧迪,雪佛蘭,菲亞特和斯柯達將繼續在汽車中使用大量鋼材 - 現在他們比5年前使用更多的塑料,而且超過50年前的時間 - 因爲這對現代機械和技術是正確的 - 但它並不意味着金屬「無用而且不再需要」
就像生活中的很多事情一樣,共享庫的使用(DLL是Windows術語,存在「.so」和其他OSe中的「.dynlib」 s)或不是一個簡單的「是或否」的問題,但是「這裏真的很有用」的滑動範圍「這裏實際上使你的生活變得困難和沒用」。
模板很適合解決一些問題,但對於大型項目,即使使用模板,WHOLE項目也不能(幾乎不能)重新編譯爲一個單元。查看諸如LLVM + Clang之類的項目,它們使用C++構建編譯器。是的,它在適當的地方使用模板,它使用沒有模板的類來處理其他事情。但這並不意味着你不需要分割項目(或從其他項目引入代碼)並使用共享庫,這絕對不是一個壞主意。
這真的取決於你想解決什麼問題,以及你如何解決這個問題。不是所有的東西都應該用C++中的模板來解決。當然,模板適用於某些類型的解決方案。其他問題對模板沒有意義。
我有我寫了一個Pascal編譯器,如果我搜索template
,像這樣:
$ grep template *.cpp *.h
expr.cpp:template<>
stack.h:template <typename T>
stack.h:template <typename T>
stack.h:template<typename T>
你可以看到,我的代碼不使用許多模板。這是否意味着你的同事不能使用模板幾乎完全編寫編譯器?可能不會。但對我而言,模板並不是我編譯器中大多數問題的自然解決方案。 C++不僅僅是一種模板語言,它的類和功能也沒有模板。話雖如此,我可能應該看看使用更多的模板代碼...我認爲有一些地方可以提煉...另外,如果我們有一個項目,您可以在其中創建幾個可執行文件,這些文件可以在相當大的程度上共享某些代碼(例如一個或多個GUI組件,數據庫接口,執行一些計算的數學邏輯, (複雜)文件格式等),使用共享庫是生成小型可執行文件的絕佳方式,而不是將該代碼的[大部分]複製到每個應用程序中。
前提是錯誤的。我可以編寫不使用模板的C++程序。 –
我使用類編寫程序,並且只有在保證模板的情況下才使用模板。很多時候不需要模板,特別是當只有一個類的實例時。 –
DLL和共享對象在您需要使用它們或何時可以幫助您的程序時很有意義。告訴你的朋友開始閱讀書籍,並開展更廣泛的項目。繼續你的生活,並停止與你的朋友討論。 –