作者tinlans ( )
看板Soft_Job
标题Re: [请益] 学生自学方向
时间Fri Jun 29 12:44:47 2018
※ 引述《roy87921 (PH9.0)》之铭言:
: 小弟我目前大一升大二 电机系学生(有可能会转资工 结果八月才会出来)
: 大一上学期有上过C++计算机概论(以前没碰过C)
: 用的是C++ How to Program Late Objects Version /7th 这本书
我没看过这本,看出版日期是 2010,你知道的 C++ 可能和现在的 C++ 有段差距了。
但还是建议你读完,或者去书店自己挑一本比较新的。
: 学到Class附近 想趁着暑假自学精进一下 (未来想往app或韧体)
app 和韧体是两个天差地远的方向。
如果你还没确定,C++ 时间可以花少一点。
: 应该会先把之前上课的内容复习一遍 但再来就没有方向了
学到 class 附近有很多种意思,你有没有学到物件导向才是重点。
如果只有学到把 data 跟 operation 收集在一个 class,那个还没到物件导向。
物件导向要学齐封装、继承、多型三个特性,上面那行讲的只有封装而已。
这三个特性学完,你对物件导向的了解大概是脚正要开始抬起来,离跨过门槛还早。
因为现在韧体也有 C++ 做的,所以物件导向有机会在这方面应用。
只是你可能被同事投诉,说你故意写他们看不懂的 code (这我学弟遇过),
开明一点的主管可能要你开教育训练课程帮忙训练同事,
所以你可能得学到会教人的程度,不能只是半桶水。
写 app 就更不用说,物件导向还是要学,所以你现阶段可以加强物件导向的部分。
物件导向有三处要学,不能只学末端的物件导向程式设计:
物件导向分析 (OOA) -> 物件导向设计 (OOD) -> 物件导向程式设计 (OOP)
前两者 C++ 资源有限,很多是以 Java 为范例。
不过 Java 跟 C++ 长得很像,所以你学完 C++ 物件导向看那些书也很容易。
OOA 跟 OOD 入门你直接看 O'Reilly 这两本:
1. 深入浅出物件导向分析与设计
2. 深入浅出设计模式
先看 1 再看 2,後者算是 OOD 用的 library,只是它是概念而不是程式码。
读完以後接着这两本:
3. Refactoring: Improving the Design of Existing Code
4. Refactoring to Patterns
这两本都有中译本,只是我不知道还有没有在卖。
主要是强化你程式结构的东西,後者属於物件导向设计的范围。
OOP 的话你在学特定语言就会学到,应该是你最早期碰到的部分。
确定你未来的方向并选定程式语言以後,你再把它进一步加强。
工程师一般会偏重於 OOD 跟 OOP 的部分,但不了解 OOA 会做出莫名其妙的设计。
所以 1 你还是得耐心看,免得你醉心於把工程当成美术在创作还无视需求。
工作上 OOA 你通常管不太到,所以先有个概略了解就好。
硕班毕业以前记得去修软体工程,如果你想走 app 的话。
: 希望前辈们给点建议:
: 1.往这本书後面读(稍微往後翻 内容大概有tree STL Algorithm...)
上面建议给完了。
STL 的使用方法学一学就好,确定要走 C++ 之後你再回来问。
: 2.刷CPE题目 顺便做准备
要刷去刷 leetcode,但是建议上硕班再刷,也就是要找工作前刷一刷。
因为你说你要转资工,所以我就先假设你会拿硕士了。
: 3.学习其他语言 (Python,Java...)
你确定要走 app 还是韧体以後再说,这阶段比较建议你自学资料结构而不是更多语言。
比起特定语言,学一下泛用知识会比特定语言还要好。
但这不代表语言不重要,语言是你将来吃饭工具,一旦决定方向你就要把语言学到精通。
: 另外还有一点疑问 我现在是用mac的Xcode在编译C++
: 有大大能推荐自学熟悉xcode介面操作的资源吗
: 以前上课作业都是在windows下编译的 最近刚换电脑...
--
Ling-hua Tseng
Senior Engineer
Compiler Group, RD/Software Division
Andes Technology Corporation
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.116.164.123
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1530247491.A.033.html
1F:→ johnny94: OOAD 很重要,但可能是我待的地方太鸟,所以根本没人在 06/29 12:55
2F:→ johnny94: 意,都只想赶快写 Code 06/29 12:55
所以读後面两本 refactoring 很重要。
OOAD 在学生时代把观念先建好,实际操作走先写再重构的路线,
这样培养的话,比较不会在初期就写出重构等於重写的东西来。
至少就算直接写 code,脑袋里也会有个概略的设计草图在,日後改善就好。
3F:→ roy87921: 感谢t大 心中大概有个方向了 但资结有可能会在大二修正 06/29 16:43
4F:→ roy87921: 有必要先自学吗 06/29 16:43
5F:→ roy87921: *修正课 06/29 16:44
先学不是坏事。
学校一般会把资结教得很理论,偏实作的部分可以先自己领会一下。
※ 编辑: tinlans (122.116.164.123), 06/29/2018 23:07:11