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

2018-09-13 09:37:26 +08:00
 javaWeber
我尝试看些书,但是一打开全部都是概念,几百页堆砌的砖头。。合上书以后这些概念又全忘光了。
比如学习语言或者框架,我可以照着做个简单的 demo,边学习边实践,这样比较容易理解。
看操作系统,我又写不出一个操作系统,就看书本里的概念,实在是学不进去。
请教,如何学习网络、操作系统、编译原理等知识?
10895 次点击
所在节点    程序员
65 条回复
zhengxiaowai
2018-09-13 16:34:29 +08:00
@wizardforcel @Taojun0714 你们忽略的一个很重要的东西,那玩意是教材,而且是很全的教材,那些弄懂哪些要么有老师带你,要么你本身足够优秀,才能看得懂,对于入门来说,先学会才是重要的,这玩意放后面看。

@wizardforcel 你明白什么是深度么,盲目追求自己没能力的东西,那叫扯淡,国内有很多优秀的教材,只是被像你这样盲目跟风的人给抹杀了, 比如严蔚敏的《数据结构》,虽然代码很一般,但是原理讲的足够清楚。
dilu
2018-09-13 16:40:36 +08:00
@Taojun0714 两年我认同 但是几个月恐怕真的不行
dingzs3
2018-09-13 16:48:51 +08:00
楼主别听他们的,我是大学毕业只会 helloworld 的计算机科学与技术专业毕业。
后来也是自学的,只要有这个动力和毅力,首先把电脑的系统装成 linux,虚拟机装 windows (别玩游戏了)
我都是毕业后从新自学的,推荐你看下面的书:
深入理解计算机系统 至少看一遍,例子也要写出来跑跑
建议可以再学学汇编(也可略过,当年学习这个搞逆向破解,连续一个月,每天睡眠都不足 6 个小时,啊哈哈哈哈)
再看啊哈算法,这个例子都写过调试过并能够自我扩展。
接着再看数据结构与算法(基本的队列,链表,散列,二叉树平衡树(选一个 avl 或者是红黑树学习)即可,要能够自己敲代码可以运行)
再接着就看网络编程方面的书。
再往后就海阔天空了,linux 内核原理啊,tcp/ip 协议栈代码分析啊等可以深入学习了。

我最开始也是啥的不会,学的很枯燥,但是在当时学习队列,遇到内核源码 kfifo.c 的一个博客的讲解,看懂了之后真的是惊为天人,自此才有了兴趣,学起来就很有动力了。

在之后学啥东西感觉都轻松了,什么 java,python,golang,javascript。
如果明白计算机是怎么运转的,其它都是浮云了。
expy
2018-09-13 16:52:49 +08:00
https://github.com/ossu/computer-science
ossu 整理的计科在线学习材料,MOOC 有老师往嘴里喂应该轻松点。
shijingshijing
2018-09-13 16:56:32 +08:00
scip 不推荐,csapp 总归是要读一遍的。
chengxiao
2018-09-13 17:04:23 +08:00
v2 的标准 慢慢 就会变成 不是清华北大 你看什么 编程啊
本科那些东西拿出来 真的有现在写工程难吗?
还这 Lab 那 Lab
已经有编程经验和项目经验的 回头看这种基础其实学的更快吧 看书看例子 平时项目怎么学 这里就怎么学就行了呗
onepunch
2018-09-13 17:12:07 +08:00
学习网络
大连理工——计算机网络——谢希仁版

操作系统
鸟哥的 linux 私房菜

编译原理
机械工业出版社——编译原理
ThirdFlame
2018-09-13 17:25:47 +08:00
网络 可以用 思科 华为的模拟机 跟着实验做。能把实验做完 基本上都能理解的差不多。
不过如果没有现实的网络环境 和 解决实际遇到的网络问题,光靠实验记忆不会深刻。
huangya
2018-09-13 17:35:43 +08:00
@abmin521
哈哈,我已经毕业几年了。当时是在学校跟着老师做的,不是某本书上的 lab。
1.记得当时在模拟软件上配过交换机(含 VLAN),路由器和防火墙。最后作业是构造小型的企业网络,该企业有生产、办公这两种业务;需要实现业务隔离;为了内网的安全,在边界放置了一台防火墙,防火墙上设置三个区域,inside、outside、dmz,inside 区域与内网的用户相连,dmz 区域主要放置服务器( FTP、WEB ),outside 区域连接到 internet。利用 ACL 访问控制列表实现流量控制。
2.代码的话,课程设计的作业有写聊天软件,LInux 下纯C语言,没有使用任何封装库。还写过 ping,trraceroute 等程序。当时还看了将近一两个月早期 linux 网络协议栈的代码。
seraphv3
2018-09-13 17:54:52 +08:00
操作系统有本日本人写的书《 30 天自制操作系统》不错

https://book.douban.com/subject/11530329/
Taojun0714
2018-09-13 18:53:17 +08:00
@zhengxiaowai 1. 配套课程全套的国内外不同院校视频满大街,你找不到? 2. 你没上过大学不知道大部分就是自学,习题答案 lab 全齐你自学能力是零?
WeberXie
2018-09-13 18:58:31 +08:00
@seraphv3 看过吗?代码跑起来没
enaxm
2018-09-13 19:19:51 +08:00
@dingzs3 我是这个路线来的,不过我觉得学得有问题,之前的一些基础已经忘了。感觉还是应该缺哪补哪。
onice
2018-09-13 20:25:17 +08:00
编译原理比较难,楼主倾向于实战的话,可以看看《两周自制脚本语言》
seraphv3
2018-09-13 21:22:16 +08:00
@WeberXie 看过一遍,网上有随书光盘中汉化的代码,代码跑了的
我觉得有人如果有时间的话,在这个代码基础上,加上 smalltalk 的面向对象思想,能够自己做出一个图形界面的操作系统出来
WeberXie
2018-09-13 21:34:04 +08:00
@seraphv3 赞,收获大不
zhengxiaowai
2018-09-13 21:51:26 +08:00
@Taojun0714 你能力强,不代表别人能力强
wizardforcel
2018-09-13 22:53:51 +08:00
@zhengxiaowai

我就告诉你,在计算机的世界里,只背概念不实战,才是扯淡。

学完操作系统这门课,你不能实现一个简单的操作系统,甚至连填空性质的 lab 都做不出来,就是扯淡。

你以为计算机科学是干嘛的??跟文史哲一样整天背几个名词就懂了??那你去读文史哲吧,计算机不适合你。
wizardforcel
2018-09-13 22:54:39 +08:00
@chengxiao 你要考虑大多数人的工程是 curd,写测试用例,或者配交换机路由器。。。
seraphv3
2018-09-14 09:07:59 +08:00
@WeberXie 收获很大啊,至少知道了如果要做操作系统怎么开始动手了

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

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

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

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

© 2021 V2EX