很难说出这里问的是什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或言辞激烈,无法以目前的形式合理回答。如需帮助澄清此问题以便可以重新打开,visit the help center .
11 年前关闭。
我在软件行业工作了两年。一些让我感到困惑的事情如下:
例如:当机械工程师设计电线杆时,他通过使用应力分析技术(阅读数学方程式)来计算地基上的应力,以确定应使用哪种钢材和什么等级,但是当软件开发人员部署网络时服务器应用程序他只是猜测他的服务器上的估计负载,剩下的就靠运气和上帝了,他没有什么可以用数学模拟来回答他的问题(我的观察)。
例如如果我用 C# 或 java 编写一个简单的客户端服务器应用程序,我永远无法事先计算出这段代码的效率和复杂性会有多少,或者整个客户端服务器应用程序需要的最低限度是多少(我的观察) .
请张贴对我上述任何令人费解的观察结果的答案。
也请张贴相关引用资料。
如果有人证明我是错的并以正确的方式展示,我会很高兴。
提前致谢
阿西什
最佳答案
我认为这有几个原因。一是在许多情况下,简单地完成工作比让它表现得尽可能好更重要。我写的很多软件都是偶尔在小数据集上运行的东西,或者性能影响非常微不足道的东西(它是一个对每个元素进行固定计算的循环,所以它是微不足道的 O(n) )。对于大多数这种软件,花时间详分割析运行时间是很愚蠢的。
另一个原因是软件以后很容易更改。一旦你 build 了一座桥梁,任何修复都可能非常昂贵,所以在你做之前非常确定你的设计是很好的。在软件中,除非您在早期就做出了糟糕的架构选择,否则一旦您拥有更多有关其性能的真实数据,您通常可以找到并优化性能热点。为了避免那些可怕的架构选择,您通常可以进行近似的粗略计算(确保您没有在大型数据集上使用 O(2^n) 算法,并在一个因子内进行估计大约 10 个左右,您需要多少资源才能实现您期望的最重负载)。这些确实需要一些分析,但通常它可以非常快且不加分。
在某些情况下,您确实确实需要从系统中榨取终极性能。在这些情况下,人们经常会真正坐下来,计算出他们正在使用的系统的性能特征,并进行非常详细的分析。例如,请参阅 Ulrich Drepper 令人印象深刻的论文 What Every Programmer Should Know About Memory (pdf) .
关于math - 探索计算机科学的数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1970994/