[1270] Functional

Title Text:Functional programming combines the flexibility and power of abstract mathematics with the intuitive clarity of abstract mathematics.<

Origin:https://xkcd.com/1270/

https://www.explainxkcd.com/wiki/index.php/1270:_Functional

White Hat质疑Cueball对函数式编程的信心。 Cueball回应称,“尾递归是它自己的回报。”

函数式编程是一种仅使用函数调用的计算机编程风格,而不是其他传统的编程工具,如循环。函数式编程通常使用递归函数来实现与其他编程语言中的循环相同的目的。递归函数再次调用自身,通常使用稍微不同的参数。例如,以下阶乘函数是递归的,因为它为任何大于1的参数值n再次调用自身。

阶乘(N):

    如果n> 1:

        返回n *阶乘(n-1)

    其他:

        返回1

尾递归是一种特殊的递归,通常编译成更有效的代码(参见下面的更长解释),但尾递归和其他种类的递归之间的差异对于这部漫画的幽默并不重要。

漫画是关于“尾递归是它自己的奖励”的两个读物的双关语。表达“X是它自己的奖励”通常被用来表明X本身就具有本质上的价值。一些(但不是全部)程序员和数学家发现递归函数优雅且本质上令人愉悦,因此在这种意义上将尾递归作为其自身的奖励。由于递归函数再次调用自身,并利用结果值,因此还有一种感觉,递归函数也可以作为自己的“奖励” – 即,递归函数本身返回函数执行其任务所需的值。因此,即使你没有发现本质上令人愉悦的尾递归,仍然存在这种技术感,无论如何它都是它自己的奖励。

标题文本很幽默,部分原因是它违反了两个期望。首先,形式“X结合Y的一些特征与Z的某些特征”的表达式通常谈论两种不同事物的特征组合(即,Y不等于Z),而本文通过“抽象数学”使读者感到惊讶。占据Y和Z的作用。其次,这种表达通常列出两个积极的特征。第一个列出的特征(“抽象数学的灵活性和力量”)非常明显。然而,第二个特征(“抽象数学的直观清晰度”)不太明显是积极的。许多人实际上发现抽象数学在直觉清晰度上相当缺乏,并且出于同样的原因,许多人经常发现函数式编程也缺乏直观的清晰度。因此,标题文本邀请读者思考函数式编程是否真的是一个积极的事情,能够声称符合“抽象数学的直观清晰度”,或者Randall是否可能只是通过一个有趣的反向搞乱函数式编程赞扬。

Leave a Reply

Your email address will not be published.

Categories