数学不好的人不适合当程序员吗?

程序员的数学思维修炼 程序员的数学思维修炼(趣味解读)周颖 等 阅读笔记 阅读详情

“程序员需要学数学吗”一直是个行业热门议题,正方说因为不懂数学绕过一些弯路,反方会说绝大多数工作都用不上那些原理。总之,做这个 battle 就像西西弗斯推石头,没完没了没意义。

 

我刚入行时觉得,数学是解决一些问题的工具,但是业余时间宁愿学写设计模式,也不会花时间学数学原理。工作几年后终于理解这句话:编程的本质就是数学问题。

 

举个最基础的例子,衡量代码运行效率的一个重要因素是复杂度。空间复杂度和时间复杂度的分析就源于数学的极限的概念。复杂度的计算就是一个关于输入数据量 n 的函数,只要你稍有数学思维,就能从平时的编程经验中得出这些结论:

 

一个顺序结构的代码,时间复杂度是O(1),

二分查找,时间复杂度是O(logn),

一个简单的 for 循环,时间复杂度是 O(n),

两个顺序执行的 for 循环,时间复杂度是 O(n)+O(n)=O(2n),其实也是O(n),

两个嵌套的 for 循环,时间复杂度是 O(n²)。

具备这些意识,工作中再去分析代码的时间复杂度会容易很多。实现基本功能的代码,谁都能写,真正的能力门槛是把代码写得简洁、优雅、可持续优化。

 

越往高处走,越是基本功的比拼。数学基础好的人,逻辑思维不会差,在编程世界中,理解底层原理、数据结构、算法,都会比别人快一步,这可能被被误认是优秀程序员的“天分”,我更相信,这是数学功底带来的养料。

 

数学不好,怎么办?

 

数学这个庞大学科是出了名的高深,听原理名词就能劝退很多人,不过我们的目标不是学成数学家,没必要追求大而全。学好程序员用得上的数学,就足以让你成为我们这一行的专家。

 

哪些知识是程序员用得上的数学?

 

行业大佬最有发言权,认识这个大佬源于之前一个爆款课程《重学数据结构与算法》,履历很不错,既是中科院博士,又是国内一线互联网公司的资深算法专家,学科背景扎实,一线代码经验也很丰富。所以这次他做了这个专门给程序员的数学课,我是非常信赖的。

 

这个课会怎么讲?

 

坦诚地讲,我看了目录后发现,这个课对数学这个学科来说,只是冰山一角,而对程序员来说,却是工作中用得上的绝对部分。

 

实践永远是真理的落脚点,数学原理对我们不是空中楼阁,而是一定要用于代码优化。举个简单例子,回到我们最初讨论的,如何降低代码复杂度:

 

一个无序数组查找问题,数组中只有数字 obj 出现了一次,其他数字都出现了两次,查找 obj ,常规解法的复杂度应该是:O(n²) 时间复杂度、O(1) 空间复杂度,或者 O(n) 时间复杂度、O(n) 空间复杂度。但我们加个约束为O(n) 的时间复杂度、O(1) 的空间复杂度。

如果你熟知数学的异或运算的这两个性质:任何数异或自己,为零,任何数异或零,是它自己。你就会轻易找到解决办法,把数组中所有元素计算一下异或就可以了。实现代码如下:

a = [2,1,4,3,4,2,3]
result = a[0]
for i in range(1,len(a)):
    result = result ^ a[i]
print result

通过这个例子是想告诉你,这个课不会给你讲异或运算的前世今生,就像去证明哥德巴赫猜想,而是让你聚焦工作领域,夯实基本功,先把这些基础知识搞定,你的逻辑、思想模式,将不拘泥于代码本身,而是能用数学思想解决问题。

 

这个课程会讲些什么?

 

① 养成无处不在的数学思维。第一模块通过数制转化、数学逻辑、经典公式等原理与业务代码示例,讲解数学思维是如何运用在日常编程工作中的,让你重新审视数学思维在工作中的作用。

② 程序员必备的数学原理:代数与统计。精简的数学知识,比如求极值、向量与导数,这些应用于实际工作哪些方面:如何找到复杂业务最优解,如何完成海量高维度数据计算。这一模块将带你认识数学原理的实际应用,更为你打好理论基础。

③ 打好编程基本功:算法与数据结构。这一模块会讲到二分法、动态规划、递归等通用算法和重要思想,从数学角度找到算法背后的规律,还会结合实战场景,如:利用指数爆炸优化程序,将数学原理、算法与实战结合,事半功倍地夯实开发基本功。

④ AI 与机器学习,热门领域的核心技术。AI 与机器学习的技术核心其实是数学问题,这一模块将通过几个常用技术点,逻辑回归、决策树等,带你入门 AI 建模,从数学角度理解当前热门领域。

 

程序员用得上的数学知识,都在这个大纲里

 

 

诗人陆游曾说“工夫在诗外”,数学对程序员来说,也是如此,它不是你学完即用的技术,却是你必不可少的滋养,希望数学这个“诗外之工”让你离一流程序员,更近一步。

 

 额外福利:

点击“阅读原文”免费获得:

1.领取配套学习资料

2.加入学习交流群、反馈学习难题

3.不定期技术公开课免费听

一份针对零基础学习AI Agent详细学习计划 以下是针对零基础学习者制定的AI Agent详细学习计划,结合最新行业动态和实用资源推荐,帮助你从入门到进阶系统掌握核心技能 阅读详情

相关推荐

直流无刷减速电机选型指南:从KV值到霍尔传感器,新手必看的5个关键参数

本文详细解析直流无刷减速电机选型的5个关键参数,包括KV值、转矩、电流与功率、减速比选择以及霍尔传感器配置。通过实战案例和避坑策略,帮助工程师精准匹配电机性能与负载需求,提升工业自动化设备的可靠性和效率。特别强调霍尔传感器在精准控制中的关键作用。

alice7model的博客 624

作为程序员,你吃过哪些数学的亏?

上大学前,我一直觉得学数学是个挺轻松的事儿,只要能理解定理的推导逻辑,就一通百通了,考试前根本不用突击复习。但上了大学我就被“教育”了,一是难度骤然提升,很多东西难以理解;二是那会儿过于...

小詹学python的博客 457

Android布局基础与UI设计入门:打造精美应用界面

恭喜你!现在你已经掌握了Android UI开发的基础知识,包括各种布局类型、常用控件的使用以及一些UI优化技巧。这些知识将帮助你设计出既美观又实用的Android应用界面。

m0_65382359的博客 2058

数学不好但想成为程序员:可能的路径与实践

在许多人眼中,数学与编程似乎是紧密相连的,但实际上,编程并不一定需要深入的数学背景。即使你已经成为了一个经验丰富的程序员,也不要停止学习和探索新的技术、工具和领域。选择合适的编程领域、学习基础的数学知识和概念、注重实践和问题解决、寻求指导和帮助、持续学习和探索以及培养其他技能和素质是关键。开始时,你可以选择一些简单的问题来练习,随着经验的积累,逐渐挑战更复杂的问题。例如,你可以选择Web开发或移动应用开发作为起点,这些领域更侧重于用户界面设计、数据库管理、网络通信等方面,而这些方面对数学要求不高。

xuebajiaoyu的博客 632

[A-21]ARMv8/v9-SMMU系统架构和功能概述

本文简述了SMMU的系统架构和核心功能

基层架构师的分享 1725

SAP MM新手避坑指南:工厂间调拨用301还是303?手把手教你选对移动类型

本文深入解析SAP MM模块中工厂间调拨的301与303移动类型,帮助新手避开常见陷阱。通过对比一步法(301)和两步法(303+305)的核心差异、适用场景及财务影响,提供清晰的决策框架和实战技巧,确保库存调拨的准确性和效率。

weixin_29223603的博客 349

数学不好能学编程吗?想转行到IT行业需要具备哪些能力?零基础可以学吗?

关于程序员,网络上流传着这样的段子,戏说程序员的等级:一流程序员靠数学,二流靠算法,三流靠逻辑,四流靠SDK,五流靠Google和StackOverFlow,六流靠百度和优快云,低端的看高端的就是黑魔法!在幽默的玩笑中,其实也暗藏着残忍的现实。在管理学中有一个著名的“木桶理论”,是指用一个木桶装水,如果组成木桶的木板参差不齐,那这个木桶能装多少水则取决于最短的那根木板,这也是我们经常说的“短板效应”。对于普通的编程来说,只要具备高中的数学水平就可以了。

VN520的博客 1154

功能安全实战系列07-英飞凌TC3xx电源监控开发详解

本文对电源监控(PBIST及MONBIST)开发介绍,步骤详细配合开发中的测试情况,图文并茂,方便理解。

initiallizer的博客 1110

我数学不好,适合做程序员吗?

“小灰,我数学不好,能学编程吗?将来适合做程序员吗?”最近,后台有小伙伴问了我这样一个问题。这个问题,在即将迈入编程领域的小伙伴当中还蛮普遍的,小灰今天就来说一说自己的看法。先说结论:这要看你从事的细分领域了。程序员有很多细分领域,如果你想要做算法工程师,数学不好的话确实做不来。因为算法工程师涉及到微积分、概率论、线性代数当中的许多知识。但如果你只是想做软件开发,哪怕是做...

程序员小灰的博客 3470

TenserRt平台SMOKE 3D目标检测部署完整教程:从理论到实践

本教程详细介绍了在RK3588平台上部署SMOKE 3D目标检测模型的完整流程。SMOKE是一种创新的单阶段单目3D检测方法,通过关键点估计直接预测3D目标信息,有效解决了深度信息缺失等挑战。文章从理论基础出发,解析了SMOKE的核心算法和网络架构,包括DLA-34主干网络和关键点中心化策略。同时提供了详细的Docker环境配置、模型导出到ONNX格式的实践指南,以及TensorRT引擎构建和性能优化的关键技术要点。该教程为开发者在嵌入式平台上实现高效3D目标检测提供了完整的技术参考。

LXY_LOVE36的博客 372

【Bug已解决】Codex CLI 报错 You‘ve hit your usage limit 解决方案

Codex CLI 密集使用时触发 You've hit your usage limit 限流报错,本质是订阅套餐额度机制在正常发挥作用。文中给出等待滚动重置、拆分大任务、主动管理上下文、升级套餐、团队排队机制等完整解决方案。

博客 1万+

做一个Java程序员,数学一定要好吗?

学Java编程数学一定要很好吗?很多想学Java编程的人都会有这个疑问。我想告诉大家,数学好不好对于学Java编程没有特别的限制!编程要一定的逻辑思维能力,数学好说明逻辑思维能力强,对学好编程很有帮助,但对学编程有兴趣。即使数学不好但在学习编程的过程中会促使你去学好数学,两者相互促进。 数学对于编程确实非常重要,但当前在很多开发场景下,尤其是应用级开发场景下,Java开发并不会涉及到太多数学知识,比如常规的Web开发、安卓开发等,而这一类的开发岗位还非常多,即使数学基础不好也完全可以学习Java。 当前在

xiaoxijing的博客 3387

【Docker安装】OpenEuler系统下部署Docker环境

【Docker安装】OpenEuler系统下部署Docker环境

jks212454的博客 4192

数学不好,可以当程序员么?

阅读本文大概需要 2.7 分钟。有读者最近后台问我,说数学不好,可以转行做程序员么,以后的发展会不会受限制?作为一个数学专业出身,自学转行程序员的过来人,我觉得多少有点话语权。不过话说回...

stormzhang的专栏 2796

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

什么样的人最适合做程序员呢?这六类人最适合

作为高薪行业,程序员近几年非常吃香,所以不少人转行学编程,不过,有些人一学就会,有些人却久久不能入门,**究竟什么样的人最适合做程序员呢?这类人具有什么特性?**小乐根据多年来对身边各种程序员的观察,总结几点: 1.数学有天赋的人 实际上计算机的核心就是数学,数学厉害的神童们,做软件开发也如鱼得水。 小乐自己在学习软件开发的时候,自以为用一周编写了一个俄罗斯方块的小游戏就很了不起了,可是我们班一个天才少年,居然在一个小时就搞定了,我用了好大一会看他的程序,才领会其中的奥妙。不得不服天赋果然重要。 2.喜

weixin_51514337的博客 2266

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

想成为程序员并不简单!盘点最适合做程序员的 6 种人,你是吗?

作为高薪行业,程序员近几年非常吃香,所以不少人转行学编程,不过,有些人一学就会,有些人却久久不能入门,究竟什么样的人最适合做程序员呢?这类人具有什么特性?笔者根据多年来对身边各种程序员的观察,总结几点: 1、数学有天赋的人 实际上计算机的核心就是数学,数学厉害的神童们,做软件开发也如鱼得水。 笔者自己在学习软件开发的时候,自以为用一周编写了一个俄罗斯方块的小游戏就很了不起了,可是我们班一个天才少年,居然在一个小时就搞定了,我用了好大一会看他的程序,才领会其中的奥妙。不得不服天赋果然重要。 2、喜

致力于C语言C++知识分享! 2060

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

完了,我不适合做程序员!

喜欢用图形界面而不喜欢用命令行的人是不是不适合当程序员? 我思路不行,是不是不适合做程序员? 我数学不好,是不是不适合做程序员? 经常会遇到这么问的同学,在知乎上也经常会遇到这类问题 好像程序员是一个只有精英才能从事的行业。 果真如此的话,就不会有码农这个词了。 一、编程需要技巧吗? 种地需要技巧吗?当然需要技巧,有些人就不适合种地,你看陶渊明的诗: ...

启舰 1万+

数学很差的人能当程序员吗?

【优快云 编者按】作者在大学时代受《程序员》杂志的启发,从数学专业投身计算机编程,毕业后进入软件开发行业。过去9年,他去过大厂敲代码,也曾在创业公司带过团队,一直从事“下一代”软件技术的...

AI科技大本营 1165

那些数学不好的程序员,最后都怎么样了?

上大学前,我一直觉得学数学是个挺轻松的事儿,只要能理解定理的推导逻辑,就一通百通了,考试前根本不用突击复习。但上了大学我就被“教育”了,一是难度骤然提升,很多东西难以理解;二是那会儿过于...

code小生 440

哪些人不适合做程序员

不说哪些人适合做程序员,有太多的鸡汤文,诸如肯刻苦钻研,舍得付出,能吃苦,但主观上的臆想却是对客观规律的违背,”尊重客观规律,就是要承认规律的客观性和必然性,实事求是地去认识规律,按客观规律办事。如果我们在工作中做计划、办事情脱离实际、违背规律就会使工作带来极大的盲目性和随意性“。狮子学不会鱼的游泳技能,鱼也没不会有狮子的捕猎技能,从客观的角度来看,有下列几类人是不适合做程序员的。 一 学历过低的...

7462

“数学不好,干啥都不行!”骨灰级程序员:其实你们都是瞎努力

之前有很多程序员读者向我们抱怨:1)做算法优化时,只能现搬书里的算法,遇到不一样的问题,就不会了。2)面试一旦涉及到算法和数据结构,如果数学不行,面试基本就凉凉了。3)一个需求,我写10...

区块链大本营 1429

初学者:英语和数学不好,能学编程吗?

很多初学者认为,编程语言是由英文组成的,而且会涉及很多算法,自己的英语和数学功底不好,到底能不能学会编程呢? 放在过去,曾经刚接触的自己,基础虽不算太差,但也跟身边的人一样,有那么一丝丝担心顾虑,但后来,接触编程之后,了解到其实........数学英语不好,对于学编程,并没有那么可怕!! 以下两点对症下药: 一.英语基础不好,可以学会编程吗? 首先,学习编程需要你有英语基础;但是,要求并不...

Yummy的博客 1626

5种人不适合做JAVA程序员的,会有改不完的Bug!

java程序员确实收入高、生活滋润,有不少的人想转行做程序员。 但,毕竟要当上一名程序员,也不是一件轻松的事。有些小伙伴就是天生没有自带程序员的一些“属性”。 那么,哪几种人可能不适合做程序员呢?下面就来总结一下: 1、对编程没有兴趣 其实,说实话,最后一点是最重要的。因为你观察身边大部分的程序员,你会发现,他们能够继续坚持编程,或多或少是对编程有一定的兴趣的。 不然,他们很快就会逃离编...

weixin_40876133的博客 2316
上一篇: 性能优化搞不好,CRUD 干到老!
下一篇: 同样都是搞微服务,为什么你拆分的那么乱?
码洞
博客等级 码龄10年 41粉丝 137原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值