【发布时间】:2011-01-18 12:04:52
【问题描述】:
我非常清楚函数式和命令式编程技术之间的区别。但是有一种普遍的趋势是谈论“函数式语言”,这真的让我很困惑。
当然,像 Haskell 之类的一些语言比 C 等其他语言更适合函数式编程。但即使是前者也可以进行 I/O(它只是把它放在一个贫民窟中)。而且您可以用 C 编写函数式程序(这简直是荒谬的难)。所以也许这只是程度的问题。
不过,即使在程度上,有人称 Scheme 为“函数式语言”是什么意思?我看到的大多数 Scheme 代码都是必要的。如果您愿意,Scheme 是否可以很容易地以函数式风格编写? Lua 和 Python 也是如此。它们也是“函数式语言”吗?
我(真的)不想成为一名语言警察。如果这只是一种松散的谈话方式,那很好。我只是想弄清楚它是否确实有一些我没有看到的明确含义(即使是程度问题)。
【问题讨论】:
-
实际上,我希望玩 Perl/Python/Ruby/C# 的孩子们在他们作为代码生成的一堆难看的冒着热气的标点符号中出现匿名函数时,就停止标记他们的问题
functional-programming例子。我对他们的问题不感兴趣,但我感兴趣的一些问题只有functional-programming标签来区分它们。正如您所指出的,它应该是功能语言,但没有人使用该标签。 -
@Pascal - 我完全不同意。有很多函数式编程技术在各种不是“纯函数式语言”的语言中都很有用。这与使用允许多种范式的语言以面向对象的方式进行编程相同。如果您对纯函数式语言感兴趣,那么也许应该有一个单独的标签......或者通过这些特定语言的标签查找内容。
-
说到面向对象编程,如果你觉得这里的 Pascal 不开心,去找一些 Smalltalkers 问问他们 C++ 是否“支持面向对象编程”。
-
@Pascal:虽然您可能对函数式编程的一些更复杂的方面感兴趣,但人们仍在尝试理解许多更简单的元素(例如折叠)。我阅读了函数式编程标签以进一步了解函数式编程的知识,因为我发现它是一种非常有用的风格,但我不使用任何纯/传统的函数式语言。我只是碰巧看到了函数式编程的特定元素为整个过程带来的许多好处(一个大的好处是更容易自动化测试)。
-
@PascalCuoq 将其他语言的程序员描述为“孩子们在玩”,并将他们的代码描述为热气腾腾的一堆,这不是很优雅(而且有点粗俗)。
标签: functional-programming scheme