gpt4 book ai didi

多线程......函数式语言? (序言)

转载 作者:行者123 更新时间:2023-12-04 17:05:32 28 4
gpt4 key购买 nike

当我的 friend 在学校开始学习 Prolog 时,我取笑他学习了无用的语言。然而,他向我展示了一些我什至不知道可能的东西;我想知道这个技术是从哪里来的。

技术是这样的:

permutation(List) :-
isAMember(X, List),
deleteFirstElement(X, List, Substring),
% and so on

在此代码中, isAMember(X, List)是一个函数,如果 X 返回真在 List .然而,到目前为止 X未定义为变量 - 因此程序将生成一堆新线程,每个可能的值 X 一个线程。这使得 isAMember(X, List)真的,然后从那里继续。

这使我们能够以我能想象到的最简单、最优雅的方式创建多线程算法。

所以我的问题是: 这是 Prolog 特定的,还是所有逻辑和/或功能语言的特征? 另外,我在哪里可以学习更多像这样的惊人多线程技术 - 这肯定是编程的 future 。

最佳答案

被称为“Datalog”的 Prolog 子集仅限于纯逻辑特征(无“切割”),原则上,证明搜索可以并行完成。但是你必须小心,因为完整 Prolog 的语义对产生结果的顺序非常敏感,而一些真正的 Prolog 程序依赖于此。

像 Haskell 和 Clean 这样的纯函数式语言的情况要好一些——并行计算子表达式总是安全的——但存在许多性能挑战。如果您执行极端并行(每个子表达式),您将不会因为所有开销而获得任何性能提升。目前有希望的方法似乎是

  • 线程(并发 Haskell)
  • 数据并行 Haskell
  • “ Spark ”与 parseq运营商。

  • 并行功能的东西已经存在了将近 30 年,人们仍在努力使其表现良好。如果您想了解更多信息,请尝试
  • 关于 Haskell 的 ACM 研讨会(以及在此之前的 Haskell 研讨会)的最新 session 记录
  • Arvind 在麻省理工学院的工作,他是该领域的伟大先驱(查看他与 R. Nikhil 合着的关于 pH 并行编程的书)
  • 关于多线程......函数式语言? (序言),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2174535/

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