V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
izzy27
V2EX  ›  问与答

数学对程序员来说真的很重要吗?

  •  
  •   izzy27 · 2019-08-04 21:46:14 +08:00 · 9356 次点击
    这是一个创建于 1937 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我是一名在校生,专业是数学和计算机的交叉学科,认识了不少计算机系的同学,几乎每个同学都对我说数学很重要。然而我在学习过程中发现理论和实践之间有着巨大的差异。就我个人而言做项目的时候几乎不会用到数学知识(极限积分微分向量...),同时学数学的时候更不会涉及到有关编程的内容。我大一在学数学,现在还在学数学,可能是我太菜了吧,始终没有感觉到两者的关联

    挺迷茫的,各位觉得数学对工作帮助真的很大吗

    82 条回复    2019-08-06 16:24:10 +08:00
    2067
        1
    2067  
       2019-08-04 22:07:56 +08:00   ❤️ 1
    我觉着,对于大部分程序员来说应该没什么帮助,平时的工作主要是两种
    1.事务性的代码,2.从网上获取各种轮子

    但是如果认真学了数学仍然完全入不了门的话,可能智力上不太适合程序员这个工作,至少逻辑思维能力可能不够
    aazz11
        2
    aazz11  
       2019-08-04 22:32:13 +08:00 via Android
    基本不会实际用到,但数学好的人逻辑思维,抽象能力强,写代码就比较厉害。
    yangzhezjgs
        3
    yangzhezjgs  
       2019-08-04 22:34:38 +08:00 via Android   ❤️ 3
    一些计算机科学的分支,比如机器学习,密码学,图形学等会很重要,其他方向基本用不到
    q8164305
        4
    q8164305  
       2019-08-04 22:36:37 +08:00 via Android
    应用层是不太需要的,造火箭的肯定是需要的,比如操作系统,图形学,游戏一类的,里面都是大量的数学
    ech0x
        5
    ech0x  
       2019-08-04 22:36:50 +08:00 via iPhone
    「 monad 不过是自函子范畴上的一个幺半群而已 」
    monad 是 Haskell 这门编程语言中的概念,自函子和幺半群则是数学上的概念。
    那么接下去的问题是 monad 有什么用呢?
    rabbbit
        6
    rabbbit  
       2019-08-04 22:36:54 +08:00
    图形学全是向量 矩阵 线性代数,一个头两个大.
    rabbbit
        7
    rabbbit  
       2019-08-04 22:38:23 +08:00
    three.js 已经封装的够好了,还是要各种矩阵 向量转来转去.
    murmur
        8
    murmur  
       2019-08-04 22:40:38 +08:00   ❤️ 1
    懂数学的才能叫程序员,不懂的只能停留在码农级别,这不是说你编码用不用数学,数学本身就是逻辑思维的能力
    lhx2008
        9
    lhx2008  
       2019-08-04 22:44:34 +08:00
    做算法(计算机视觉,自然语言,机器人)要的,普通码农(前端、后端、移动端、桌面端、测试、运维)不需要
    lsqy
        10
    lsqy  
       2019-08-04 22:49:22 +08:00
    算法和数据结构与数学都有一定的关系,如果你想往深度发展,往往会需要花精力去加强算法和数据结构的掌握能力,所以说数学还是需要好好学好的.
    smdbh
        11
    smdbh  
       2019-08-04 22:53:28 +08:00
    比如银行,可能大多数人会加减乘除就够了。
    但个别职位,这些是远远不够的
    trustbutverify
        12
    trustbutverify  
       2019-08-04 22:54:28 +08:00 via iPhone
    对码农不重要 对程序员重要
    ZRS
        13
    ZRS  
       2019-08-04 23:00:14 +08:00
    数学好的干啥都厉害
    akira
        14
    akira  
       2019-08-04 23:00:36 +08:00
    如果你只是想做一个每天重复写增查删改代码的“程序员”,那确实无所谓,外面零基础培训班一个月出来就可以了。
    murmur
        15
    murmur  
       2019-08-04 23:03:57 +08:00   ❤️ 1
    @lhx2008 前端是要的,不会数学 transform 非 90 度和 180 度角旋转就已经不会了,那可是个矩阵运算
    ipwx
        16
    ipwx  
       2019-08-04 23:05:08 +08:00 via Android
    取决于你现在什么层次(学校排名),以及你未来想走到什么层次。
    youngxu
        17
    youngxu  
       2019-08-04 23:07:57 +08:00 via Android
    对于“计算机科学与技术系”重要,对于“软件学院”不重要
    2067
        18
    2067  
       2019-08-04 23:57:45 +08:00   ❤️ 3
    个人观点,欢迎指正

    如果以后想做图形学、密码学、机器学习的深度调优,需要数学
    如果以后要做高性能的算法设计与优化,那就更需要数学

    如果是要做复杂业务系统的设计以及架构,其实一般是不太用的到数学的,更多是系统化的思维能力
    如果是要做分布式、可伸缩、高可靠等等的架构,可能更依赖于对业界新技术的了解和快速学习能力

    就像前阵子有人翻出来的坟贴,搞 ACM 的出来很多发现自己研究了几年的东西在工作中并不怎么用得着,但是呢这些东西在面试顶级公司的时候用得着,而且做别的任何东西都不会差,至于数学的话,跟这个类似,而且更底层
    CEBBCAT
        19
    CEBBCAT  
       2019-08-05 00:04:30 +08:00
    >这层只是吐吐槽< 『我大一在学数学,现在还在学数学』这句话你没发现哪里不对吗? 你还没说现在大几呢
    Yourshell
        20
    Yourshell  
       2019-08-05 00:05:55 +08:00
    月薪三万以下应该不需要吧
    akakidz
        21
    akakidz  
       2019-08-05 00:08:00 +08:00 via Android
    即使是做初级的开发工作,我认为也很重要。
    类似的问题:码农有必要精通英语吗?没有硬性要求,但是它对你的技术和职业发展上带来的好处会越来越明显。
    我目前没有这些能力,这是作为菜鸡观察到同事和我的差距分析出来的...楼主可能周边都是与你类似的人没有察觉到吧
    coderluan
        22
    coderluan  
       2019-08-05 00:32:30 +08:00
    开什么程序员了,做应用层面的,初中水平的数学就够了,做系统层面的,高中水平的数学就行了,做算法层面的,就得大学水平的数学了。
    anguiao
        23
    anguiao  
       2019-08-05 00:46:20 +08:00 via Android
    那你应该在一个不错的大学
    misaka19000
        24
    misaka19000  
       2019-08-05 01:02:16 +08:00 via Android   ❤️ 2
    我认为所有的程序员都应该学号离散数学
    klesh
        25
    klesh  
       2019-08-05 01:21:02 +08:00 via Android
    试下实现个 pHash?
    详见 phash.org
    snw
        26
    snw  
       2019-08-05 01:29:52 +08:00 via Android
    最简单最基础的例子:求个近似数值解,牛顿法就是比二分法要快几倍,这就是学过微积分带来的优势。
    高级些的知识带来的差距那就更多了,有些只是你没有意识到而已。
    mumbler
        27
    mumbler  
       2019-08-05 01:33:28 +08:00
    对算法岗比较重要,做项目一般用不上高等数学
    SNOOPY963
        28
    SNOOPY963  
       2019-08-05 01:33:55 +08:00
    逻辑对程序员很重要。

    逻辑 OK 的人,学数学自然没问题。
    sonicjam
        29
    sonicjam  
       2019-08-05 04:44:59 +08:00 via iPhone
    老生常谈的问题。
    数学学好了能提升你的上限。
    4SM
        30
    4SM  
       2019-08-05 06:21:49 +08:00 via Android
    数学对任何职业都是最重要的。因为逻辑是需要训练的。
    NewDraw
        31
    NewDraw  
       2019-08-05 08:32:27 +08:00 via Android
    非常重要
    zilaijuan
        32
    zilaijuan  
       2019-08-05 08:41:14 +08:00 via Android
    盲猜楼主信计专业。如果猜错了,后面的话不用看了。数学类的数学过于理论化,让人觉得没用,但编程处理一些计算问题时,数学确实有用。如果只是简单的搬砖,什么都不需要会,面相搜索引擎编程就可以了。
    garlics
        33
    garlics  
       2019-08-05 08:58:03 +08:00
    面试需要(
    Akiyu
        34
    Akiyu  
       2019-08-05 08:58:52 +08:00
    之前在书上看到过一句话, 分享给大家 :
    硬件的尽头是物理, 而软件的尽头是数学

    所以, 数学对于我们做软件的人来说极为重要
    不过程序不是类似数学家那样非常缺稀的职业, 所以我们大多人都不会涉及到太多数学的东西
    但是你想往顶尖头, 那么数学应该是不可或缺的
    exev2
        35
    exev2  
       2019-08-05 09:01:36 +08:00
    数学对程序员来说真的很重要吗?

    也未必,具体看情况,如果想成为一名优秀的程序员,数学和英语都很重要。

    万丈高楼平地起,功底扎实更出色。
    HENQIGUAI
        36
    HENQIGUAI  
       2019-08-05 09:10:29 +08:00   ❤️ 2
    没用到是因为水平还没达到
    huijiewei
        37
    huijiewei  
       2019-08-05 09:11:04 +08:00
    1+2+3+4+5+...+n

    不懂数学的傻了吧唧的搞个 N 次循环做?
    luckyqiang
        38
    luckyqiang  
       2019-08-05 09:15:09 +08:00
    我本科应数的,现在还没怎么用到数学,确实是水平还没达到高度
    1a0ma0
        39
    1a0ma0  
       2019-08-05 09:17:38 +08:00 via iPhone
    个人认为重要性而言 英语 > 数学。英语是下限,数学是上限。
    GGPlayer
        40
    GGPlayer  
       2019-08-05 09:39:27 +08:00
    游戏开发偶尔要,就怕要的时候不会,要折腾很久
    Leez088
        41
    Leez088  
       2019-08-05 09:40:21 +08:00
    @huijiewei 这个初中数学就能解决了啊
    abcbuzhiming
        42
    abcbuzhiming  
       2019-08-05 09:43:30 +08:00
    数学决定你的上限。所以这件事就是看你自己想达到的层次,你要只是想搬砖,那你只需要初中高中级别的数学就行了。问题是你能搬一辈子砖吗?搬砖最多 5 年就到天花板了,你不继续爬那就只好转行或者等待年轻人来取代你
    @1a0ma0 计算机世界的英语要求远比数学低,除非你打算做研究去读 paper
    zhang77555
        43
    zhang77555  
       2019-08-05 09:46:06 +08:00
    看你的目的咯
    如果你是为了成为技术大拿,那很重要
    如果你是为了赚钱,那研究如何赚钱比研究数学还是靠谱些的
    momocraft
        44
    momocraft  
       2019-08-05 09:50:18 +08:00
    不重要 学点更实用的吧
    lynnX
        45
    lynnX  
       2019-08-05 09:58:02 +08:00
    去 leetcode 上刷一刷算法题,我觉得你会改变这个看法。
    djFFFFF
        46
    djFFFFF  
       2019-08-05 10:11:30 +08:00
    我就是因为数学太差了,职业瓶颈之后两次尝试转人工智能岗位都失败了。微积分和线性代数基础还是很重要的。
    wtdd
        47
    wtdd  
       2019-08-05 10:12:28 +08:00
    数学,物理和算法对人能力的要求基本上是高度一致的,
    无非是记忆和逻辑等思维能力的速度和准度,或者直接说智商要够高,
    与其说数学对编程有多重要,不如说数学都学不好还编个屁的程,不如回家卖红薯。
    anmie
        48
    anmie  
       2019-08-05 10:12:39 +08:00
    分阶段和人群吧。
    编程入门的时候,起码是要有一些初高中数学知识的,比如练习题什么的求个奇数,输出个图形啥的,一点数学基础没有肯定不行。
    再往后工作如果都是各种互联网产品的业务,各种框架起飞,那确实也不要啥数学知识。真滴不要。
    再往后各种分支,需要钻研的部分,数学的作用就又凸显出来了,而且初高中知识就不够用了
    liprais
        49
    liprais  
       2019-08-05 10:13:58 +08:00   ❤️ 1
    重要啊
    不然领导让你实现个判断是不是质数的功能你还要吭哧吭哧的去找算法
    across
        50
    across  
       2019-08-05 10:42:16 +08:00
    做做稍微难点的算法就需要。
    不需要是因为你根本不会,所以接不到需要的内容,公司只会发任务给能担任的人···
    Caballarii
        51
    Caballarii  
       2019-08-05 11:11:24 +08:00
    数学又不是只有代数几何,有一门科目叫离散数学,你会发现里面都是你变成要用到的知识,只是有些你已经懂一些了而已
    qiushui777
        52
    qiushui777  
       2019-08-05 11:13:37 +08:00
    最近学量化,感觉入门只要概率论基础就行,复杂理论会高深点
    cmonkey
        53
    cmonkey  
       2019-08-05 11:29:32 +08:00
    那要看你学数学学到什么程度了,比如进行科研没有,以普通人的数学知识并不能显著的提高吹嘘的数理逻辑知识,对计算机知识的提高并没有那么显著提高,该学计算机的知识还是得脚踏实地的学
    Valid
        54
    Valid  
       2019-08-05 11:31:53 +08:00
    参考“李永乐老师”
    zhuzhiqiang
        55
    zhuzhiqiang  
       2019-08-05 11:35:31 +08:00
    非常重要
    v23x
        56
    v23x  
       2019-08-05 11:36:35 +08:00
    数学对计算机来说当然很重要

    尤其是你工作年限越久越有可能这样觉得

    不一定会一直用到 但是关键时候又是必须的

    另外数学对思维帮助也很大啊
    kx5d62Jn1J9MjoXP
        57
    kx5d62Jn1J9MjoXP  
       2019-08-05 11:46:49 +08:00 via Android
    对 V2EX 这种基本上从事前端 /后端 /客户端开发的,数学完全没用,而且这些人很可能连现代数学长什么样都没见过
    lvybupt
        58
    lvybupt  
       2019-08-05 12:18:09 +08:00
    通俗的讲,数学决定了一个人技术上能发展的上限。

    很多人一生的发展根本碰不到上限。
    wupher
        59
    wupher  
       2019-08-05 12:19:40 +08:00
    越到后来,越意识到数学的重要性。

    但是,也越到后来越发现这东西很难捡。。 。这点很像英语。

    所以,好好学,别丢到,哪怕是做码农也别丢掉。
    Counter
        60
    Counter  
       2019-08-05 12:28:15 +08:00
    数学思维很重要,不在于学的什么知识,考多少分
    某种意义上讲,数学很看重天赋,有的人凭天赋就可以辗压

    一段很简单的代码,数学思维好的人,不仅比较快速找到解,还是较优解
    另外能比较快速理解别人的代码(有些初学者不理解递归原理)
    有些复杂 /深入 /高级的编程原理,数学思维好的人也比较能快速理解并掌握
    RangerWolf
        61
    RangerWolf  
       2019-08-05 13:00:22 +08:00
    能把数学逻辑搞定, 那个脑子真的挺聪明的。
    有价值的不是什么数学公式, 而是用这个数学公式锻炼过大脑
    MonoLogueChi
        62
    MonoLogueChi  
       2019-08-05 13:19:01 +08:00 via Android
    看什么方向,如果是游戏开发,不懂数学的话,很多功能只能靠复制粘贴,找前面已经实现的代码
    xiaowangge
        63
    xiaowangge  
       2019-08-05 13:42:42 +08:00   ❤️ 2
    在本站搜索一下,就有很多结果的哦:

    《冒号课堂》----答读者问(1)——对程序员的一些个人建议

    http://blog.zhenghui.org/2010/06/03/advice-on-programmer/


    关于数学基础,窃以为并非什么太大的问题。几乎每个得知我数学背景的人都会对我说:哦,学数学的人来学计算机自然容易啦。事实上,这种观点虽然极为普遍,但也极为肤浅。本人从事数学 14 年(从本科算起)、从事计算机 12 年(与前者有部分重合),在这一点上还是比较有发言权的。事先说明,以下提到的数学不包括高中数学。其实大多数从事软件开发的人员用不到太多的数学知识,他们只需要正常的逻辑思维能力和抽象思维能力。整天拿数学说事,要么是无知,要么是找借口,要么是装高深。当然,我不否认一些高级算法、计算机理论以及人工智能等领域可能涉及到高深的数学知识(其实也只是图论、组合数学、数论、概率论、计算几何、抽象代数、数学逻辑等中的一小部分),但那毕竟只是少数。我也不否认自己的数学背景有助于对编程的理解,但投入产出比太低,不值得作为经验来推广。不过若想成为一位计算机科学家,那就另作别论了——这时数学懂得再多也会嫌少的。


    倒是英语我希望你更重视些。我在《冒号课堂》中专门提过阅读原著的必要性,而且你也意识到译著的质量问题。建议不必特地去学习英语(你本来就会了,不是吗?),只要坚持读经典原著即可。其实,计算机方面的英文算是很容易的了,关键是克服自己的惯性和惰性。开始可能不习惯,看多了就习惯了。在此提醒一点,在阅读时请有意识地培养自己对英语的语感,就像编程时要有意识地培养自己对编程语言的语感一样。


    总之,对于程序员来说,数学没有人们认为的那么重要,英语没有人们认为的那么不重要。


    再说说专业方面的问题。你提到愿意重新自学大学课程,虽精神可嘉,但未必可取。从软件(或建筑)设计的观点来看,这是 bottom-up 法。作为学生,最好采用这种方法,但你已经参加工作了,所以我建议你更多地采用 top-down 法。这当然不是轻视基础知识,而是认为获取知识最高效的方法莫过于按需( on demand )学习。在实际工作中意识到某个知识点的重要性,从而有针对性地弥补短板,这样学习起来不仅更有效率,也更有兴味。需要强调的是,绝不能只是 “头痛医头”,而要“拔萝卜带出泥”。只有寻根究底、以点带面,才能快速有效地建立起自己的知识结构体系。对于软件开发这类实践性很强的专业来说,该法尤其奏效。
    nicebird
        64
    nicebird  
       2019-08-05 14:04:23 +08:00
    逻辑重要,数学很少。
    zqx
        65
    zqx  
       2019-08-05 14:20:16 +08:00 via Android
    请相信教育部,计算机专业大纲要求的高数,离散数学,概率论,线性代数,这四门数学课已经够了。
    across
        66
    across  
       2019-08-05 14:39:56 +08:00
    想想主要应该给楼主列举用处,比如
    几何 - 向量常规运算、矩阵空间运算,游戏必备技能。 其他工种估计做页面动画相关用到一点。 模式识别好像也有用到?计算相似性什么的。
    概率 - 设计活动概率行为,抽奖、开箱什么的。游戏系统就不说了,实际概率系统都是人为控制的,比如有概率累积什么的。 另外贝叶斯系统之类的算法不知道现在还有多少运用,反正个人没接触过···
    数学到工程经历了:
    数学 - 算法 - 工程实践。 所以我同意上面先做做算法题···(不过大一没学完可能矩阵都看不懂),然后看看现在软件都要求啥算法。图片相似性怎么判断? 查询城市路线时软件怎么算的? 现在的美颜滤镜又是怎么搞的? 可能有人会说,这不是调 API 就可以了么? 是可以了,不过只调 API 的岗位是很容易被替代的····可能培训班 3 个月也能来抢工作。
    另外一点是
    数学基础好的程序亮点主要是两个:
    1。设计的系统效率高。
    2。能拿出一个别人做不出的系统。
    第一点是所有岗位都能体现,第二点最主要还是算法岗,但是你有想法技术却不够用时,第二项缺点体现就超级明显·····举个例子,机器学习这么火,v 站之前就有人发 AI 对联工具,想到这个点子的人估计不少(包括我),但是具体怎么做我没概念,看数学补习就要很久,第一步放弃了····
    AmberJiang
        67
    AmberJiang  
       2019-08-05 14:55:34 +08:00
    个人觉得很重要 数学好也是加分项对程序员来说 而且数学也是逻辑思维的一种体现 学好数学只会有益 可恨没有早几年接触他😂虽然现在也不算太晚
    Cloutain
        68
    Cloutain  
       2019-08-05 15:37:27 +08:00
    太重要了
    liuzhiyong
        69
    liuzhiyong  
       2019-08-05 15:45:07 +08:00
    “数学对工作帮助真的很大吗”,基本上不重要,基本上没有任何帮助。
    guixiexiezou
        70
    guixiexiezou  
       2019-08-05 16:14:04 +08:00
    工作 3 年多的回答下吧。如果是做常规业务逻辑(其实就是增删改查),数学真的没啥鸟用,几乎不可能用的上。但如果是做其他一些,例如游戏相关的会用到很多矩阵运算那些,如果涉及图片处理,怎么也得用上傅里叶变换吧。我觉得,数学好的人,运气都不会太差。
    zhuangzhuang1988
        71
    zhuangzhuang1988  
       2019-08-05 16:19:50 +08:00
    看哪种程序员呗。
    zhanao1994
        72
    zhanao1994  
       2019-08-05 17:10:48 +08:00 via Android
    觉得不重要的都是带专生
    photon006
        73
    photon006  
       2019-08-05 17:30:18 +08:00
    韩寒曾经说过,数学学到初中就够了,买菜根本用不上那么复杂的计算,搞机器学习的数学专业人士会说,学好数学买菜根本不看价格。
    onice
        74
    onice  
       2019-08-05 17:54:13 +08:00
    看开发的领域,应用层的就不重要,例如常见的 web,android,ios 等。
    底层的就重要了,例如数据库,操作系统,深度学习。
    aogu555
        75
    aogu555  
       2019-08-05 21:18:53 +08:00
    先找好自己的定位,未来是想成为使用计算机科学还是使用语言的程序员,这两者的需求是完全不同的,而且你来这个论坛问,我觉得 v2 的大部分人都是偏向业务的程序员,所以结果更多的是告诉你不需要很多的数学,你来这里问,如果真的不学数学了,那些说不用学的人的会对你负责吗?答案是否定的。所以你需要找到你的目标,未来会不会考研继续深入学习计算机科学或者说毕业后有没有打算从事计算机视觉 高性能推荐算法等工作,还是说把计算机简单当作一个挣钱工具,日后做业务类的程序员。但是在我看来学数学和学计算机有相关冲突吗,完全可以我全都要
    hzgit
        76
    hzgit  
       2019-08-05 21:24:00 +08:00
    郭德纲说“相声比到最后比的是文化”,借用一下“编程比到最后比的是数学”。这句话 10 年以后如果你不改行,并且还在走技术路线,再来看。
    b00tyhunt3r
        77
    b00tyhunt3r  
       2019-08-05 21:57:47 +08:00 via iPhone
    @wtdd 你最后一句是不是说反了,数学明显比编程门槛高多了
    sorra
        78
    sorra  
       2019-08-05 22:08:46 +08:00
    英语更重要,数学也重要,到高端有用的
    离散数学和抽象代数用于一些算法,微积分、线性代数和概率统计用于 AI,线性代数用于图形学
    我工作 6 年重新对数学感兴趣,开始自学数学
    golden0125
        79
    golden0125  
       2019-08-06 09:07:10 +08:00
    @murmur 张口就来,懂数学的有个专门的岗位叫算法分析师,程序员负责实现分析师给出的算法
    murmur
        80
    murmur  
       2019-08-06 09:10:33 +08:00
    @golden0125 不要玩弄概念,算法分析师只是数学非常牛逼的程序员而已,我看了好几个职位的算法分析师都有一定程度的编程要求
    golden0125
        81
    golden0125  
       2019-08-06 09:28:49 +08:00
    @murmur 编程并不是算法岗位的必备技能,很多算法分析师甚至不会写代码,朋友,建议你找几个 BAT 的朋友问问他们分析师亲自写代码么
    wo0uewjuoi
        82
    wo0uewjuoi  
       2019-08-06 16:24:10 +08:00
    说需要是骗你的,说不需要也是骗你的
    首先要选一个方向,才能给出答案
    你现在是在校生,就用心学吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 12:15 · PVG 20:15 · LAX 04:15 · JFK 07:15
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.