Guido认为程序员大多数工作不需要递归

Guido认为程序员大多数工作不需要递归

Python的创造者Guido在最近一篇关于为什么Python里没有 Tail Recurssion Elimination (暂译:尾递归优化)的文章中提到一个我们可能经常听到的观点“真正的程序员一般不用递归”。

http://neopythonic.blogspot.com/2009/04/tail-recursion-elimination.html

Third, I don’t believe in recursion as the basis of all programming. This is a fundamental belief of certain computer scientists, especially those who love Scheme and like to teach programming by starting with a “cons” cell and recursion. But to me, seeing recursion as the basis of everything else is just a nice theoretical approach to fundamental mathematics (turtles all the way down), not a day-to-day tool.

翻译:(第三点)我不认为递归是编程的基础。递归是一些计算机科学家们,尤其是那些热爱Scheme (lisp的一支)和喜欢用‘cons’ 来教表头表尾和递归的人们。但是对我(Guido)来说,递归只是一些为基础数学研究而存在的理论手段(例如分形几何学),而不是日常的编程工具。

这也再次证明当年“耗”哥当年在楼下遛弯时候给我的教导,好的程序员不在于多么会写看似非常聪明的代码,重要的是能够思路清晰的用最简单的方式解决问题。


关注CoolShell微信公众账号可以在手机端搜索文章

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

——=== 访问 酷壳404页面 寻找遗失儿童。 ===——
好烂啊有点差凑合看看还不错很精彩 (5 人打了分,平均分: 4.60 )
Loading...

Guido认为程序员大多数工作不需要递归》的相关评论

  1. 今天写了个python递归的代码,结果没递归几次就说递归太深
    和c,c++的递归能力不能比啊
    搜索下原因就看到了你的这篇文章
    看到要递归还得用python调用c,c++啊

    1. check out
      sys.setrecursionlimit(limit)

      可以设置最大递归深度,不过似乎不是很推荐的做法。欢迎回来交流,很多实际中的问题都可以不用递归。不过有时候确实是递归的代码看着更美。

  2. mailper :
    check out
    sys.setrecursionlimit(limit)
    可以设置最大递归深度,不过似乎不是很推荐的做法。欢迎回来交流,很多实际中的问题都可以不用递归。不过有时候确实是递归的代码看着更美。

    sss

  3. w :

    mailper :
    check out
    sys.setrecursionlimit(limit)
    可以设置最大递归深度,不过似乎不是很推荐的做法。欢迎回来交流,很多实际中的问题都可以不用递归。不过有时候确实是递归的代码看着更美。

    sss

    这个问题的原因是没有按照尾递归的写法,造成了重复计算,重复的栈调用导致默认的1000的栈调用深度很快被用完,具体的分析可以看SICP

  4. 有的时候不用递归的话,写字符串处理函数会很麻烦。当然用库函数就不用考虑这种问题了……

  5. 这个确实是,大部分工作其实递归都不会用到,出了某些特殊情况。
    递归很容易就写出一些神仙代码。

发表评论

电子邮件地址不会被公开。 必填项已用*标注