如何看待数理和计算机基础对程序员的作用?

2020-05-29 10:00:52 +08:00
 jiangwenjie
  1. 《离散数学》《高等数学》《概率论与数理统计》《线性代数》
  2. 《数据结构》《算法》《计算机网络》《操作系统》
  3. 《深入理解计算机系统》一书中的知识

注 1:请从业务程序员、技术架构师、软件相关研究人员的方向出发分别讨论,也请标注出每门科目需要掌握、熟悉、了解的章节或模块,因为每一门科目都极其庞大,值得人一生研究。

注 2:有此问题是因为在做《深入理解计算机系统》的 data-lab 时第一题就需要用离散推导,题目为在 32 位系统上使用 C 语言,使用~和&实现补码^操作,且不能使用控制语句(如 if,case 等)

3797 次点击
所在节点    程序员
32 条回复
HashV2
2020-05-29 10:21:19 +08:00
工作一年了,觉得自己网络这块确实差劲,这周才买了计算机网络 刚看到第二章应用层,感觉看这种书对技术的帮助没有那么立竿见影,但是对于架构会有一个比较清晰的认识,在学习相关技术的时候更容易理解和吸收
ps: 之前我网络 7 层架构是啥都背不出来,各位见笑了 23333
ipwx
2020-05-29 10:24:22 +08:00
我怎么觉得你说的深入理解计算机系统那坨推导是高中数学。。。

离散的话,国内本科的离散数学就是个大杂烩,有高中数学部分(组合、逻辑)、有群论入门,有些还有图论。你计算机很多东西用到高中数学,那确实避不开。其他的数学,如果你只是搬砖,估计用不到多少。。。
ipwx
2020-05-29 10:28:03 +08:00
顺便你列的几个,只是会用,本科学两年就够了,用不着一生去研究。
neptuno
2020-05-29 10:29:03 +08:00
感觉大学里就是给你个影响,,让你以后工作了遇到问题能清楚知道自己是哪块知识不懂,然后可以精准的弥补这一块知识
kiracyan
2020-05-29 10:33:14 +08:00
就想工具书一样 你可能不用精通 但是你要浏览一遍 知道一些知识点在哪 用到的时候再去查
zealot0630
2020-05-29 10:52:56 +08:00
这些东西决定了你会不会 35 岁失业
zhaorunze
2020-05-29 11:40:42 +08:00
工作两年,发现思想和算法才是程序的灵魂,语言只是骨架。
enjoyCoding
2020-05-29 11:50:59 +08:00
业务程序员?: API caller,熟悉公司业务就可吧
Jooooooooo
2020-05-29 12:26:59 +08:00
没啥用, 建议大家都别学
hoyixi
2020-05-29 12:38:22 +08:00
没啥用,你的公司只关心你能不能加班
wangyzj
2020-05-29 13:02:23 +08:00
不说机器学习相关职业
数学作为工具主要是 cs 底层设计的理论基础
数据结构这些是基于这些理论的经验实现
计算机系统是这些经验实现的最终产物,当然不是只有这些

只是写写代码,这些可以说都不需要
要是想不断深究,就都必不可少
不过我觉得到数据结构基本也就差不多了
index90
2020-05-29 13:21:46 +08:00
没有这些知识,你连论文都看不懂,更别说实现了。

你以为那些二维码 lib 天生就存在的吗?还不是人写的,为什么那个人不可以是你自己?
Yoock
2020-05-29 13:25:09 +08:00
这些才是里子,写业务逻辑可替代性太高
ddoocc
2020-05-29 13:48:12 +08:00
第一行:线性代数是大部分理工科最重要的数学课程。不过怎么说呢,需要这些知识的岗位太少,会的人少,但是比需要的多。
第二行:合格的程序员都应该会写玩具级别的操作系统。
第三行:合格的程序员至少应该有所了解,知道问题出现时优化的方向。
PS: 那个 data-lab 我也做过,用数电画卡诺图的方法也可以做。
jiangwenjie
2020-05-29 13:49:42 +08:00
@ipwx 会用是个很模糊的概念,而本科课程往往是阉割版的,并不足以窥探学科的全貌,比如对数据结构-树而言,是考试 60 分就算会用?还是能熟练使用高级语言 api 就算会用?还是能在遇到一个问题时能想到这种数据结构,并全面了解它的结构及变种,确定它是最优解?还是能手写二叉树?更甚一步是能和图进行知识图谱搭建?
wizardoz
2020-05-29 13:51:27 +08:00
有些东西是具有一定的相关性,但是未必是因果关系。
as94boy
2020-05-29 13:54:25 +08:00
感觉颜色需要调一下,一片红给人感觉是出 bug 了。
SKcoder
2020-05-29 13:54:28 +08:00
简单来说,数学决定了你的工作量,是用十行代码完成还是 100 行代码完成一个功能。
低层的知识决定了你程序的稳定性,并且当性能指标出现异常时能迅速定位。
结合起来,就可以快速写出即稳定右高效的程序,对于整个架构也会有更加清晰的认识。

个人愚见
as94boy
2020-05-29 13:55:04 +08:00
@as94boy 抱歉,回复错了。
chengkai1853
2020-05-29 13:58:34 +08:00
@index90 这么厉害,膜拜啊

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

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

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

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

© 2021 V2EX