数学对于程序员到底有多重要?他也有自己的看法

【CSDN编者按】作者大学时期受到《程序员》杂志的启发,从数学投身计算机编程,毕业后进入软件开发行业。9年来,他去过大厂打码,也带过创业公司的团队。一直从事“下一代”软件技术的研发工作。他一直在网上讨论“数学对程序员有多重要”的话题。也有自己的看法。

作者 | 范飞龙编辑 | 侯淼淼

出品 | CSDN(ID:CSDNnews)

数学对程序员有多重要?

我是数学专业的。大四时偶然接触到《程序员》杂志,给了我很多启发。从我在后续学习编程中读到的杂志和很多技术书籍中,我逐渐发现编程是一个极富创意的东西。程序员甚至可以使用技术来改变世界。从那时起,我就深深地被编程所吸引。现在,可以说《程序员》杂志是我编程道路上的启蒙导师。后来,我去了学校的计算机专业上了“疯狂课”。那时,一个计算机图形老师的课很有趣。除了教编程技术,他还会教你很多一流IT公司的技术,很早就和我们讨论过了。选择和愿景的话题对我影响很大。所以在我大四和研究生的时候,我一边做数学研究,一边做很多软件项目。因为数学和编程在某种程度上是互通的计算机编程入门是否需要数学好,所以我在如何写出好的程序方面并没有遇到太多的困难,但是软件开发有其固有的规律,需要付出很大的努力。我在和大师一起实践学习的过程中,逐渐明白了软件开发的规律和本质。写好程序不会遇到太多困难,但软件开发有其内在规律,需要付出很大的努力。我在和大师一起实践学习的过程中,逐渐明白了软件开发的规律和本质。写好程序不会遇到太多困难,但软件开发有其内在规律,需要付出很大的努力。我在和大师一起实践学习的过程中,逐渐明白了软件开发的规律和本质。

网上有一个关于“一个数学不好的程序员能走多远”的讨论,很多网友都参与了讨论。有人说数学不好的程序员永远不会成为架构师,也有人说程序员可能一辈子都不会用数学。事实上,无论从哪个角度来看,最终的结论都是非常片面的。

数学或算法是否重要实际上取决于您正在做的项目类型。例如,区块链和密码学密切相关,而密码学的背后是抽象代数和数论的知识。深度学习与微积分、曲线曲面拟合、函数逼近理论等数学理论中的多变量链求导法则密切相关;游戏开发,除了计算几何相关的知识外,还需要程序员掌握一些物理知识;与数据冗余存储相关的编解码算法可能是矩阵计算的本质,需要线性代数的知识。通过这些例子,我们可以看到,至少参加普通科学和工程的高等数学/线性代数/概率和统计课程是非常重要的。但是如果你做前端开发,你需要的是对复杂框架和组件的控制和模块化的能力;用户体验设计需要的是设计语言;对于后端数据库的增删改查,需要的是对数据之间关系的理解能力,以及如何设计一套API,与具体数学没有直接关系。此外,在实际编程中还有大量的工程问题需要解决,这需要解决问题的能力和对工程的理解。所以数学对程序员是否重要,取决于你做的事情是否与数学直接相关。另一方面,在分析问题的过程中,能否很好地利用集合和坐标的方法对问题进行基本的划分,我认为这也是一种是否有数学思维的表征。

很多人说小白和大神的差距主要体现在数学上,但准确的说,体现在逻辑能力和抽象能力上。在日常的开发工作中,最简单的逻辑就是能不能清楚地表达程序的顺序,比如清楚地写出一个函数、一个类、一个模块、一个服务,甚至是一个文档。写清楚。如果想训练逻辑思维,可以多看一些帮助程序员写出好程序的书籍,比如《程序员的培养之道——从小工到专家》,可以帮助程序员提高工程素养和品味;《构建之法(第3版)》系统地深入介绍了软件工程原理,理解个体发展,不同级别的结对编程到团队合作,如何制作创新产品等;《图解密码学(第3版)》可以培养程序员深入算法和数学细节的能力,除了作为程序员了解密码学的基本原理,也是完整阅读这样一本书并理解的有效练习细节清楚。从日常程序入手,并尝试在实践中使用这些方法来改进软件开发过程。这是一个循序渐进的过程,但只要坚持下去,就会看到成果。作为一个程序员,除了了解密码学的基本原理之外,完整地阅读这样的书并清楚地理解细节也是一种有效的练习。从日常程序入手,并尝试在实践中使用这些方法来改进软件开发过程。这是一个循序渐进的过程,但只要坚持下去,就会看到成果。作为一个程序员,除了了解密码学的基本原理之外,完整地阅读这样的书并清楚地理解细节也是一种有效的练习。从日常程序入手,并尝试在实践中使用这些方法来改进软件开发过程。这是一个循序渐进的过程,但只要坚持下去,就会看到成果。

除了以上书籍之外,在校期间订阅《程序员》杂志对我的帮助很大。总的来说,这里其实有两种类型的文章,一种是非常具体的文章,可以教你写出好的程序,另一种是专家和CTO的意见分享计算机编程入门是否需要数学好,带给人们对编程的理解和启迪。编程也是一样。许多人在放学和工作后会做不同的事情。通过这些文章,你可以知道国内大公司都采用了哪些技术框架和流程。很多刚毕业的大学生并没有太多的项目经验,多阅读相关专业文章和技术杂志可以为你提供最大的经验加持,尤其是当某项技术是你目前正在做的事情时,你可以有很好的经验。的比较。

大厂VS初创公司,如何选择?

博士毕业后,我去了大工厂和初创公司。对于广大程序员来说,无论去什么样的公司,重要的是找到合适的人,做你愿意和你一起做的事情。

大公司的优势在于系统完整。加入公司后,只需要专注于手头的重点工作,解决问题。你不必担心困难。大厂的人才通常很多,可以从中学到很多实践经验。成熟的项目机制也让您体验专业软件开发的各个过程。但是,大厂的缺点也很明显。大公司有很多流程。如果不能有意识地尝试新技术,学习新的框架和工具,可能会被局限在局部的某个细节上,也就是大家常说的“螺丝钉”状态,根本看不出是什么问题在软件开发中整体解决的是。已经进厂的同学应该能够经常回顾和反思自己的工作,经常写技术文件和总结。每隔一段时间,想想你与刚进入公司时所做的贡献,你成长的地方,并继续对技术保持敏感,以激励自己不断进步。特别强调坚持写好的技术文档(博客)。给我留下深刻印象的是,在我的第一份工作中,我根据一个无法运行的遗留项目的代码,完全重写了可以连接到在线系统的代码。的网络协议实现,同时给出了非常详细的网络协议文档。从那时起,我就非常重视为每个项目编写技术文档,为了更好地理解。当你养成一种习惯时,它就会变得像你的肌肉记忆一样自然。随着时间的推移,我们对软件的理解会大不相同。为软件开发编写好的代码和好的文档非常重要。一开始,使用一些模板来帮助你编写好的文档是一种有效的练习方式。在这方面,我之前看过一篇关于 Git 最佳实践的文章,标题为 A Effective Approach: Commit often, Perfect Later, Publish Once。使用一些模板来帮助你编写好的文档是一种有效的练习方式。在这方面,我之前看过一篇关于 Git 最佳实践的文章,标题为 A Effective Approach: Commit often, Perfect Later, Publish Once。使用一些模板来帮助你编写好的文档是一种有效的练习方式。在这方面,我之前看过一篇关于 Git 最佳实践的文章,标题为 A Effective Approach: Commit often, Perfect Later, Publish Once。

图片[1]-数学对于程序员到底有多重要?他也有自己的看法-老王博客

创业公司的优势之一就是你加入公司后可以参与软件开发的全过程,可以快速成长为多面手。此外,初创公司的软件开发过程相对简单,这有时是一个优势。在大公司,你可能有很多试错的机会,但在初创公司,你必须在有限的时间、有限的资金、有限的人员范围内,尽可能高效地完成项目的迭代开发。当你认为自己已经掌握了很多软件开发的经验和规则时,在这种明显受限的情况下开发软件,并有效地实现目标,就是一个很好的验证过程。除了软件开发本身,程序员还需要和不同的人打交道,比如你是项目中的甲方还是乙方。需求的频繁变化和不确定性会影响软件开发的质量和软件团队的成熟度。测试,这些是软件开发的重要环节,创业公司也需要考虑如何从第 0 个用户开始逐步获取大量用户。初创公司通常要承担较大的财务风险。虽然它也有机会获得巨大的收益,实现财务自由,但在大多数情况下,风险大于机会。做一件事需要很多条件,实际上是一个多条件的概率问题。需求的频繁变化和不确定性会影响软件开发的质量和软件团队的成熟度。测试,这些是软件开发的重要环节,创业公司也需要考虑如何从第 0 个用户开始逐步获取大量用户。初创公司通常要承担较大的财务风险。虽然它也有机会获得巨大的收益,实现财务自由,但在大多数情况下,风险大于机会。做一件事需要很多条件,实际上是一个多条件的概率问题。需求的频繁变化和不确定性会影响软件开发的质量和软件团队的成熟度。测试,这些是软件开发的重要环节,创业公司也需要考虑如何从第 0 个用户开始逐步获取大量用户。初创公司通常要承担较大的财务风险。虽然它也有机会获得巨大的收益,实现财务自由,但在大多数情况下,风险大于机会。做一件事需要很多条件,实际上是一个多条件的概率问题。而创业公司也需要考虑如何从第 0 个用户开始逐步获取大量用户。初创公司通常要承担较大的财务风险。虽然它也有机会获得巨大的收益,实现财务自由,但在大多数情况下,风险大于机会。做一件事需要很多条件,实际上是一个多条件的概率问题。而创业公司也需要考虑如何从第 0 个用户开始逐步获取大量用户。初创公司通常要承担较大的财务风险。虽然它也有机会获得巨大的收益,实现财务自由,但在大多数情况下,风险大于机会。做一件事需要很多条件,实际上是一个多条件的概率问题。

所以,如果你是应届毕业生,还没有积累足够的抗风险能力,我还是建议选择大公司,以获得相对稳定的项目经验和愿景成长。但如果你有冒险精神,那就试着解决你遇到的问题,增加做事成功的概率。再次是主题:选择和愿景。

小白如何成长为优秀的程序员

在软件开发中,一个很重要的部分就是具备良好的学习能力。我也一直保持着不断学习“老技术”和新技术的状态。学习一门技术,一开始我们都是通过搭积木来完成的,而我们可以忽略这些积木是如何制作的。用blocks做了一个应用后,我们有一个成功的经验。然后,我们开始做第二次应用,仍然使用这些积木,但你开始了解这些积木的不同特性,并逐渐获得实践经验。继续,您将拆解一个块并查看块本身是如何构造的。要拆解的第一个块可能很简单,但是这个拆解的块是一个重要的起点。一旦你拆开第一个积木一个积木,你拆开第二块积木,你会发现第二块积木和第一块积木之间有很多共同的部分,你可能不知道这些部分是怎么构成的,没关系。于是你继续拆解第三块和第四块……随着你拆解的块越来越多,你终于知道这些块是如何构造的了。这时候,你在构建应用程序的时候,如果没有合适的积木,你就直接用零件做一个新的积木。这种制造的构建块解决了您的问题,并为创建成功的应用程序提供了关键组件。至此,你已经完成了学习这套积木的真正介绍。原则,你可以继续做这个领域并提供创造性的工作,因为这组块在你面前是可编程的。这就是我一直学习新领域的方式。

另一种更有效的方法是用相同的主题学习。在学习一个方向时,要经常收集一个主题的相关资料,进行一段时间的学习、练习和总结。当你专注于一个方向时,你会自动过滤掉技术站点和技术社区的不相关信息,继续在一个方向和一个在线学习区学习,参与讨论,集中吸收知识和实践,不断点亮技术的节点领域技能树。事实上,学习一个新领域与做研究有很多共同之处。

很多人说,35岁是一个程序员的转折点。造成这种情况的一个原因是,软件开发是一项“青春餐”的工作。其实这也是片面的看法。软件开发有其内在规律。有时候,直接在当地积累人力资源,以快速取得短期成果,是真的。但是,如果我们追求做一流软件的目标,就可以深刻理解软件开发的规律,拥有强大的框架和工程。能够将技术、经验和洞察力结合起来创造价值,同时在一个迭代良好的软件团队中实现持续增长,那么 35 岁确实可能是一个转折点,而且是一个很好的转折点。

一般来说,软件开发有其内在规律。不断了解其内在规律,在实践中迭代,朝着成为一流软件的目标冲刺,是我选择的方向。

先看《新程序员》的内容亮点

《新程序员》立足行业前沿,深入探索科技未来,通过音视频、图文栏目等丰富的多媒体形式,全方位解读科技与产业,开启中国开发者新时代的技术之门。

《新程序员001:开发者的黄金十年》涵盖:

现在,会员季卡原价89元限时58元,包括:

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论