Re: [問題] 關於C++學習過程請教

看板C_and_CPP (C/C++)作者 ( )時間2年前 (2022/04/14 06:05), 2年前編輯推噓31(33262)
留言97則, 19人參與, 2年前最新討論串2/2 (看更多)
※ 引述《Suxing133 (怪盜巴哥)》之銘言: : 各位前輩們早上好, : 小弟目前大二,再一年就準備做專題考研。 : 目前正在自學C++, : 原本是跟學校的課程學習JAVA, : 雖然是資管但對C/C++的指標有莫名的憧憬, : 所以才在這個時間點改學習另一個語言, : 缺點是班上沒有同學一起學習C++, : 因此想上來板上請教各位前輩們一些問題。 對指標的憧憬導致在資管大二階段跳過來學 C++ 這個動機有點怪, 如果這板不是 C_AND_CPP,有很大機率我會建議你別學下去。 我倒是比較好奇這個憧憬對你後來學習 C++ 和使用 C++ 造成什麼樣的影響。 寫程式很忌諱的一點是炫技,C 要炫技大部分是靠指標,C++ 還有很多語言機制可炫技。 你的生涯規劃我也同樣好奇,未來會想從事用 C++ 開發程式的工作嗎? 資管需要學習的東西很廣,但 C++ 這東西某方面來說需要學精, 你如果未來不想從事會用到 C++ 的相關工作,你還有好多好多東西得去學。 浪費時間在 C++ 這語言的學習上,你可能會喪失職場競爭力,這很嚴重。 不過既然你還打算讀研究所,也許碩班論文和教授給你做的計畫還能給你指引方向, 所以這邊先不強迫你去思考未來想去什麼公司、做什麼樣的工作內容。 只是我眼光比較短淺,好像想不太到哪個資管所教授接的計畫會需要學生使用 C++。 因此 C++ 可能只會變成你花了最精華的大學時期的一個短暫興趣, 而與你同世代的資管人可能利用這四年時間累積了更龐大的有用知識在職場上發光發熱。 你在研究所開始之後的人生不會再有時間讓你這麼悠閒的讀 C++ Primer, 也許將來的某一天你會後悔為何不花一樣的時間去學 10 幾種近代資訊技術。 另外就是畢業專題我記得都是要團隊合作。 班上都沒人跟你一起學 C++ 了,到時專題你打算一個人一組用 C++ 寫嗎? 不過話又說回來,很多其它語言的 plugin 或 extension 其實都是用 C/C++ 在寫。 或許未來有一天你現在的經驗能成為你的助力,讓你能做到別人不能做到的效能改善。 如果幾年後你最終選擇了其它用不到 C++ 的語言當謀生工具,要記得你還有這個優勢。 : 學習過程: : 目前是讀C++ Primer 5/e 讀到一半左右, : 預計再半個月能接近讀完, : 之後打算繼續讀Effective 系列&STL函式庫, : 中間還有刷一些Leetcode Easy的題目, : 未來打算寫一些小專題累積開發能力。 : 問題: : 不知道這樣學習方式有沒有需要改進的地方? : 不知道有沒有榮幸獲得各位前輩的經驗, : 目前刷Leetcode算是心態滿崩的, : 因為網路上大多都在使用STL, : 還有code都是寫class, : 這樣好像沒有練習到main呼叫的過程, : 甚至在考慮要不要改刷CPE的題庫。 : 感謝抽空看我廢話,打擾到不好意思! : (第一次在ptt發文,排版不好還請見諒! : (有違反版規的話非常抱歉! 刷題這件事對你來說太早,板友已經都講過了我就不講了。 比起 The C++ Programming Language, C++ Primer 的內容編排更接近 C++ 語言辭典這類工具書。 如果你打算把寫 C++ 當作你未來正職使用的語言, 讀過它一遍你將不會被編譯錯誤或一些非預期的編譯結果感到意外, 至少遇到的當下你腦中會閃過書上的某些片段然後回來查。 如果現在是 2011 年,而且你的目的是想更透徹瞭解這個語言, 我會建議你在讀完 C++ Primer 之後去讀 The C++ Programming Language。 之後再建議你去讀 Effective 和 Exception 系列的書做補強。 但是從 2012 年開始,Effective 和 Exception 系列已經過時, 雖然裡面的精神可以花點時間去瞭解,但裡面許多過時的內容我也擔心新手誤會。 Effective C++ 3/e 算是 2012 後這系列裡唯一值得去讀的書,但也沒更多了。 類似的進階學習資源都變成在網路上,紙本或電子書已經不太有人出版。 另外關於並行程式設計的主題,是被獨立在一本叫 C++ Concurrency in Action 的書上。 這本書需要特別另外去讀,因為裡面涵蓋的主題既有的書籍裡不太會介紹。 歐萊禮還有一本「優化 C++」在你遇到效能瓶頸時可以去讀,但現在不用急著去看。 你讀的 C++ Primer 5/e 在 2022 年的現在也是一本過時的書, 但我無法給你更好的建議,因為我不是從這個年代才開始學 C++ 的。 如果你想找一本跟得上時代的 C++ 書籍,無論簡體還是繁體中文我還真不知道有沒有。 因為我已經是體力衰退的中年人,沒力氣幫你找,只能說關鍵字是 C++17 和 C++20。 我自己這幾年是在 manning.com、leanpub.com、packtpub.com 上面買電子書來讀, 再來就是去一些板友也常提到的網站逛逛,不斷追著最新標準走。 如果你的英文能力不足以讀這些原文電子書,我會建議你設法把英文補好。 走軟體開發除非你是走少數特殊行業,不然靠吃台灣內需肯定得不到什麼好的發展。 特別是你的英聽跟口說如果不行的話,強烈建議先去補習加強或利用學校資源。 這些基礎語言技能沒有的話,我還是建議你先別學什麼 C++, 不然以國內匱乏的中文資源,再過個 10 年,你跟完全不會 C++ 的人很高機率是一樣的。 除了唸書,Boost C++ Libraries 也該練習去使用, 我學生時代給自己設定一週要學會裡面一個函式庫的目標, 學會使用它可以幫上你不少忙,但終究它也是輪子和積木等級的函式庫。 Qt 之類的 GUI framework 你至少要學會一套,這樣你的軟體開發工具才會完整。 至於你說的「未來打算寫一些小專題累積開發能力」,這又是完全不同的議題。 你在我上述的電子書商網站搜尋 C++ 可以找到一狗票 C++17 和 C++20 的書, 所以我也不去羅列我看過買過什麼只講 C++ 的書,畢竟意義有限。 所謂的開發能力,是跨越程式語言的一項知識,也是你需要花大量時間鑽研的東西。 以歐萊禮的「深入淺出物件導向分析與設計」和「深入淺出設計模式」為出發點, 你會開始見識到超脫語言之外的軟體分析與設計知識,這比起使用什麼語言還要重要。 在這領域也有個名作家 Martin Fowler 出的書也值得一讀,特別是重構相關的書籍。 這裡我可以列一下我讀過的書,因為關鍵字比較難下, 你可以去書商網站從他們的目錄裡瞭解這些書在講什麼東西: 1. Hands-On Design Patterns with C++ 2. Software Architecture with C++ 3. Clean C++20 - Sustainable Software Development Patterns and Best Practices 4. Architectural Patterns (書名太短給你 ISBN 978-1-78728-749-5 防止你找錯) 5. Software Architect's Handbook 6. Good Code, Bad Code 7. Five Lines of Code 8. Software Mistakes and Tradeoffs 9. Street Coder 有些書還沒出完,上面那些電子書的網站都可以在作者出完書之前買到書, 買了之後先讀到可以把作者目前已經寫好的章節,甚至可以給作者意見或和作者討論。 要注意這些書裡用的範例程式碼未必是 C++,但你要吸收的主要是它的精神。 這對你未來轉換跑道去用其它語言一樣有用,也是你到達學生時代終點前所該學習的。 manning.com 出的書品質比較高,我在這還是會建議你去翻翻這網站上的書籍標題。 我會希望你至少先從標題確認,看看你有沒有能力知道這些書分別是在講什麼的。 雖不求 100% 知道那些是什麼東西,但起碼要知道個七、八成。 我指的是就算只是懂得標題上的名詞是啥也好,就這程度上你至少得略懂七、八成標題。 坦白說以資管人而言,你大概知道它們是什麼,然後都摸過一點,會比你學 C++ 有用。 我也不喜歡在 C_AND_CPP 板上一直勸人學 C++ 以外的東西, 但既然你表明了你是資管人,我這個看過很多資管人人生的資工人還是得勸說一下。 另外 manning.com 這網站近年開始搞起了 live project, 你如果找到感興趣的主題也可以去試試。 不過如果你沒有足夠的英文能力,這些機會也就與你無緣。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.18.57 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1649887500.A.A1C.html

04/14 10:56, 2年前 , 1F
推mannimg,沒有DRM,方便放不同的閱讀器。
04/14 10:56, 1F

04/14 10:59, 2年前 , 2F
b天瓏買的紙本也可下載電子書,但不確定是不是每本都可以
04/14 10:59, 2F

04/14 10:59, 2年前 , 3F
04/14 10:59, 3F

04/14 12:35, 2年前 , 4F
tinlans大大您好!這篇文章我看了一個早上,真的打破
04/14 12:35, 4F

04/14 12:35, 2年前 , 5F
我的價值觀以及我對學習方式的見解,有些地方想要請教
04/14 12:35, 5F

04/14 12:35, 2年前 , 6F
您~就不另外發文回覆了!我怕內容會離題違反版規,請
04/14 12:35, 6F

04/14 12:35, 2年前 , 7F
問有空嗎?我應該直接在下推文問還是站內信呢?沒有空
04/14 12:35, 7F

04/14 12:35, 2年前 , 8F
也沒關係!真的已經幫我很大的忙了!!再次感謝您抽空
04/14 12:35, 8F

04/14 12:35, 2年前 , 9F
回答小弟。
04/14 12:35, 9F
如果想問比較多的東西用站內信,問題比較少的話就推文。 比較多人看到的話,能給的意見也比較多, 所以站內信聊完之後你可以再去適當的板發文問多一點人看看他們意見。 不過所謂適當的板上的人有些可能比較兇一點,不一定像這邊這麼友善,要習慣一下。

04/14 21:42, 2年前 , 10F
Primer要讀完就很硬了 我覺得當工具書看
04/14 21:42, 10F

04/15 08:48, 2年前 , 11F
用心推
04/15 08:48, 11F

04/15 09:28, 2年前 , 12F
好用心,推
04/15 09:28, 12F

04/15 12:03, 2年前 , 13F
04/15 12:03, 13F

04/15 13:03, 2年前 , 14F
推 感謝大神
04/15 13:03, 14F

04/16 10:12, 2年前 , 15F
推用心回覆
04/16 10:12, 15F

04/17 14:38, 2年前 , 16F
Effective Modern C++沒列?我覺得這本的確沒effective的
04/17 14:38, 16F

04/17 14:40, 2年前 , 17F
威力~可是我覺得還是新手必讀之一?XD
04/17 14:40, 17F
這本確實該讀,現在才發現原來我沒寫到。 年紀大了,大概講完 Effective C++ 3/e 就以為自己已經講過。 Scott Meyers 也頗狠的,出完這本隔年就說林北不出書了, 以後大家自己去上 stackoverflow 還有看 C++ Core Guidelines 吧 XD 我本來還期待他出完這本能回頭更新 Effective 系列的書。 Herb Sutter 雖然沒更新 Exceptional 系列的書,但他有默默把 GotW 的內容翻新過。 雖然更新的部分只有在他 blog 上,而且看起來做一做就沒什麼力繼續了。 剛好今天下午我也在自己網站上正在寫類似的東西, 和回應這討論串原 po 的內容有點不太一樣: https://bit.ly/3uRPMrm ※ 編輯: tinlans (220.135.18.57 臺灣), 04/18/2022 03:45:53

04/19 12:03, 2年前 , 18F
借問,如果要刷leetcode刷題還是得靠C++對吧?
04/19 12:03, 18F

04/19 15:03, 2年前 , 19F
刷演算法當然是python阿
04/19 15:03, 19F

04/19 15:04, 2年前 , 20F
不限語言的程式比賽前100名九成是py
04/19 15:04, 20F

04/20 06:24, 2年前 , 21F
用心推
04/20 06:24, 21F

04/20 14:15, 2年前 , 22F
上面要不要看看codejam之類的比賽前幾名都用什麼語言
04/20 14:15, 22F

04/21 15:46, 2年前 , 23F
第一次聽到程式競賽九成用 python ...,這個數據哪來的
04/21 15:46, 23F

04/21 17:31, 2年前 , 24F
https://adventofcode.com/ 去看leaderboard
04/21 17:31, 24F

04/21 17:32, 2年前 , 25F
C++還沒有刻完data structure人家py答案都出來了
04/21 17:32, 25F

04/21 17:33, 2年前 , 26F
你講codajam是有統計從題目出現到pass的時間?
04/21 17:33, 26F

04/21 17:33, 2年前 , 27F
不過就只有執行時間而已 編譯語言本來就跑比較快
04/21 17:33, 27F

04/21 17:36, 2年前 , 28F
我是不意外啦 C++版的人都寫C++比py快 (跟自己比
04/21 17:36, 28F

04/21 17:36, 2年前 , 29F
然後以為外面世界也是寫C++比py快www
04/21 17:36, 29F

04/21 17:37, 2年前 , 30F
一堆題目C++要寫上百行 py只要幾十行的
04/21 17:37, 30F

04/21 17:41, 2年前 , 31F
不要以為我是用py才反對c++ 我平常工作是寫c++17
04/21 17:41, 31F

04/21 17:42, 2年前 , 32F
寫poc的時候還是用py最快 要榨效能再上c++
04/21 17:42, 32F

04/21 17:44, 2年前 , 33F
不懂的人可以先去看甚麼是手稿語言就會知道差別
04/21 17:44, 33F

04/22 18:30, 2年前 , 34F
一堆題目要寫上百行?哪些
04/22 18:30, 34F

04/22 18:35, 2年前 , 35F
還是你自己百行內能寫完的程式寫到上百行 幻想全世
04/22 18:35, 35F

04/22 18:35, 2年前 , 36F
界寫C++的都跟你一樣ww
04/22 18:35, 36F

04/22 19:05, 2年前 , 37F
競賽選手愛用訓練網站的 cf div1 前五十名都用 c++ ,
04/22 19:05, 37F

04/22 19:05, 2年前 , 38F
目前是沒聽過哪個選手會拿 advent of code 當作備賽訓
04/22 19:05, 38F

04/22 19:05, 2年前 , 39F
練,這看起來像社群辦的小圈圈活動,如果是拿 atcoder/
04/22 19:05, 39F

04/22 19:05, 2年前 , 40F
cf/codechef還是各大知名 oj 或是 ioi/acm icpc/topcod
04/22 19:05, 40F

04/22 19:05, 2年前 , 41F
er/google code jam 之類的大賽各有說服力,這些選手應
04/22 19:05, 41F

04/22 19:05, 2年前 , 42F
該都比你我更了解用什麼語言對自己的競賽成績更有利
04/22 19:05, 42F

04/22 19:24, 2年前 , 43F
快貼一段你用py寫幾十行 結果C++寫到上百行的來看看
04/22 19:24, 43F

04/22 19:24, 2年前 , 44F
讓我開一下眼界
04/22 19:24, 44F

04/22 20:03, 2年前 , 45F
所以時間拿出來阿 從題目出現到答案輸出的時間
04/22 20:03, 45F

04/22 20:04, 2年前 , 46F
編譯語言本來就比手稿語言快誰不知道
04/22 20:04, 46F

04/22 20:04, 2年前 , 47F
加上寫code時間誰比較快時間是另一回事
04/22 20:04, 47F

04/22 20:08, 2年前 , 48F
@EricTCartman 所以閣下意思是手稿語言行數比較多
04/22 20:08, 48F

04/22 20:09, 2年前 , 49F
每個人要有自己判斷力 如果手稿語言行數比C++多
04/22 20:09, 49F

04/22 20:09, 2年前 , 50F
那整個手稿語言世界可扔去垃圾桶了 速度慢還行數多
04/22 20:09, 50F

04/22 20:17, 2年前 , 51F
時間在 codeforces 比賽結果那邊就有了啊,執行時間也
04/22 20:17, 51F

04/22 20:17, 2年前 , 52F
是比賽的一環,你執行時間慢連通過的資格都沒有XD
04/22 20:17, 52F

04/22 20:18, 2年前 , 53F
再說前五十名哪個不是寫的快執行時間又短的
04/22 20:18, 53F

04/22 20:18, 2年前 , 54F
哇 你這稻草人立得真是讓我拍案叫絕
04/22 20:18, 54F

04/22 20:19, 2年前 , 55F
我從頭到尾哪句寫手稿語言行數比C++多 麻煩您框一下
04/22 20:19, 55F

04/22 20:19, 2年前 , 56F

04/22 20:20, 2年前 , 57F
我只是好奇Python寫幾十行 C++可以到上百行的題目
04/22 20:20, 57F

04/22 20:20, 2年前 , 58F
長怎樣
04/22 20:20, 58F

04/22 20:23, 2年前 , 59F
比賽應該是直接上模板,該弄得都弄好,一鍵輸出,剩下
04/22 20:23, 59F

04/22 20:23, 2年前 , 60F
時間用來思考和實作演算法吧
04/22 20:23, 60F

04/22 20:24, 2年前 , 61F
啊對了 我平常工作也會寫Py跟C++ 我從來沒打算證明
04/22 20:24, 61F

04/22 20:24, 2年前 , 62F
C++比Py更好用更簡潔 我只是納悶 你用"上百行"跟"一
04/22 20:24, 62F

04/22 20:24, 2年前 , 63F
00:02 你要說這個時間是從看到題目打好code到上傳?
04/22 20:24, 63F

04/22 20:25, 2年前 , 64F
堆題目" 遠遠超越我的認知
04/22 20:25, 64F

04/22 20:25, 2年前 , 65F
所你的意思是這題從看到+打code+compile+run 兩秒?
04/22 20:25, 65F

04/22 20:25, 2年前 , 66F
...你可以點進去看各個選手每一題的比賽開始到提交的時
04/22 20:25, 66F

04/22 20:25, 2年前 , 67F
04/22 20:25, 67F

04/22 20:28, 2年前 , 68F
你說要點進去 所以我剛剛就是說 有沒有rank是總時間
04/22 20:28, 68F

04/22 20:28, 2年前 , 69F
而非這種是以執行時間做為排序的
04/22 20:28, 69F

04/22 20:29, 2年前 , 70F
這個外面的rank是用執行時間當然編譯語言時間短阿
04/22 20:29, 70F

04/22 20:30, 2年前 , 71F
而且這個比賽本身就是執行時間作為標準 當然積分上C
04/22 20:30, 71F

04/22 20:30, 2年前 , 72F
++有利
04/22 20:30, 72F

04/22 20:33, 2年前 , 73F
如果說原PO就是要參加這種以執行時間為積分的
04/22 20:33, 73F

04/22 20:33, 2年前 , 74F
當然C++沒話說 沒有語言可以做到比C++更細緻的調校
04/22 20:33, 74F

04/22 20:34, 2年前 , 75F
但我不認為原PO目的極致執行時間競賽 而且前面都已
04/22 20:34, 75F

04/22 20:34, 2年前 , 76F
你去看 codeforces 比賽規則,他是以題目出來之後到提
04/22 20:34, 76F

04/22 20:34, 2年前 , 77F
交的時間和錯誤次數和題目本身的分數算成績,執行時間
04/22 20:34, 77F

04/22 20:34, 2年前 , 78F
通過是最低要求,但是你跑得快跟你最後分數無關==
04/22 20:34, 78F

04/22 20:34, 2年前 , 79F
經說了刷leetcode很崩潰 誰不知道C++初學上手難度?
04/22 20:34, 79F

04/22 20:36, 2年前 , 80F
我承認我錯了 打比賽最適合的語言是C++ 原PO請學C++
04/22 20:36, 80F

04/22 20:36, 2年前 , 81F
打比賽 加油
04/22 20:36, 81F

04/22 20:56, 2年前 , 82F
阿Py幾十行上百行的C++題目咧 貼來看看阿
04/22 20:56, 82F

04/22 21:43, 2年前 , 83F
自己沒打過大家普遍認同的比賽就不要出來誤人子弟好嗎
04/22 21:43, 83F

04/22 21:50, 2年前 , 84F
順便幫你補充一下00:02是兩分鐘的意思,代表看到題目寫出
04/22 21:50, 84F

04/22 21:50, 2年前 , 85F
答案再到上傳花兩分鐘
04/22 21:50, 85F

04/22 22:18, 2年前 , 86F
再補充一下像是前面提到AoC的部分,排行榜靠前的選手在像
04/22 22:18, 86F

04/22 22:19, 2年前 , 87F
是codeforces的比賽中也幾乎都是用C++寫的,所以還是要看
04/22 22:19, 87F

04/22 22:20, 2年前 , 88F
你所說的比賽到底是哪種類型的,如果是完完全全只拚手速
04/22 22:20, 88F

04/22 22:22, 2年前 , 89F
的話的確python有機會寫起來比較快,但如果是competitive
04/22 22:22, 89F

04/22 22:23, 2年前 , 90F
programming的話大多還是以C++為主
04/22 22:23, 90F

04/23 00:32, 2年前 , 91F
AOC++還有用raku的
04/23 00:32, 91F

04/23 00:33, 2年前 , 92F
全都學就沒問題
04/23 00:33, 92F

04/23 14:00, 2年前 , 93F
看本爸爸的,再一本函式庫,再一本更新快的外國pap
04/23 14:00, 93F

04/23 14:00, 2年前 , 94F
er
04/23 14:00, 94F

04/24 01:30, 2年前 , 95F
真的,沒事不要學 C++
04/24 01:30, 95F

04/24 02:36, 2年前 , 96F
python 的 sort 跟 priority queue 比 c++ 難用
04/24 02:36, 96F

04/24 02:38, 2年前 , 97F
不適合比賽吧
04/24 02:38, 97F
文章代碼(AID): #1YLqaCeS (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1YLqaCeS (C_and_CPP)