如何学习网络、操作系统、编译原理等知识?

2018-09-13 09:37:26 +08:00
 javaWeber
我尝试看些书,但是一打开全部都是概念,几百页堆砌的砖头。。合上书以后这些概念又全忘光了。
比如学习语言或者框架,我可以照着做个简单的 demo,边学习边实践,这样比较容易理解。
看操作系统,我又写不出一个操作系统,就看书本里的概念,实在是学不进去。
请教,如何学习网络、操作系统、编译原理等知识?
11147 次点击
所在节点    程序员
65 条回复
Marmot
2018-09-14 09:30:00 +08:00
@zbcwilliam 赞,是个好东西,油管上有视频
songteng0604
2018-09-14 10:53:38 +08:00
中国大学 mooc 这学期课程又开始了
dingzs3
2018-09-14 12:35:21 +08:00
@enaxm 哥们,如果你忘了那就说明你学的东西没有用到的地方,还有就是书中的代码你可能没有脱离书本自己敲,扩展功能,调试。
如果是这样的确容易忘,你必须先确定目标,要学习什么,是否会实际用到。
或者是列一个目标,我要用 C 开发一个双人五子棋,这个就设计到网络,数据结构与算法。
那么你抱着目的去找资料学习,去设计,去编码,遇到问题继续 baidu。这样才记得牢,
我当前学的时候也是没有实际用到的地方,怕忘就记了几个笔记本,没事就回头看看。
enaxm
2018-09-15 10:23:59 +08:00
@dingzs3 我的回复其实是有两点想表述的,不过之前没大有时间现在重新叙述一下:
1.我认为对于基础的学习是必要的,但对于底层的学习是没有必要。基础是算法、数据结构、网络编程这些,而底层是逆向、汇编、编译原理这些。毕竟开发语言是一层一层封装的,应该去研究语言的运用场景而不是深入底层知识,我们看嵌入式的工资就好了,市场也证明了这点。
2.工作之后时间是非常分散的,即使工作之前没有掌握的内容,也只能在工作之余按点进行弥补,不太可能一条直线一直学下来,而且对于学习方面应该从业务入手分析需要哪些知识满足业务需求之后补充基础知识,没有应用场景的话我的思考还是尽量不涉猎,因为真的很容易忘。
dingzs3
2018-09-17 14:08:24 +08:00
@enaxm 你说得也很对,可能我说的还是太偏向自己固有的经验和路子了,理论上如果有工作,那么最好是工作相关的或者是有一定的帮助的,就像你说的了解算法 /数据结构和网络。我当时是觉得大学毕业什么都不会,所以强制给自己定的目标,了解计算机操作系统,硬件是如何协同工作的,所以偏向于底层方面的。而事实是,刚好我后来做 DNS 开发,对性能要求极高,所以这些东西都用的上了,比如我有时候会反编译程序看它实际编译出的程序的汇编代码,看看是否符合预期对编译器的要求,或者是程序出了 bug,需要定位等等。如我相信,只要你能在空闲时间不断的充实自己,不断的学习,那么必然会提升的,加油吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488803

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX