看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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黑嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.63.41 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1467774607.A.C6F.html
MysterySW: 光是boost::blank我就覺得很有用了XD 07/06 11:16
bibo9901: 愈多pattern, idiom等等, 其實是代表語言本身缺陷很多 07/06 11:20
bibo9901: 那些"細節"不過是為了避開"C++本身的限制"採取的workaro 07/06 11:23
bibo9901: und. 07/06 11:23
C++是效能和程序導向 任何東西都有優缺點 如果不是為某些需求 本來就不該學C++
shadow0326: 隨著modern c++的發展 其實越來越多idiom已經無用了 07/06 11:26
C++17要出來了((高潮
james732: 不過我看Modern C++ design是真的挺挫折的...orz 07/06 11:29
shadow0326: http://tinyurl.com/c2zqfv7 名單持續增加中 07/06 11:30
Chikei: 說實話,也不需要拿一堆後來的東西罵一篇2007的文章 07/06 11:37
Chikei: 時空背景完全不一樣,真正莫名其妙的是原po吧,拿著快10年 07/06 11:42
Chikei: 前的文章在現在喊說是受害者才寫得出的東西 07/06 11:42
bibo9901: C++11/14/17 是有改進沒錯. 但很多缺點是改不掉的 07/06 12:33
bibo9901: 1. idioms/patterns 仍然多如牛毛 07/06 12:33
bibo9901: 2. 又增加了很多語言特性, 新舊特性交互關係更加複雜 07/06 12:34
descent: 感謝你的心得, 有任何想法都很棒。 07/06 12:35
bibo9901: 整體來說這篇文章到今天仍然適用 07/06 12:35
descent: 我是贊同文章的想法, 也覺得自己是類似的受害者。 07/06 12:36
descent: https://goo.gl/jdPv3F 這些書單真的很嚇人。 07/06 12:38
你有看到這一行嗎"只要一本《The C++ Standard Library》就大致足夠了。" =.=
noonee: 我個人是c++新手 基本上可以當作啥都不知道 07/06 12:56
noonee: 原po S大有不同看法的話 能不能講講看學c++的合適態度? 07/06 12:56
如果沒學過任何語言 就從whilt和if 函式 陣列弄懂就好 再學指標 就很多了 如果只是想學程式概念 去看資結演算 如果是想要精通C++ 我承認C++不是容易快速上手的語言 最好先熟悉IDE操作 然後去追蹤一些比較好的程式碼學STL 比如最基本的vector或是資結演算的實作 ex:heap 用這個學樣板用法 沒看過的STL語法也不用買書 google都有解釋和範例 那些C++書單就像是辭海 不會有人想用字典學中文 頂多是看到沒學過的字詞跑去翻
noonee: 我自己原來是寫fortran 的還在了解c++的主要差異點 07/06 12:57
因為C++的繁雜 其實很多時候是寫作風格問題 師傅很重要XD
steve1012: 我覺得學的過程用的過程會慢慢體悟 不需要啥態度哈 07/06 13:07
steve1012: 很舵東西一開始不懂 等用到了自然有體悟 尤其是你在學 07/06 13:09
steve1012: 校寫作業 很少會有很大架構的程式 也不需要讓程式易懂 07/06 13:09
steve1012: 自然拼湊一下就拿來用 07/06 13:09
steve1012: 像是何時用template 何時用繼承 去做interface 小程式 07/06 13:10
steve1012: 感覺不出來 07/06 13:10
noonee: 我的狀況有點不太一樣 過去習慣用fortran 也寫過有一些 07/06 13:32
noonee: 遠超過學校做業範圍的中型程式 不敢說是大程式還沒到幾十 07/06 13:32
noonee: 萬行 07/06 13:32
noonee: 會需要學c++是因為幾個互相橋接的 別人寫的程式紛紛從fort 07/06 13:34
noonee: ran改用c++ 迫使我們也在思考 到底是先搞個介面就好 還 07/06 13:34
noonee: 是真的也要整個大程式重寫 07/06 13:34
noonee: 也因為這樣的關係 如果要重寫 先要知道好在哪裡 再來要 07/06 13:35
noonee: 先確認整體架構同時考慮未來維護 07/06 13:35
noonee: 坦白說 就我個人目前粗淺的認知 除了為了跟別人的程式連 07/06 13:37
noonee: 結以外 還沒看到強烈的改用c++的理由 07/06 13:37
支援程度 新軟體都幾乎支援新C++
steve1012: 那可以看一下modern c++ design 哪本 07/06 13:38
modern c++ design 是一本書 作者是Andrei 現在蠻尷尬的 因為C++14都出來兩年了 我建議等明年的書 因為C++17
noonee: 部分原因出在於我們的程式有大量浮點數值計算 同時會用到 07/06 13:38
noonee: 大量的大型矩陣 這在fortran裡有很大的好處 07/06 13:38
noonee: 謝謝! 07/06 13:39
大量運算當然還是F占優勢 但是如果要開發平行運算建議轉C++ C++thread越來越強 ※ 編輯: Sidney0503 (140.113.63.41), 07/06/2016 13:50:14
descent: Essential C++, 這本薄薄的, 看完應該可以接別人c++介面 07/06 13:51
noonee: 感謝各位! 07/06 14:05
Sunal: n兄應該是作數值分析的吧.時至今日還有那麼多研究單位還在 07/06 19:03
Sunal: fortran..真的是歷史包袱 07/06 19:04
wtchen: fortran不知道有無想要搞平行處理機制.... 07/06 20:22
freeunixer: 就跟 cobol 一樣啊,不是不想換,是要換會轉到哭出來... 07/07 00:31
freeunixer: 在上面已經堆太多現成可用的東西,除非你超威砍掉重練. 07/07 00:32
CoNsTaR: idiom 和語言缺陷有什麼關系 == 07/07 02:59
uranusjr: 其實很多時候確實有關啊, 像 C++ Java 不是 null-safe 07/07 03:03
uranusjr: 所以會出現 Null Object Pattern 和建議用 reference 07/07 03:04
uranusjr: C 沒有 memory scope 所以會出現特殊的函式參數回傳慣例 07/07 03:05
uranusjr: C++ 因為類似原因出現 smart pointer class 等等 07/07 03:05
uranusjr: 講好聽是語言特性, 難聽點就是語言沒做好, 只好自力救濟 07/07 03:07
andyjy12: 這兩篇最大的問題在於他是10年前的產品。 07/07 07:26
james732: 所以我有共嗚是因為我大概也是在十年前學C++的... Q_Q 07/07 11:52
rodion: 不是語言沒做好吧 是語言一開始就把妥善使用記憶體的責任 07/08 18:04
rodion: 交付給語言的使用者 這本來就是C/C++語言的特色 也因為如 07/08 18:05
rodion: 這類型語言才能做到更好的效能&相容性 07/08 18:05
bibo9901: 如果"妥善使用記憶體"真的這麼好用, 跟本不會有RAII和 07/08 18:53
bibo9901: smart pointer這種半自動GC出現. 即使不說記憶體管理, 07/08 18:53
bibo9901: 為什麼會有policy-based design? 還有 enable_if 這些除 07/08 18:55
bibo9901: 了折騰沒有其他用處的技術? 因為語言本身缺少interface 07/08 18:56
Clangpp: C/C++已經發明很久了 當時可能根本沒想到會這樣 07/08 20:34
rodion: 哪裡有人說妥善使用記憶體容易了? 這本來就是這類語言的 07/09 15:44
rodion: 另一特色:高門檻 可以單方面說是缺點但不考慮其帶來的好處 07/09 15:45
rodion: :彈性高 就稍嫌失之武斷 07/09 15:45
cplusplus: 同意樓上,有強大的控制能力&彈性,另一方面就有其難處 07/10 04:08
cplusplus: 有些idiom就是為了補強彈性帶來易出問題的地方,開發者 07/10 04:10
cplusplus: 易用性並不是最開始C++重點所在。另外RAII除了防止開發 07/10 04:12
cplusplus: 者易犯的問題,同時能提供絕對精準的資源控制,這是許 07/10 04:13
cplusplus: 多語言自動化上很難做到的。要同時在開發者易用性&絕對 07/10 04:15
cplusplus: 控制力都完美很難啊,一定有些不完美的地方。只能說C++ 07/10 04:16
cplusplus: 真的不是創造給所有開發者用的語言,沒需要少碰啊(XD?) 07/10 04:18