gpt4 book ai didi

language-agnostic - 如何处理复杂的事情?

转载 作者:行者123 更新时间:2023-12-04 09:29:56 25 4
gpt4 key购买 nike

您知道代码中对项目至关重要但可能需要大量时间才能完成的特定部分吗?您是否曾经觉得您宁愿从事其他事情(可能不太重要)或根本不编写代码而不是从事那部分工作?你那么努力避免并使用你知道的每一个懒惰的技巧来延迟它不可避免的实现?

现在,我可能只是懒惰,但我总是不得不处理这样的代码。写一些我不想写的东西(如果你是为了好玩而没有得到报酬,那就更糟了!)。一个大型系统需要花费大量时间才能使其进入一个阶段,在该阶段您可以获得任何有用的结果或表明它正在工作的迹象。你如何开始编写这样的代码?大多数人可能会建议分而治之和类似的架构技术,但这与您如何做无关;这是关于你如何让自己开始做这件事的。你会采取的第一步是什么?

最佳答案

我将讲述一个发生在我身上的案例。

我想为使用前向动态编程(维特比算法)的 x264 实现一种新的帧类型决策算法。但它会变得复杂、凌乱、丑陋等等。我真的不想这样做。我试图将这个项目抵押到 Google Summer of Code 上,但由于某种糟糕的运气,我们让一个学生简单地放弃了他的项目……就是选择那个项目的学生。

所以经过两个月的提示和回避之后,我终于开始研究算法了。这就是我的做法。

首先,我与另一位开发人员进行了交谈,他显然已经对如何做到这一点有了一些想法。我们讨论过,他向我解释,直到我从算法的角度完全理解了这个过程。这是任何此类项目的第一步:充分了解其背后的算法,以便您可以对整个事物进行伪代码。

然后,我和我的另一位同事交谈。我们走到一 block 白板上,我把它画出来,直到他也理解为止。通过向别人解释它,我获得了自己的理解。这是第二步:向其他人解释算法,以便他们可以对其进行伪编码。这是对编程过程的模拟,因为编程是向计算机“解释”算法的一种形式。

然后,我编写了一个简单的 Java 原型(prototype),它使用任意假值作为成本函数,并且仅用于测试 Viterbi 搜索。我完成了它,并通过详尽的搜索检查了它——它完全匹配。我的动态编程是正确的。这是第三步:在最简单的环境中编写最简单的算法形式。

然后我将它移植到 x264 的母语 C。它再次起作用了。这是第四步:将算法的简单形式移植到完整的环境中。

然后,最后,我用真实的成本函数替换了假成本函数。经过一些错误搜索和修复后,它起作用了。这是最后一步:将算法与环境完全集成。

这个过程只用了一周时间,但从项目开始时的我的角度来看,这完全是令人生畏的,我什至无法让自己开始——然而把它分解成这样一个一步一步的过程,我不仅能够get it done ,但是比我预期的要快得多。

好处远远超出了 x264;我现在对维特比了解得如此透彻,以至于我现在可以向其他人解释……其他人也可以从中受益匪浅。例如,一个 ffmpeg 开发人员正在使用我的算法和代码的改编来优化解决一个稍微不同的问题:音频文件中的最佳标题放置。

关于language-agnostic - 如何处理复杂的事情?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/145676/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com