![]() | 1 cuzfinal 2018-09-13 09:41:24 +08:00 考个大学并选择计算机专业 |
![]() | 2 hongch 2018-09-13 09:44:02 +08:00 看多了就懂了 |
5 Hieast 2018-09-13 09:49:26 +08:00 via Android 你在学校不做实验么,做了实验还能忘? |
![]() | 6 zongren 2018-09-13 09:51:20 +08:00 我猜是看书吧,毕竟我也没看过 |
![]() | 7 BingoXuan 2018-09-13 09:53:13 +08:00 via Android ![]() 要理解凯撒不一定要成为凯撒 很多概念并不是要你具体实现出来,需要你抽象理解它的过程,原理,模式,以此推及到其他问题的解决。 |
![]() | 8 ericv 2018-09-13 09:53:13 +08:00 放弃吧..... |
9 nilrust 2018-09-13 09:53:46 +08:00 看书啊,大学时应付考试也就一礼拜突击下的事情 |
![]() | 10 mathzhaoliang 2018-09-13 09:56:11 +08:00 毕业了,就不太可能从头开始系统学习那些基础知识了,除非你能自己闭关两三年,啥也不做,待在一个地方专心修炼。 建议在工作中,用到什么补什么。遇到一个问题就把它搞明白,这样积累的经验多了也可以达到融会贯通的效果。 |
11 zhaoweichen 2018-09-13 10:03:55 +08:00 ![]() 我觉得好的 CS 课程都是边学习边实践的,应该跟 lz 学语言和框架类似。 操作系统的话,是可以写出来简单的 demo 的。这个可以参考斯坦福 CS140e 里给树莓派写系统的项目。 如果需要明白更复杂的东西,在基础足够的情况下可以去看相关的论文或者代码。 其实就是按照本科生操作系统课和研究生操作系统课再上一次。 如果想再进阶一步,就是博士生水平的课程,把之前论文里的系统自己实现一遍。 网络和编译原理都是类似的操作。网络从 socket+发 /解包开始,到后面写写简单的协议栈都是可以分成若干比较小的项目的。 |
![]() | 12 zhaogaz 2018-09-13 10:05:05 +08:00 我猜楼主可能没读完过。 怕忘可以再看一遍嘛,很简单的。 |
![]() | 13 vindurriel 2018-09-13 10:10:38 +08:00 via iPhone 带着问题去读 书是用来做参考的 |
14 zynlp 2018-09-13 10:15:45 +08:00 via iPhone /div> 学而不思则罔,思而不学则殆 |
![]() | 15 tonychow 2018-09-13 10:16:12 +08:00 可以从基础中取一个点,对比实践,去找书里的内容或者搜别人的文章反复看,看到能理解。 |
16 huangya 2018-09-13 10:17:13 +08:00 ![]() 1.计算机网络一定要做实验。分两种: A.构建计算机网络,比如搭建一个小型网络,包含路由转发。有条件的,用真实的设备,没条件的用模拟软件。 B.写代码。比如实现一些应用层网络程序或者更深一点的抓包组包(2层)程序。 2.操作系统也一定要做实验,推荐 MIT 6.828 JOS。这个课程里面有些问题还是有一定难度的。应该属于研究生课程。但 lz 已经毕业,所以应该没问题。 3.编译原理没深入研究过,不做评价。 |
![]() | 17 wizardforcel 2018-09-13 10:38:31 +08:00 当然是做 lab 啊,你那样像文科一样背概念根本没用 |
![]() | 18 Hsinyao 2018-09-13 10:49:13 +08:00 via iPhone mooc |
19 t6attack 2018-09-13 11:06:47 +08:00 上学时在书店看到过两本书。一本是讲 linux 内核源码的,一本是讲 win32 汇编的。 两本书都像辞海一样厚。看那个厚度,就直接放弃了。 |
20 zhzer 2018-09-13 11:46:19 +08:00 via Android 说那么多,写了,实现了,就会了 |
21 dilu 2018-09-13 11:50:20 +08:00 via Android 你真以为计算机专业四年就是混混就过来了?四年里我们安排了电工实验,软件实验,数电实验,微机原理实验,我们要学各种专业知识,包括不限于计算机组成原理 计算机网络 编译原理 数据库原理 微机原理 计算机操作系统 软件工程等等,你想几个月甚至半年就学完并理解?看上四五年,资质不算太差的就能懂了。 |
![]() | 22 abmin521 2018-09-13 11:52:09 +08:00 via Android |
![]() | 24 ronglexie 2018-09-13 12:36:55 +08:00 |
25 printese 2018-09-13 12:47:12 +08:00 via iPhone 从描述来看,楼主想要重温大学阶段的基础知识。不妨从嵌入式入手,从简单的 8051 的驱动,到 arm 的内核移植,一步一步来,边做边学,这样可能会更有效率,而且像操作系统,组成原理,编译原理,算法,这些都能涉及到。 |
26 xiiin 2018-09-13 13:43:32 +08:00 推荐买课本看,注意,不是书籍,是课本。 首先,课本的设计初衷就是“给初学者传授相关知识”,完美契合题主的需求。 其次,课本的知识体系较为系统,有助于深刻理解相关知识。 最后,题主你得弄明白一个问题:学习是一个漫长而痛苦的过程。 不存在“开开心心轻轻松松”的学习捷径。 |
![]() | 27 zhengxiaowai 2018-09-13 13:45:37 +08:00 别被洗脑了,经典国外教科书,是学不来的,老老实实买国内的教科书慢慢看 |
28 xpresslink 2018-09-13 13:47:25 +08:00 楼主再加一个图形学就把程序员的三大浪漫凑齐了。 |
![]() | 29 lxrmido 2018-09-13 14:01:05 +08:00 via iPhone ![]() 有好几本书是手把手教你从头到尾写一个操作系统的,名字大概就是自己动手写操作系统或者一个操作系统的实现之类的,大学的时候我写了一遍,大概三四万行代码,然后操作系统就理解了,编译原理也有类似的书,我写了个 lisp 的解释器也理解得差不多了,所以归根到底还是要动手。 |
30 across 2018-09-13 14:03:17 +08:00 via iPhone 考研套装书 |
![]() | 31 innoink 2018-09-13 14:04:15 +08:00 via Android 你不能把这些和语言框架比,因为不在一个层次上 |
![]() | 32 mhycy 2018-09-13 14:04:15 +08:00 定一些目标开几个坑~ 边折腾边学有兴趣自然而然能学会。。。 |
33 zbcwilliam 2018-09-13 14:30:17 +08:00 ![]() 推荐一个操作系统课程: http://os.cs.tsinghua.edu.cn/oscourse/ucore/2016 ;操作系统书籍推荐 ostep. |
![]() | 34 ZiLong 2018-09-13 15:05:35 +08:00 ![]() @BingoXuan What I cannot create, I do not understand ---- Richard Feynman |
![]() | 35 wizardforcel 2018-09-13 15:31:42 +08:00 @zhengxiaowai 劝别人读国产的垃圾教材,是要上史书的。 |
![]() | 36 zhengxiaowai 2018-09-13 15:36:49 +08:00 @wizardforcel 你懂什么入门吗,上去算法导论你看懂吗,上去 scip 肯定懵逼,没有计算机基础,csapp 看得懂算我输。书垃圾不垃圾另说,能入门才是真的。被经典大部头劝退的人的人太多了 |
![]() | 37 wizardforcel 2018-09-13 15:49:16 +08:00 ![]() @zhengxiaowai 《算法导论》并不是导论。你以为国外的算法书,每本都跟算导似的?? Sedgewick 的《算法》红皮书了解一下??里面的讲解和 Java 实现,还配有公开课,哪个不比你国的垃圾教材好用?? 拿着算导一个个例就说国外的大部头不适合入门??你怎么那么现眼啊?? |
![]() | 38 wizardforcel 2018-09-13 15:55:42 +08:00 @zhengxiaowai 还有 CSAPP 不比你国的垃圾组成原理讲得明白??你国垃圾教材有几个能把微指令讲清楚的??有几个能把 malloc 的原理说明白的??有几个能上手 hdl 手撸数字逻辑的??读你国垃圾教材毕业的人,知道 pipeline 是什么么? 都啥时候了还一水的 8051 和 8086,不嫌寒碜,这种教材不读也罢。 |
![]() | 39 7wN5407klUw768m0 2018-09-13 16:09:04 +08:00 @zhengxiaowai 算法导论,scip 都是大一第一学期教材,csapp 也就是大二上学期教材吗?你不能按照中国专科院校进度和深度要求自己 |
![]() | 40 7wN5407klUw768m0 2018-09-13 16:11:52 +08:00 @dilu 因为你大学四年你还学了马克思主义哲学,军事理论,体育课,泡妞把妹,最后考试前 deadline 突击过,真正压缩一下,再刨去工程实践的课,两年足以。 |
![]() | 41 zhengxiaowai 2018-09-13 16:34:29 +08:00 @wizardforcel @Taojun0714 你们忽略的一个很重要的东西,那玩意是教材,而且是很全的教材,那些弄懂哪些要么有老师带你,要么你本身足够优秀,才能看得懂,对于入门来说,先学会才是重要的,这玩意放后面看。 @wizardforcel 你明白什么是深度么,盲目追求自己没能力的东西,那叫扯淡,国内有很多优秀的教材,只是被像你这样盲目跟风的人给抹杀了, 比如严蔚敏的《数据结构》,虽然代码很一般,但是原理讲的足够清楚。 |
42 dilu 2018-09-13 16:40:36 +08:00 @Taojun0714 两年我认同 但是几个月恐怕真的不行 |
43 dingzs3 2018-09-13 16:48:51 +08:00 ![]() 楼主别听他们的,我是大学毕业只会 helloworld 的计算机科学与技术专业毕业。 后来也是自学的,只要有这个动力和毅力,首先把电脑的系统装成 linux,虚拟机装 windows (别玩游戏了) 我都是毕业后从新自学的,推荐你看下面的书: 深入理解计算机系统 至少看一遍,例子也要写出来跑跑 建议可以再学学汇编(也可略过,当年学习这个搞逆向破解,连续一个月,每天睡眠都不足 6 个小时,啊哈哈哈哈) 再看啊哈算法,这个例子都写过调试过并能够自我扩展。 接着再看数据结构与算法(基本的队列,链表,散列,二叉树平衡树(选一个 avl 或者是红黑树学习)即可,要能够自己敲代码可以运行) 再接着就看网络编程方面的书。 再往后就海阔天空了,linux 内核原理啊,tcp/ip 协议栈代码分析啊等可以深入学习了。 我最开始也是啥的不会,学的很枯燥,但是在当时学习队列,遇到内核源码 kfifo.c 的一个博客的讲解,看懂了之后真的是惊为天人,自此才有了兴趣,学起来就很有动力了。 在之后学啥东西感觉都轻松了,什么 java,python,golang,Javascript。 如果明白计算机是怎么运转的,其它都是浮云了。 |
![]() | 44 expy 2018-09-13 16:52:49 +08:00 https://github.com/ossu/computer-science ossu 整理的计科在线学习材料,MOOC 有老师往嘴里喂应该轻松点。 |
![]() | 45 shijingshijing 2018-09-13 16:56:32 +08:00 via iPhone scip 不推荐,csapp 总归是要读一遍的。 |
![]() | 46 chengxiao 2018-09-13 17:04:23 +08:00 v2 的标准 慢慢 就会变成 不是清华北大 你看什么 编程啊 本科那些东西拿出来 真的有现在写工程难吗? 还这 Lab 那 Lab 已经有编程经验和项目经验的 回头看这种基础其实学的更快吧 看书看例子 平时项目怎么学 这里就怎么学就行了呗 |
47 onepunch 2018-09-13 17:12:07 +08:00 学习网络 大连理工计算机网络谢希仁版 操作系统 鸟哥的 linux 私房菜 编译原理 机械工业出版社编译原理 |
48 ThirdFlame 2018-09-13 17:25:47 +08:00 网络 可以用 思科 华为的模拟机 跟着实验做。能把实验做完 基本上都能理解的差不多。 不过如果没有现实的网络环境 和 解决实际遇到的网络问题,光靠实验记忆不会深刻。 |
49 huangya 2018-09-13 17:35:43 +08:00 @abmin521 哈哈,我已经毕业几年了。当时是在学校跟着老师做的,不是某本书上的 lab。 1.记得当时在模拟软件上配过交换机(含 VLAN),路由器和防火墙。最后作业是构造小型的企业网络,该企业有生产、办公这两种业务;需要实现业务隔离;为了内网的安全,在边界放置了一台防火墙,防火墙上设置三个区域,inside、outside、dmz,nside 区域与内网的用户相连,dmz 区域主要放置服务器( FTP、WEB ),outside 区域连接到 internet。利用 ACL 访问控制列表实现流量控制。 2.代码的话,课程设计的作业有写聊天软件,LInux 下纯C语言,没有使用任何封装库。还写过 ping,trraceroute 等程序。当时还看了将近一两个月早期 linux 网络协议栈的代码。 |
![]() | 50 seraphv3 2018-09-13 17:54:52 +08:00 |
![]() | 51 7wN5407klUw768m0 2018-09-13 18:53:17 +08:00 @zhengxiaowai 1. 配套课程全套的国内外不同院校视频满大街,你找不到? 2. 你没上过大学不知道大部分就是自学,习题答案 lab 全齐你自学能力是零? |
![]() | 54 onice 2018-09-13 20:25:17 +08:00 编译原理比较难,楼主倾向于实战的话,可以看看《两周自制脚本语言》 |
![]() | 55 seraphv3 2018-09-13 21:22:16 +08:00 @WeberXie 看过一遍,网上有随书光盘中汉化的代码,代码跑了的 我觉得有人如果有时间的话,在这个代码基础上,加上 smalltalk 的面向对象思想,能够自己做出一个图形界面的操作系统出来 |
![]() | 57 zhengxiaowai 2018-09-13 21:51:26 +08:00 @Taojun0714 你能力强,不代表别人能力强 |
![]() | 58 wizardforcel 2018-09-13 22:53:51 +08:00 via Android @zhengxiaowai 我就告诉你,在计算机的世界里,只背概念不实战,才是扯淡。 学完操作系统这门课,你不能实现一个简单的操作系统,甚至连填空性质的 lab 都做不出来,就是扯淡。 你以为计算机科学是干嘛的??跟文史哲一样整天背几个名词就懂了??那你去读文史哲吧,计算机不适合你。 |
![]() | 59 wizardforcel 2018-09-13 22:54:39 +08:00 via Android @chengxiao 你要考虑大多数人的工程是 curd,写测试用例,或者配交换机路由器。。。 |
![]() | 61 Marmot 2018-09-14 09:30:00 +08:00 @zbcwilliam 赞,是个好东西,油管上有视频 |
![]() | 62 songteng0604 2018-09-14 10:53:38 +08:00 via iPhone 中国大学 mooc 这学期课程又开始了 |
63 dingzs3 2018-09-14 12:35:21 +08:00 @enaxm 哥们,如果你忘了那就说明你学的东西没有用到的地方,还有就是书中的代码你可能没有脱离书本自己敲,扩展功能,调试。 如果是这样的确容易忘,你必须先确定目标,要学习什么,是否会实际用到。 或者是列一个目标,我要用 C 开发一个双人五子棋,这个就设计到网络,数据结构与算法。 那么你抱着目的去找资料学习,去设计,去编码,遇到问题继续 baidu。这样才记得牢, 我当前学的时候也是没有实际用到的地方,怕忘就记了几个笔记本,没事就回头看看。 |
![]() | 64 enaxm 2018-09-15 10:23:59 +08:00 @dingzs3 我的回复其实是有两点想表述的,不过之前没大有时间现在重新叙述一下: 1.我认为对于基础的学习是必要的,但对于底层的学习是没有必要。基础是算法、数据结构、网络编程这些,而底层是逆向、汇编、编译原理这些。毕竟开发语言是一层一层封装的,应该去研究语言的运用场景而不是深入底层知识,我们看嵌入式的工资就好了,市场也证明了这点。 2.工作之后时间是非常分散的,即使工作之前没有掌握的内容,也只能在工作之余按点进行弥补,不太可能一条直线一直学下来,而且对于学习方面应该从业务入手分析需要哪些知识满足业务需求之后补充基础知识,没有应用场景的话我的思考还是尽量不涉猎,因为真的很容易忘。 |
65 dingzs3 2018-09-17 14:08:24 +08:00 @enaxm 你说得也很对,可能我说的还是太偏向自己固有的经验和路子了,理论上如果有工作,那么最好是工作相关的或者是有一定的帮助的,就像你说的了解算法 /数据结构和网络。我当时是觉得大学毕业什么都不会,所以强制给自己定的目标,了解计算机操作系统,硬件是如何协同工作的,所以偏向于底层方面的。而事实是,刚好我后来做 DNS 开发,对性能要求极高,所以这些东西都用的上了,比如我有时候会反编译程序看它实际编译出的程序的汇编代码,看看是否符合预期对编译器的要求,或者是程序出了 bug,需要定位等等。如我相信,只要你能在空闲时间不断的充实自己,不断的学习,那么必然会提升的,加油吧 |