做了几年开发,发现应用层的东西怎么学都学不完。
只有底层和基础,几十年都不变。 现在想回去把基础都加深一下,提高下内功。
作为一个计算机科班的学生,应该具备哪些基本的基础知识呢?
下面每个分支都列出了参考的书籍内容。 希望大家也能提供一些建议。
http://naotu.baidu.com/file/1a0e968910ebcf1f2d7c499a90294350?token=39df775a20b4f6da
1
wshcdr 2017-01-18 15:37:30 +08:00 2
楼主就是忘了一个英语,其他很完美了
|
2
xiandao7997 2017-01-18 15:38:27 +08:00 1
把妹。大学可以挂科,不能不谈恋爱。
|
3
xiandao7997 2017-01-18 15:38:36 +08:00
@xiandao7997 一把辛酸泪。。。 TAT
|
5
hffaxy 2017-01-18 16:06:02 +08:00 2
垃圾本科非计算机科班,除了没有选择做小型操作系统的课设以外,其他上述知识点也基本在大学里学过一遍了。
楼主列出的书感觉大多都是经典,感觉能够看完的人真的太厉害,至少我差得远。其实很多的都还是看的学校的教材。 比如说编译原理那里,我也只大致看过 SICP ,给我感觉就编译原理上来不如我学过的形式语言自动机和编译原理教材对实现一个语言的子集有帮助。 目前来说,毕业在小公司干了半年了,自己看的书更多的是工程方向的,毕竟大学没学过,什么设计模式啦, Effective C++啦,偶有补补算法之类,准备跑路笔试什么的,毕竟这半年来感觉能写代码和能写较为优雅的代码差别还是挺大的。 数学最近拾起来看了看,因为统计学习方法中间好多都看不懂了, sad ,机器学习好难。 啊,上班不能看书,下班不想看书,只能继续咸鱼了。 以上个人粗鄙意见,望轻喷 |
6
misaka19000 2017-01-18 16:11:00 +08:00
基本上很全了,这些都掌握本科毕业基本上就已经很厉害了
@hffaxy 是做机器学习方向的吗? |
7
hffaxy 2017-01-18 17:25:16 +08:00
@misaka19000 不是啊,本科学习的是信息安全方向。只是最近看了一些 TensorFlow 的东西,接触了一些机器学习,可是数学原理很多都已经不懂了。在我们学校只有计科科班才会学习机器学习,数据挖掘,人工智能什么的。我没学过的说。
|
8
greatghoul 2017-01-18 17:54:22 +08:00 via iPhone
我想会打字,应该算是一项基本能力。
|
9
wcj 2017-01-18 18:17:40 +08:00 1
电路不用学那么深,随便找本数字逻辑翻翻就行了,甚至硬件描述语言都不用看
计算机体系结构可能比组成原理更重要,量化研究方法那本太难了,硬件软件接口那本更适合 编译一个操作系统?还是实现一个操作系统?实现一个操作系统太复杂了,时间不值 编译原理不推荐龙书吗? 漏了数据库,范式很重要,推荐数据库系统概念 最后,献上一本神书:《计算机科学的基础》,图灵社区免费下载: http://www.ituring.com.cn/book/1019 |
10
langmoe 2017-01-18 18:27:53 +08:00
Windows 安装
安卓刷机 笔记本选购 路由器设置 |
11
misaka19000 2017-01-18 18:29:49 +08:00 via Android
@wcj 看了下目录,感觉还不错
|
12
withlqs 2017-01-18 18:30:46 +08:00
1 、数电的先修课程是模电,数电里面放大器的原理是模电的基本内容
2 、为什么把 操作系统 和 编译原理 放在一个组,我觉得 编译原理 和 组成原理(或者体系结构) 关系更大一些才对:比如指令的执行原理和指令流水线在编译器中的优化 3 、计算机图形学也值得推荐,会用到一些线性代数的内容 4 、有精力的话,组合数学学一下也很好:比如鸽笼原理、母函数、递推式转换、 polya...都是很美的数学知识 5 、算法的一些基础理论和微积分的内容相关,想深入算法理论,需要学习微积分(尤其是极限和级数方面的知识) |
13
jimzhong 2017-01-18 18:34:43 +08:00
1. 算法,数据结构,离散数学,线性代数
2. 数字电路,计算机组成,体系结构 3. 操作系统,嵌入式系统 4. 数据库 5. 计算机网络,密码学 6. 编译原理 |
14
m31271n 2017-01-18 18:41:38 +08:00
@greatghoul 调皮了。
|
15
kankk 2017-01-18 18:43:03 +08:00
工作后越来越发现大学的基础课程有多重要
|
16
crayonyi OP |
17
crayonyi OP @withlqs
1 我记得上学的时候只学了数电,没学模电。 不过模电比数电确实难好几个量级,还不敢去深入。 2 我把体系结构归到硬件了,所以编译原理就往下放,和操作系统放一起了。 3 计算机图形学、数值分析是到后期才学的,偏应用一些,学完才发现全是矩阵运算之类的。 当初要是和线性代数一起开课,我肯定卯足了劲学。 可以作为拓展材料看。 4 组合数学和微积分也可以作为拓展材料看。有些难度。 |
19
forrestchang 2017-01-18 19:33:49 +08:00 1
1. 硬件
- CSAPP :普通的程序员硬件部分看着一本应该已经足够了,第三版也出了,配合 labs 来做比较好,每一章后面有提供参考文献,想具体深入某一部分可以参考来阅读。 - 《计算机体系结构:量化研究方法》:有时间多的话可以看一下这一本。 2. 算法&数据结构 - CLRS :有人肯定说这本书太难了,其实是你看的方法不对。第一遍看的时候略过证明部分和习题就可以了,主要目的是了解各个算法的原理,然后用熟悉的语言实现出来;第二遍阅读的时候可以理解一下如何证明算法的正确性,习题中有很多有启发性的问题,配合 MIT 给出的视频和作业更好。 - 《算法》:红书, Java 描述,图多,不想看 CLRS 可以看这一本(看完这本 CLRS 还是逃不掉的) 3. PL PL 有太多东西了,了解较浅 - SICP : Scheme 、函数式、抽象,此书吹得有点过神了,但其实可能看完并不会发现有什么*明显*的提高,题目很有意思,看完这本书就可以和别人撕逼写 Tokenizer 了(笑 - 《 Programming Language Pragmatics 》: PL 入门书 先吃饭去了…… |
20
sundong 2017-01-18 20:06:22 +08:00
英语 + JAVA (或者你说的那些中间 挑一条路走 ) =。=
|
21
acumen 2017-01-18 20:16:14 +08:00
借用浙大某老师的设想
> cs 科班基础技能 github 、 command line 、科学上网、 markdown 、重复 7 次以上的动作就要写脚本... 个人感觉以上几点是最最...基本的技能。但是对于基本的深入展开还是有很多有意思的东西。反思学生时代自己...(惭愧,弱将毕业 |
22
q397064399 2017-01-18 20:54:51 +08:00
其实内功也是看你内到什么程度,如果你要练就神功,那么算法是必不可少的,可惜绝大部分时候都在调包
ML 之类的算法都是领域算法,这个比较高深,没良好的数学功底玩不转,非此领域的人士 没必要去填坑 简单的例如 算法( 4th 红书)里面讲的常见的算法,基本上只要高中数学的基础 理解+(证明) 编程语言这东西,如果是要搞自己一套语言 就推荐 编程语言的模式 (编译原理 这东西 毕竟..太厚了,实际开发中 有需要自己弄 DSL 再去看吧) 硬件相关以及计算机系统组成, CSAPP 一本足以, 再深层次的 其实跟应用开发没什么关系了, IT 行业开发的工种也是相对细分的 ,要你是做 底层驱动之类 当我没说,老老实实 啃操作系统 原理之类的,别连实模式 都搞不清楚 另外应用层开发 说实话,不就那么回事,真要研究 再针对的去找书看,每个人有自己开发的领域 搞 APP 的就老老实实搞 APP ,不要想着去搞 驱动 Farmework ,那不是你的领域(除非你下决心打算 转方向) 别上来就 龙书 虎书 三大浪漫,那都是扯淡 |
23
Powered 2017-01-18 21:33:40 +08:00 via iPhone
数据结构算法
操作系统 网络 数据库 这四样基础务必打好 |
24
JayFang1993 2017-01-18 21:45:39 +08:00
学那么多都没用,在其他人眼里,能解决『手机好卡』『电脑死机』的问题就够了
|
25
panda1001 2017-01-18 21:48:39 +08:00
面向考研学习 面向工资工作
|
26
Cassandra 2017-01-18 23:25:14 +08:00
@crayonyi 国外的老师也自己出书,没啥奇怪的。但最重要的是国外的计算机很多情况下是没有课本的,或者课本是不那么重要的。现实的问题那么多,课本永远写不全。
与其读书,我其实推荐去锻炼自己的逻辑。看过很多人写的代码,明明很简单的问题思路但是绕了很大一个圈的。可能是因为是新手,也可能是因为没有看到问题的本质,无论哪种原因肯定是费时又费力,写出来的代码大概也不是最好的。所以我觉得思维,逻辑对于程序员很重要,看到问题的本质,考虑到全部的可能性会让你的代码很完美。以不变应万变大概是我最喜欢的东西。 |
27
murmur 2017-01-18 23:27:38 +08:00
为什么不把数据放第一位,数学不行你这辈子都是码农,数学好才有不被培训班吞掉的可能
因为培训班培训不了数学,而且数学一半真看天分 数学不仅是数学,还代表一种逻辑思维能力,有的数学不行的,不仅是编程不行,写出的代码也一堆问题,就是缺乏最基本的思考能力 你们不是推 redux 么?多干几年就能见到那种给他纸和笔画状态画流程都画不明白的,更别提说把状态转移抽象为代码了 |
29
kingcos 2017-01-19 01:08:40 +08:00
感谢分享。。
时间好少啊!!要学的太多了!! |
30
gxbb097528 2017-01-19 04:37:43 +08:00 via Android
我去 吓尿了
|
31
Perry 2017-01-19 07:09:19 +08:00
需求工程 (Requirements engineering) 虽然不是必要,但是可以提一下
|
32
timehzy 2017-01-19 07:59:39 +08:00 via iPhone
我和楼主的想法一样,作为一个非科班出身的开发者,更是急需补充这些知识
|
33
rashawn 2017-01-19 08:14:21 +08:00 via iPhone
个人觉得 英语应该放第一位…
|
34
xiamx 2017-01-19 08:21:41 +08:00
为什么木有 automata theory, regular language, push down automata, turing machine, lambda calculus 这些?
|
35
linux40 2017-01-19 09:14:27 +08:00 via Android
除了最后两个,别的都是我在点的。。。我的重点是 2 。。。
|
36
bintianbaihua 2017-01-19 09:49:04 +08:00
数据结构和算法,操作系统,计算机网络( tcp , Ip 协议栈为主),数据库原理,编译原理,大学数学课(高等数学,线性代数,概率论,离散数学,组合数学,数值分析,运筹学),英语(计算机英语,商务英语,经济学英语)
|
37
fangjianbin 2017-01-19 09:53:23 +08:00
英语英语英语。。。一定要学好。还有妹纸妹纸妹纸一定要泡到。其他都不重要
|
38
mnzlichunyu 2017-01-19 10:10:40 +08:00
看到数值分析, 运筹学 ,商务英语,经济学英语, 我感觉我可能是上了假大学。
|
39
Vizogood 2017-01-19 10:13:04 +08:00
装系统
装逼 |
40
libook 2017-01-19 10:19:22 +08:00
如何快速入门一项技术
如何读一本书 怎样才算是一个优秀的技术人员 语文能力 翻墙能力 英语水平 如何沟通 如何解决问题 如何打破所学的知识体系 |
41
88250 2017-01-19 10:48:55 +08:00
什么是有技术含量? https://hacpai.com/article/1467959355943
|
42
gunshot 2017-01-19 11:20:29 +08:00
@mnzlichunyu 运筹学不坑吧,涉及到 LP, 不过我自己看了之后也不觉得有收获。
|
44
crayonyi OP @murmur 数学不放第 1 位,是因为前面几项和数学关系不是特别大,反而到了后面学数据结构、算法、图形学、数值分析等课程时,用的才比较多。 这样能尽快上手,并运用到实际中,体会编程的乐趣。
|
46
misaka19000 2017-01-19 11:32:43 +08:00 via Android
@xiamx 我也很奇怪,感觉一般提计算机基础好像都不会说到这些,可能一般做上层开发的不太会了解到这些问题。但是相反,做上层开发却经常会遇到数据库瓶颈等等,所以一般而言操作系统和算法这类的比较经常接触到,然后网络知识一般来说也是必不可少的。
|
47
coderluan 2017-01-19 11:52:09 +08:00
学习(不是工作)这种事应该是遵循木桶原则,感觉有缺陷的可以补充,但是讨论谁最长并没有什么意义。
|
48
azzwacb9001 2017-01-19 12:39:10 +08:00
有一套《程序员的数学》,用来补数学知识挺不错的。
|
49
hackpro 2017-01-19 12:39:25 +08:00
如果要成为顶尖的程序员 数学课使劲造
其他可以慢慢学 |
50
Romanticlizhi 2017-01-19 13:30:12 +08:00
英语太重要了
|
51
a15819620038 2017-01-19 14:06:50 +08:00
上学的时候还能这样要求自己完成以上所有,工作几年了还要完成以上是有些不切实际了哦。
看书复习过一遍比较可能。 |