【问题标题】:First impressions of the Fantom programming language? [closed]Fantom 编程语言的第一印象? [关闭]
【发布时间】:2008-09-25 14:02:56
【问题描述】:

这里有人试一下Fantom programming language 吗? (双关语)。

我的第一印象:

  • 我喜欢让代码在 .NET 或 Java VM 上运行的能力。
  • 语法优美简洁,没有尝试任何花哨的东西。
  • 我坚信“库就是语言”,开发者范believe that their USP is their APIs

但是让一种语言同时在 Java 和 .NET 上运行是很容易的部分 - 事实上,有很多解决方案可以解决这个问题。困难的部分是获得可移植的 API。 Fan 提供了一组抽象出 Java 和 .NET API 的 API。实际上,我们认为这是 Fan 的主要优势之一,因为它让我们有机会开发一套系统 API,与 Java 和 .NET 对应部分相比,这些 API 更优雅且易于使用。

还有其他想法、第一印象、利弊吗?

【问题讨论】:

  • 我真的很想知道为什么这个问题被否决了。

标签: language-design fantom


【解决方案1】:

它看起来非常受 Ruby 的启发。它说它是 RESTful 的,但我不知道具体如何。与 boo 相比,后者更成熟,但在许多方面都相似(不过,它的语法受 Python 启发)。

保持泛型和命名空间非常有限的设计决策值得商榷。

【讨论】:

  • Boo 真的可以像 Fan 一样在 Java 和 .Net 之间切换??
  • 不,但它可以在 Mono 和 .NET 之间切换 :) 在 Java 和 .NET 之间切换并不是一个足够好的理由。 IKVMM 是一个用 .NET 实现的 JVM!
【解决方案2】:

我认为他们的解释总结了这一点:

“我们创建 Fan 的主要原因是 编写可以无缝连接的软件 在 Java VM 和 .NET 上运行 CLR。现实是很多软件 组织致力于一个或 这些平台中的另一个。”

它看起来并不比所有其他非 JVM/.NET 语言更好。在没有关于他们的任何信息的情况下(他们的博客只是一个错误页面),我看不出他们为什么一定会比其他人更正确。 每一种语言在开始时都相当优雅,因为它的设计目的是为了(尽管我在刚才看到的小范代码中看到了一些尴尬)——真正的问题是它的扩展能力如何全新的事物,我们还不知道。

但如果您的组织有“一切都必须在我们的 VM 上运行”的规则,那么这对您来说可能是一个可以接受的折衷方案。

仅仅为了虚拟机的独立性,你已经放弃了很多。例如,您的问题是关于 SO 的第一个 Fan 问题——比 Lisp 少几个数量级

对于什么问题,Fan 是最好的解决方案? Python 和 Ruby 已经可以在这两种虚拟机上运行(或者两者都没有),拥有大型社区和大型库,并且似乎具有大致相同的抽象级别,但要成熟得多。

【讨论】:

  • +1 - 巧妙地观察到这是一种非常晦涩的语言(“比 Lisp 少几个数量级”)。我同意您的意见 RE:关于 Python 和 Ruby:它们足够新,并且已经有多种 VM 支持选项。
【解决方案3】:

直到几周前我才听说范。从网站上看,它大约一岁,所以还很年轻,未经证实。然而,有几个有趣的点:首先,该语言通过提供一个参与者模型(类似于 erlang)和支持不可变对象来解决并发问题。其次,该对象遵循具有类型推断的 Scala 示例。类型推断允许程序员省略类型声明,但由编译器计算它,提供了与动态类型语言一样的代码更短、更清晰的优势,同时保留了静态类型语言的效率。最后,它似乎是一种非常快的语言,几乎与 Java 一样快,并且非常接近或击败 JM 上第二快的语言:scala。显示性能的基准可以在http://www.slideshare.net/michael.galpin/performance-comparisons-of-dynamic-languages-on-the-java-virtual-machine?type=powerpoint找到。

【讨论】:

    【解决方案4】:

    这很有趣。

    创建 Java(或 C#)是为了通过创建一个 JVM(或 CLR)来消除平台依赖性,该 JVM(或 CLR)将在运行时将代码编译成特定的机器代码。

    现在,有一种语言是独立于虚拟机的吗?嗯....什么鬼?!?!

    再次,这是一个非常有趣的话题,这可能是未来...:) 去一个通用的单一语言

    【讨论】:

    • 老哥,听说你喜欢机器独立!
    【解决方案5】:

    我认为它在功能方面看起来很棒,但我不确定它有多大用处。我认为针对 .NET 和 JVM 并不是那么有用。 Java 已经是跨平台的,.NET 也是,与 Mono。通过以两个 VM 为目标,您必须仅使用两者都可用的 API。您不能使用任何可用于 Java 和 .NET 的优秀原生 API。我无法想象他们的 API 与 Java 或 .NET 中的任何一个一样完整。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-19
      • 1970-01-01
      • 2011-08-20
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      相关资源
      最近更新 更多