Re: [分享] 學習 c++ 的文章

作者: Sidney0503 (Sidney0503)   2016-07-06 11:10:05
※ 引述《descent (「雄辯是銀,沉默是金」)》之銘言:
: http://blog.csdn.net/pongba/article/details/1611593
: 你应当如何学习C++(以及编程)(rev#1)
: http://blog.csdn.net/pongba/article/details/1930150
: 学习C++:实践者的方法(Beta1>)
: c++ 受害者才寫得出來。
我的看法完全不一樣
開場文章就說Effective C++和Modern C++ design這些書籍充斥太多"細節"
More Effective C++作者新書Effective Modern C++ 大概又會被這位寫手笑太繁瑣
甚至直接說boost大部分功能沒用 在我看來都是這位文章寫手的誤解
事實上這些書重點不是細節 而是觀念
Modern C++ design重點是把設計模式結合C++樣板的想法
boost本來就是擴充函式庫 常用的早併入STL之中了 還嫌boost不常用是想笑死誰
(有沒有不好好活用STL跑去學lokii的八卦?)
Effective Modern C++主要在說明如何活用C++14的功能
某些操作是老一派C++不會的 早期一本書用十年二十年都可以 現在不一樣
auto/nullptr這種自動追蹤功能就是大幅減低設計負擔 不會連auto都說過度設計吧哈哈
(有沒有覺得C++樣板太麻煩的八卦?)
if+goto就可以硬幹所有東西了 何必需要這些高級功能?
再說 這些東西本來就是工具書 需要才用
談個C++還可以扯到Algorithm的書 然後說不會在這種書中看到程式碼
我以為我在學語言而不是學程式 根本譁眾取寵
最後還扯到TDD但是卻又不多著墨 隨便抓個幾段英文再說沒空翻譯
擺明只是想吸引文章瀏覽次數
這位作者本身沒有篩選能力 卻在第二篇談篩選能力 我已經不知道從何吐槽了
使用C++不外乎就是為了樣板/效能和龐大的程式庫支援像是googleTest
反而嫌C++太佔有地位 那請自行開發D語言函式庫 搞到跟C++一樣輕鬆我就用
想要學程式概念明明就有python ruby這種不用太在乎各種細節的物件導向語言
硬要強調C學語言概念不好 我可以稱之你為cpp黑嗎
作者: MysterySW (飯糰丸)   2016-07-06 11:16:00
光是boost::blank我就覺得很有用了XD
作者: bibo9901 (function(){})()   2016-07-06 11:20:00
愈多pattern, idiom等等, 其實是代表語言本身缺陷很多那些"細節"不過是為了避開"C++本身的限制"採取的workaround.
作者: shadow0326 (非議)   2016-07-06 11:26:00
隨著modern c++的發展 其實越來越多idiom已經無用了
作者: james732 (好人超)   2016-07-06 11:29:00
不過我看Modern C++ design是真的挺挫折的...orz
作者: shadow0326 (非議)   2016-07-06 11:30:00
http://tinyurl.com/c2zqfv7 名單持續增加中
作者: Chikei ( )   2016-07-06 11:37:00
說實話,也不需要拿一堆後來的東西罵一篇2007的文章時空背景完全不一樣,真正莫名其妙的是原po吧,拿著快10年前的文章在現在喊說是受害者才寫得出的東西
作者: bibo9901 (function(){})()   2016-07-06 12:33:00
C++11/14/17 是有改進沒錯. 但很多缺點是改不掉的1. idioms/patterns 仍然多如牛毛2. 又增加了很多語言特性, 新舊特性交互關係更加複雜
作者: descent (「雄辯是銀,沉默是金」)   2016-07-06 12:35:00
感謝你的心得, 有任何想法都很棒。
作者: bibo9901 (function(){})()   2016-07-06 12:35:00
整體來說這篇文章到今天仍然適用
作者: descent (「雄辯是銀,沉默是金」)   2016-07-06 12:36:00
我是贊同文章的想法, 也覺得自己是類似的受害者。https://goo.gl/jdPv3F 這些書單真的很嚇人。
作者: noonee (我和烤肉間只差一撮孜然)   2016-07-06 12:56:00
我個人是c++新手 基本上可以當作啥都不知道原po S大有不同看法的話 能不能講講看學c++的合適態度?我自己原來是寫fortran 的還在了解c++的主要差異點
作者: steve1012 (steve)   2016-07-06 13:07:00
我覺得學的過程用的過程會慢慢體悟 不需要啥態度哈很舵東西一開始不懂 等用到了自然有體悟 尤其是你在學校寫作業 很少會有很大架構的程式 也不需要讓程式易懂自然拼湊一下就拿來用像是何時用template 何時用繼承 去做interface 小程式感覺不出來
作者: noonee (我和烤肉間只差一撮孜然)   2016-07-06 13:32:00
我的狀況有點不太一樣 過去習慣用fortran 也寫過有一些遠超過學校做業範圍的中型程式 不敢說是大程式還沒到幾十萬行會需要學c++是因為幾個互相橋接的 別人寫的程式紛紛從fortran改用c++ 迫使我們也在思考 到底是先搞個介面就好 還是真的也要整個大程式重寫也因為這樣的關係 如果要重寫 先要知道好在哪裡 再來要先確認整體架構同時考慮未來維護坦白說 就我個人目前粗淺的認知 除了為了跟別人的程式連結以外 還沒看到強烈的改用c++的理由
作者: steve1012 (steve)   2016-07-06 13:38:00
那可以看一下modern c++ design 哪本
作者: noonee (我和烤肉間只差一撮孜然)   2016-07-06 13:38:00
部分原因出在於我們的程式有大量浮點數值計算 同時會用到大量的大型矩陣 這在fortran裡有很大的好處謝謝!
作者: descent (「雄辯是銀,沉默是金」)   2016-07-06 13:51:00
Essential C++, 這本薄薄的, 看完應該可以接別人c++介面
作者: noonee (我和烤肉間只差一撮孜然)   2016-07-06 14:05:00
感謝各位!
作者: Sunal (SSSSSSSSSSSSSSSSSSSSSSS)   2016-07-06 19:03:00
n兄應該是作數值分析的吧.時至今日還有那麼多研究單位還在fortran..真的是歷史包袱
作者: wtchen (沒有存在感的人)   2016-07-06 20:22:00
fortran不知道有無想要搞平行處理機制....
作者: freeunixer (御劍客)   2016-07-07 00:31:00
就跟 cobol 一樣啊,不是不想換,是要換會轉到哭出來...在上面已經堆太多現成可用的東西,除非你超威砍掉重練.
作者: CoNsTaR ((const *))   2016-07-07 02:59:00
idiom 和語言缺陷有什麼關系 ==
作者: uranusjr (←這人是超級笨蛋)   2016-07-07 03:03:00
其實很多時候確實有關啊, 像 C++ Java 不是 null-safe所以會出現 Null Object Pattern 和建議用 referenceC 沒有 memory scope 所以會出現特殊的函式參數回傳慣例C++ 因為類似原因出現 smart pointer class 等等講好聽是語言特性, 難聽點就是語言沒做好, 只好自力救濟
作者: andyjy12 (??)   2016-07-07 07:26:00
這兩篇最大的問題在於他是10年前的產品。
作者: james732 (好人超)   2016-07-07 11:52:00
所以我有共嗚是因為我大概也是在十年前學C++的... Q_Q
作者: rodion (r-kan/reminder)   2016-07-08 18:04:00
不是語言沒做好吧 是語言一開始就把妥善使用記憶體的責任交付給語言的使用者 這本來就是C/C++語言的特色 也因為如這類型語言才能做到更好的效能&相容性
作者: bibo9901 (function(){})()   2016-07-08 18:53:00
如果"妥善使用記憶體"真的這麼好用, 跟本不會有RAII和smart pointer這種半自動GC出現. 即使不說記憶體管理,為什麼會有policy-based design? 還有 enable_if 這些除了折騰沒有其他用處的技術? 因為語言本身缺少interface
作者: Clangpp (Clang++)   2016-07-08 20:34:00
C/C++已經發明很久了 當時可能根本沒想到會這樣
作者: rodion (r-kan/reminder)   2016-07-09 15:44:00
哪裡有人說妥善使用記憶體容易了? 這本來就是這類語言的另一特色:高門檻 可以單方面說是缺點但不考慮其帶來的好處:彈性高 就稍嫌失之武斷
作者: cplusplus (對的人難尋)   2016-07-10 04:08:00
同意樓上,有強大的控制能力&彈性,另一方面就有其難處有些idiom就是為了補強彈性帶來易出問題的地方,開發者易用性並不是最開始C++重點所在。另外RAII除了防止開發者易犯的問題,同時能提供絕對精準的資源控制,這是許多語言自動化上很難做到的。要同時在開發者易用性&絕對控制力都完美很難啊,一定有些不完美的地方。只能說C++真的不是創造給所有開發者用的語言,沒需要少碰啊(XD?)

Links booklink

Contact Us: admin [ a t ] ucptt.com