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

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

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

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

4062 次点击
所在节点    程序员
32 条回复
nicebird
2020-05-29 17:00:30 +08:00
业务程序员、技术架构师,1 用处都不大,上过就行了。2 、3,用的比较多,尤其是架构时,必须从顶向下全盘考虑。
kop1989
2020-05-29 17:07:26 +08:00
程序员编程是“软件工程”,是工程学范畴,讲究最优性价比。
数学用的比较广泛的是“计算机科学”,是理科范畴。

这是完全两个方向。虽然都有“计算机”。
secondwtq
2020-05-29 19:11:43 +08:00
转个笑话 ...
https://news.ycombinator.com/item?id=14191577
第一个回复
CODEWEA
2020-05-29 19:15:02 +08:00
程序员开发产品是非常考验综合素质的,上面仅仅是开始认识计算机方面的书籍。
zjsxwc
2020-05-29 20:17:08 +08:00
离散数学倒是计算机的基础,布尔代数、树、图、有限状态机这些都是离散数学的东西,可以说在计算机里简直无处不在程序员天天接触,其他微积分、概率论什么的倒是很少用到。
zjsxwc
2020-05-29 20:25:18 +08:00
微积分真的很少很少用到,而工程上复杂微积分问题,又可以通过复变函数中拉氏变换、Z 变换、傅里叶变化这些简化为线性代数问题,所以把线代学了就好了,虽然 crud 程序员也基本没机会用到线代,汗
zjsxwc
2020-05-29 20:28:15 +08:00
请 v 站大佬介绍下哪里要用 概率论?
Mithril
2020-05-29 20:30:24 +08:00
@zjsxwc 写个摇号程序年会抢红包
nicevar
2020-05-29 20:35:37 +08:00
@zjsxwc 足彩数据分析
Mithril
2020-05-29 20:39:48 +08:00
其实这些基础课程所学的具体知识你可能期末考完以后这辈子都用不到了,但是学到的理念和思想会终身受用。
就说概率论,最简单的学过都知道小概率事件并非不可能事件。那为什么还有人要用哈希做数据库主键呢?哪怕是 SHA256,发生碰撞概率极小,但并非不可能的。
再比如说你操作系统学过 IO 就不会做出开多线程写硬盘这种匪夷所思的事。
只是有些东西你不会特意去考虑什么时候学的,具体的技能也很少被用到,并不代表它对你真的一点影响也没有。
Nerv
2020-05-30 07:23:40 +08:00
data-lab 的题目我是靠直觉和一步步推导完成的。(然而卡在 ”logicalNeg“之后就鸽了俩月还没做)。原来这种问题可以有专门的数学方法来解决,受教了🎈。
nightwitch
2020-05-30 10:30:10 +08:00
线性代数和概率论是最常用的, 因为涉及到数值计算的工作每天都在打交道. 高数反而用的比较少, 因为教科书上那种干净的解析解在现实里是不存在的.

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

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

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

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

© 2021 V2EX