有一家公司正在开发一台名为Parallella的非常并行的计算机。看起来它有很多潜力,但它运行一些C风格的语言。
Q值。有没有人专门编写一种语言来利用像这样的大规模并行计算机?
答案 0 :(得分:3)
有一种语言可以用来处理并行计算日益普及的问题。自Moore's Law去世以来,并行处理器的受欢迎程度一直很高。在编程语言中支持更好的并行计算已经很快得到了应用。
我的个人推荐是Haskell或Clojure。两者都是功能语言,它们在并行和并发计算方面取得了巨大进步,利用它们的功能性来获得优势。 Haskell有一本非常好的书叫Simon Marlow,名为Parallel and Concurrent Programming in Haskell。我读过它并且它很棒。 Clojure也是从头开始构建的,考虑到了并发性。这个领域的一个有趣的新玩家是Julia,但我不能说我对它有很多了解。
至于第1条,我不知道托管语言的含义。编辑:您调用托管语言的内容通常称为garbage collected语言。您可能希望使用该术语来帮助获得更有效的答案。我推荐的所有语言都有垃圾收集。
对于第2节,Haskell肯定使并行计算相当自动,而不用担心低级概念或锁定。有一个简单的功能称为' par'它允许程序员注释要并行执行的两个计算。语义保证表达式在需要时进行评估,并且由于计算功能正常,因此保证不以非线程安全的方式进行交互。
对于第3条,您正在寻找正确的功能语言。功能子计算具有自动线程安全性,当确保并行执行不会引起问题时,它会带来很大的好处。如果计算有效,它就不会导致任何问题。
至于第4条,祝你找到一种没有lambda的函数式语言,祝你好运;)编辑:严格来说,它并不是函数式语言定义的一部分,因为没有正式的定义什么是功能性编程语言。非正式地,我认为很多人会将其视为最重要的功能之一。基于隐性编程(也称为无点样式)的连接语言或语言可以起作用,并且没有lambda就可以逃脱。如果K语言虽然功能正常,但我并不感到惊讶。此外,我知道肯定组合逻辑(这是K的基础)没有lambda。虽然组合逻辑只是一个理论基础而不是一种实用的编程语言。