繁体   English   中英

数学概念如何帮助我进行网络开发?

[英]How can mathematical concepts help me In web development?

我见过程序员在他们的代码中与非常复杂的数学问题“斗争”,特别是在游戏编程、物理编程、图形编程等领域。我是一名网络开发人员,我想知道那里是否有数学概念我可以用于网络编程。 我在一年零两个月前开始网络编程,我所处理的只是复杂的系统分析、数据库查询、用户界面设计、简单的数据结构、复杂的数据操作和解释(正则表达式、解析等),但我没有(但)发现需要复杂的数学。

所以重复这个问题,是否有可以利用我的网络开发技能的数学概念? 如果有,它们在哪些情况下是优势或不可或缺的?

排队论是一个数学概念,它与您的网络服务器如何处理请求,查看您的传入请求率以及每个请求服务的时间有关。

无论用于提供它的平台,域特定功能可能需要或可能不需要强大的数学技能。

例如,建立一个基于网络的推荐系统,其建议基于具有相似偏好的其他人认为需要良好的数学技能。

另一个相关的例子是欺诈检测。

今天没有理由你不能在网络应用程序中使用你的数学脑细胞。 你提到游戏,物理和图​​形,好像这些都是网络编程。 他们不是。 例如,今天有很多网络游戏被实现为网络应用,需要非平凡的数学运算(在Flash,Silverlight甚至是JavaScript中)才能将像素放在屏幕上的正确位置,包括3D投影和变换。 添加HTML 5的Canvas,事情变得非常有趣。

Web编程思路通常专注于服务器配置,数据库和缓存性能,但Web UI前端的构建也是Web编程的一部分。 一旦您负责将像素放在用户面前(不仅仅是文本),您将需要数学。 如果需要移动这些像素,则需要数学运算。

上周我在javascript中优化了社会保险号码验证功能(Luhn算法),并且能够将其分解为单行。 找到一个解决方案涉及一个代数证明,如果没有更高的数学,我就无法做到。

我认为最大的好处是在编码时像数学家一样思考

Gregory Meredith在Monadic Design Patterns for the Web上有一个非常好的演示文稿即将出版的书 (Gregory Meredith本人将在接下来几个月的某个时间在Channel9播放关于这个主题的视频讲座系列。) 一般来说 ,它可能不会比Monads或类别理论(Monads来自哪里)更加惹人注意。

另一个很好的例子是交互式编程(尤其是迭代器设计模式)和反应式编程(尤其是主题/观察者设计模式)是彼此的类别 - 理论对偶。 此外,事实证明,迭代器设计模式可以实现为List Monad的实例,并且Subject / Observer设计模式可以实现为Continuation Monad的实例。 由于两者都是Monads,这基本上意味着您可以使用相同的工具处理两者

换句话说,您可以像处理集合一样处理事件流 (通常认为很难处理)(每个人都知道如何处理)。 例如,在.NET中,这意味着您可以使用LINQ“查询”事件流,因为真正的LINQ只不过是Monad Comprehensions打扮成SQL查询,因此企业程序员不会被像“Monad”这样的大词吓到。

而且,当然,Web编程是所有关于反应式编程。 浏览器会不断向您发送必须做出反应的事件。 并且所有异步I / O内容(数据库,文件,您的名字)都是关于触发您的I / O请求然后等待完成事件。

对数学概念的深刻理解可以通过多种方式帮助 Web 开发:

算法和数据结构:许多 Web 开发任务涉及设计和实现算法来解决问题,例如排序数据或搜索特定信息。 算法设计、大 O 表示法和数据结构等数学概念的坚实基础可以帮助您更有效地解决这些类型的问题。

布局和设计:Web 开发通常涉及为网站和应用程序设计用户界面和布局。 了解几何、空间关系和透视等概念可以帮助您创建视觉上吸引人且有效的布局。

性能优化:概率和统计等数学概念有助于分析和改进 Web 应用程序的性能。 例如,您可以使用统计分析来识别代码中的瓶颈或效率低下。

机器学习:许多 Web 开发项目涉及实施机器学习算法或与机器学习 API 集成。 线性代数、微积分和概率等数学概念的坚实基础对于理解和使用这些算法至关重要。

总体而言,对数学概念的深刻理解可以帮助您更有效地解决问题并创建高质量的 Web 应用程序。

使用Silverlight和HTML5(即canvas和svg标签),图形处于稳步上升状态,并且在不久的将来很难区分网络和桌面之间的界限。

听起来像是一个使用这些数学技能的好机会。 由于服务器将在流程中的某个时刻参与,因此仍然需要Web技能。

Web编程(或者至少应该是)主要是函数式编程 ,这实际上是数学思维。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM