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

看板C_and_CPP (C/C++)作者 (Sidney0503)時間7年前 (2016/07/06 11:10), 7年前編輯推噓14(14059)
留言73則, 17人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/06 11:16, , 1F
光是boost::blank我就覺得很有用了XD
07/06 11:16, 1F

07/06 11:20, , 2F
愈多pattern, idiom等等, 其實是代表語言本身缺陷很多
07/06 11:20, 2F

07/06 11:23, , 3F
那些"細節"不過是為了避開"C++本身的限制"採取的workaro
07/06 11:23, 3F

07/06 11:23, , 4F
und.
07/06 11:23, 4F
C++是效能和程序導向 任何東西都有優缺點 如果不是為某些需求 本來就不該學C++

07/06 11:26, , 5F
隨著modern c++的發展 其實越來越多idiom已經無用了
07/06 11:26, 5F
C++17要出來了((高潮

07/06 11:29, , 6F
不過我看Modern C++ design是真的挺挫折的...orz
07/06 11:29, 6F

07/06 11:30, , 7F
http://tinyurl.com/c2zqfv7 名單持續增加中
07/06 11:30, 7F

07/06 11:37, , 8F
說實話,也不需要拿一堆後來的東西罵一篇2007的文章
07/06 11:37, 8F

07/06 11:42, , 9F
時空背景完全不一樣,真正莫名其妙的是原po吧,拿著快10年
07/06 11:42, 9F

07/06 11:42, , 10F
前的文章在現在喊說是受害者才寫得出的東西
07/06 11:42, 10F

07/06 12:33, , 11F
C++11/14/17 是有改進沒錯. 但很多缺點是改不掉的
07/06 12:33, 11F

07/06 12:33, , 12F
1. idioms/patterns 仍然多如牛毛
07/06 12:33, 12F

07/06 12:34, , 13F
2. 又增加了很多語言特性, 新舊特性交互關係更加複雜
07/06 12:34, 13F

07/06 12:35, , 14F
感謝你的心得, 有任何想法都很棒。
07/06 12:35, 14F

07/06 12:35, , 15F
整體來說這篇文章到今天仍然適用
07/06 12:35, 15F

07/06 12:36, , 16F
我是贊同文章的想法, 也覺得自己是類似的受害者。
07/06 12:36, 16F

07/06 12:38, , 17F
https://goo.gl/jdPv3F 這些書單真的很嚇人。
07/06 12:38, 17F
你有看到這一行嗎"只要一本《The C++ Standard Library》就大致足夠了。" =.=

07/06 12:56, , 18F
我個人是c++新手 基本上可以當作啥都不知道
07/06 12:56, 18F

07/06 12:56, , 19F
原po S大有不同看法的話 能不能講講看學c++的合適態度?
07/06 12:56, 19F
如果沒學過任何語言 就從whilt和if 函式 陣列弄懂就好 再學指標 就很多了 如果只是想學程式概念 去看資結演算 如果是想要精通C++ 我承認C++不是容易快速上手的語言 最好先熟悉IDE操作 然後去追蹤一些比較好的程式碼學STL 比如最基本的vector或是資結演算的實作 ex:heap 用這個學樣板用法 沒看過的STL語法也不用買書 google都有解釋和範例 那些C++書單就像是辭海 不會有人想用字典學中文 頂多是看到沒學過的字詞跑去翻

07/06 12:57, , 20F
我自己原來是寫fortran 的還在了解c++的主要差異點
07/06 12:57, 20F
因為C++的繁雜 其實很多時候是寫作風格問題 師傅很重要XD

07/06 13:07, , 21F
我覺得學的過程用的過程會慢慢體悟 不需要啥態度哈
07/06 13:07, 21F

07/06 13:09, , 22F
很舵東西一開始不懂 等用到了自然有體悟 尤其是你在學
07/06 13:09, 22F

07/06 13:09, , 23F
校寫作業 很少會有很大架構的程式 也不需要讓程式易懂
07/06 13:09, 23F

07/06 13:09, , 24F
自然拼湊一下就拿來用
07/06 13:09, 24F

07/06 13:10, , 25F
像是何時用template 何時用繼承 去做interface 小程式
07/06 13:10, 25F

07/06 13:10, , 26F
感覺不出來
07/06 13:10, 26F

07/06 13:32, , 27F
我的狀況有點不太一樣 過去習慣用fortran 也寫過有一些
07/06 13:32, 27F

07/06 13:32, , 28F
遠超過學校做業範圍的中型程式 不敢說是大程式還沒到幾十
07/06 13:32, 28F

07/06 13:32, , 29F
萬行
07/06 13:32, 29F

07/06 13:34, , 30F
會需要學c++是因為幾個互相橋接的 別人寫的程式紛紛從fort
07/06 13:34, 30F

07/06 13:34, , 31F
ran改用c++ 迫使我們也在思考 到底是先搞個介面就好 還
07/06 13:34, 31F

07/06 13:34, , 32F
是真的也要整個大程式重寫
07/06 13:34, 32F

07/06 13:35, , 33F
也因為這樣的關係 如果要重寫 先要知道好在哪裡 再來要
07/06 13:35, 33F

07/06 13:35, , 34F
先確認整體架構同時考慮未來維護
07/06 13:35, 34F

07/06 13:37, , 35F
坦白說 就我個人目前粗淺的認知 除了為了跟別人的程式連
07/06 13:37, 35F

07/06 13:37, , 36F
結以外 還沒看到強烈的改用c++的理由
07/06 13:37, 36F
支援程度 新軟體都幾乎支援新C++

07/06 13:38, , 37F
那可以看一下modern c++ design 哪本
07/06 13:38, 37F
modern c++ design 是一本書 作者是Andrei 現在蠻尷尬的 因為C++14都出來兩年了 我建議等明年的書 因為C++17

07/06 13:38, , 38F
部分原因出在於我們的程式有大量浮點數值計算 同時會用到
07/06 13:38, 38F

07/06 13:38, , 39F
大量的大型矩陣 這在fortran裡有很大的好處
07/06 13:38, 39F

07/06 13:39, , 40F
謝謝!
07/06 13:39, 40F
大量運算當然還是F占優勢 但是如果要開發平行運算建議轉C++ C++thread越來越強 ※ 編輯: Sidney0503 (140.113.63.41), 07/06/2016 13:50:14

07/06 13:51, , 41F
Essential C++, 這本薄薄的, 看完應該可以接別人c++介面
07/06 13:51, 41F

07/06 14:05, , 42F
感謝各位!
07/06 14:05, 42F

07/06 19:03, , 43F
n兄應該是作數值分析的吧.時至今日還有那麼多研究單位還在
07/06 19:03, 43F

07/06 19:04, , 44F
fortran..真的是歷史包袱
07/06 19:04, 44F

07/06 20:22, , 45F
fortran不知道有無想要搞平行處理機制....
07/06 20:22, 45F

07/07 00:31, , 46F
就跟 cobol 一樣啊,不是不想換,是要換會轉到哭出來...
07/07 00:31, 46F

07/07 00:32, , 47F
在上面已經堆太多現成可用的東西,除非你超威砍掉重練.
07/07 00:32, 47F

07/07 02:59, , 48F
idiom 和語言缺陷有什麼關系 ==
07/07 02:59, 48F

07/07 03:03, , 49F
其實很多時候確實有關啊, 像 C++ Java 不是 null-safe
07/07 03:03, 49F

07/07 03:04, , 50F
所以會出現 Null Object Pattern 和建議用 reference
07/07 03:04, 50F

07/07 03:05, , 51F
C 沒有 memory scope 所以會出現特殊的函式參數回傳慣例
07/07 03:05, 51F

07/07 03:05, , 52F
C++ 因為類似原因出現 smart pointer class 等等
07/07 03:05, 52F

07/07 03:07, , 53F
講好聽是語言特性, 難聽點就是語言沒做好, 只好自力救濟
07/07 03:07, 53F

07/07 07:26, , 54F
這兩篇最大的問題在於他是10年前的產品。
07/07 07:26, 54F

07/07 11:52, , 55F
所以我有共嗚是因為我大概也是在十年前學C++的... Q_Q
07/07 11:52, 55F

07/08 18:04, , 56F
不是語言沒做好吧 是語言一開始就把妥善使用記憶體的責任
07/08 18:04, 56F

07/08 18:05, , 57F
交付給語言的使用者 這本來就是C/C++語言的特色 也因為如
07/08 18:05, 57F

07/08 18:05, , 58F
這類型語言才能做到更好的效能&相容性
07/08 18:05, 58F

07/08 18:53, , 59F
如果"妥善使用記憶體"真的這麼好用, 跟本不會有RAII和
07/08 18:53, 59F

07/08 18:53, , 60F
smart pointer這種半自動GC出現. 即使不說記憶體管理,
07/08 18:53, 60F

07/08 18:55, , 61F
為什麼會有policy-based design? 還有 enable_if 這些除
07/08 18:55, 61F

07/08 18:56, , 62F
了折騰沒有其他用處的技術? 因為語言本身缺少interface
07/08 18:56, 62F

07/08 20:34, , 63F
C/C++已經發明很久了 當時可能根本沒想到會這樣
07/08 20:34, 63F

07/09 15:44, , 64F
哪裡有人說妥善使用記憶體容易了? 這本來就是這類語言的
07/09 15:44, 64F

07/09 15:45, , 65F
另一特色:高門檻 可以單方面說是缺點但不考慮其帶來的好處
07/09 15:45, 65F

07/09 15:45, , 66F
:彈性高 就稍嫌失之武斷
07/09 15:45, 66F

07/10 04:08, , 67F
同意樓上,有強大的控制能力&彈性,另一方面就有其難處
07/10 04:08, 67F

07/10 04:10, , 68F
有些idiom就是為了補強彈性帶來易出問題的地方,開發者
07/10 04:10, 68F

07/10 04:12, , 69F
易用性並不是最開始C++重點所在。另外RAII除了防止開發
07/10 04:12, 69F

07/10 04:13, , 70F
者易犯的問題,同時能提供絕對精準的資源控制,這是許
07/10 04:13, 70F

07/10 04:15, , 71F
多語言自動化上很難做到的。要同時在開發者易用性&絕對
07/10 04:15, 71F

07/10 04:16, , 72F
控制力都完美很難啊,一定有些不完美的地方。只能說C++
07/10 04:16, 72F

07/10 04:18, , 73F
真的不是創造給所有開發者用的語言,沒需要少碰啊(XD?)
07/10 04:18, 73F
文章代碼(AID): #1NV7QFnl (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1NV7QFnl (C_and_CPP)