※ 引述《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,
你如果找到感兴趣的主题也可以去试试。
不过如果你没有足够的英文能力,这些机会也就与你无缘。