关于程序员的产出效率以及代码的执行性能(思考题)

2014-07-17 00:38:55 +08:00
 vjnjc
我的问题是:程序员的开发、维护效率重要还是代码的执行性能重要?

不知道类似的想法有没有在v2ex上提及,事情的缘由是昨天我去SAP面试,和面试官观念冲突。

面试官:(这道算法题)为什么要用递归?
我:(我当然知道递归调用会消耗调用函数的栈,)我希望(别人)阅读、维护这段代码能够更轻松一点。
面试官:你的代码就是写出来看的?
我:。。。(别人看不懂怎么维护啊)
面试官:有其他的解法么?
我:有的,用个while套起来。

十分种后,我的比较优美的代码变成了我都不想承认的代码。
PS:括号里的是我结合语境杜撰出来的,当时对话并没有这些部分。

我的看法:由于鄙人是《人月神话》的忠实粉丝,所以当然是人力比较重要!!写出一段阅读性好,可维护的代码是程序员的职责,而写出奇葩、差劲的代码都是被(进度或者是性能要求)胁迫的。

不吐不快啊,欢迎各位exer表达自己的看法。
由于我能力有限,如有不对之处也欢迎板砖。
5506 次点击
所在节点    程序员
48 条回复
ffffwh
2014-07-17 22:01:41 +08:00
@vjnjc
不只是尾递归,只要是尾调用(tail call),就能不压栈调用。
话说有个叫Continuation Passing Style (CPS)的东西挺好玩的,不知道的可以了解下。
vjnjc
2014-07-17 22:07:21 +08:00
@AlanZhang 同意。我不大确认是不是都是这么想的,所以想看看倾向于性能的程序员是基于什么理由
vjnjc
2014-07-17 22:09:47 +08:00
@ffffwh 多谢开眼
huangyan9188
2014-07-18 00:26:53 +08:00
@vjnjc 空间复杂度差别很大
在做算法优化方面 递归显得很糟糕
iwege
2014-07-18 10:25:52 +08:00
递归很好维护么?是相对什么来说的?.....
xuwenhao
2014-07-18 12:33:27 +08:00
@vjnjc 你为什么有一个假设是 性能 和 可维护性 是矛盾的呢?
tabris17
2014-07-18 13:14:29 +08:00
@vjnjc 我的意思是递归造成的性能损耗是其次的需要关心的,而不是说这个性能损耗是可以忽略的
williamx
2014-07-18 13:50:53 +08:00
涉及到“递归”就不仅仅是性能或是可维护性的问题了。这个问题的解是:只在没有其他办法的时候才用递归!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://tanronggui.xyz/t/123037

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX