Fantom编程语言的第一印象?
这里有没有人对Fantom编程语言有兴趣? (双关语意)。
我的第一印象:
- 我喜欢在.NET或者Java VM上运行代码的功能。
- 语法很好,很干净,不会尝试任何花哨的东西。
- 我相信"库就是语言",而Fan的开发人员则认为他们的USP是他们的API:
But getting a language to run on both Java and .NET is the easy part - in fact there are many solutions to this problem. The hard part is getting portable APIs. Fan provides a set of APIs which abstract away the Java and .NET APIs. We actually consider this one of Fan's primary benefits, because it gives us a chance to develop a suite of system APIs that are elegant and easy to use compared to the Java and .NET counter parts.
还有其他想法,第一印象,利弊吗?
解决方案
看起来很受Ruby的启发。它说它是RESTful的,但我看不出它到底是什么。与boo比较,后者在许多方面都更加成熟但相似(尽管其语法受Python启发)。
保持泛型和名称空间非常有限的设计决策值得商question。
这很有趣。
创建Java(或者C#)的目的是通过创建JVM(或者CLR)来消除平台依赖性,该JVM(或者CLR)将在运行时将代码编译为特定的机器代码。
现在,有一种语言与虚拟机无关?嗯....什么鬼?!?!
再次,这是一个非常有趣的话题,这可能是未来... :)转到一种通用的单一语言
我认为他们的解释可以概括为:
"The primary reason we created Fan is to write software that can seamlessly run on both the Java VM and the .NET CLR. The reality is that many software organizations are committed to one or the other of these platforms."
它看起来并不比其他所有非JVM / .NET语言都好。在没有关于它们的任何信息的情况下(他们的博客只是一个错误页面),我看不出为什么他们一定比其他人更正确。每种语言在设计目标时都相当优雅(尽管我在刚才看的小范代码中看到了一些尴尬)-真正的问题是,它能否很好地扩展到全新的事物上,而我们只是不愿意还不知道。
但是,如果组织有一个规则,即"一切都必须在我们的VM上运行",那么这可能是我们可以接受的折衷方案。
我们仅出于虚拟机独立性就放弃了很多。例如,问题是SO上的第一个粉丝问题-比Lisp少几个数量级。
范最佳解决方案是什么? Python和Ruby既可以在两个VM上运行(也不能在两个VM上运行),具有较大的社区和较大的库,并且抽象水平大致相同,但已经成熟得多。
我认为这看起来像是一种很棒的语言功能,但是我不确定它有多有用。我认为以.NET和JVM为目标并不是那么有用。 Java已经是跨平台的,而.NET也已经有了Mono。通过定位两个虚拟机,我们仅需使用两个虚拟机上都可用的API。我们不能使用任何适用于Java和.NET的出色本机API。我无法想象他们的API像Java的.NET一样完整。
直到几周前我才听说过范。从网站上看,它只有一岁左右,所以还很年轻,未经验证。但是,有两个有趣的观点:首先,该语言通过提供参与者模型(类似于erlang)并支持不可变对象来解决并发问题。其次,对象遵循具有类型推断的Scala示例。类型推断允许程序员省略类型声明,但由编译器对其进行计算,从而像动态类型语言一样,提供了代码简洁明了的优点,同时又保留了静态类型语言的效率。最后,它似乎是一种非常快的语言,几乎与Java一样快,并且确实接近或者击败了JM上第二快的语言:scala。可以在http://www.slideshare.net/michael.galpin/performance-comparisons-of-dynamic-languages-on-the-java-virtual-machine?type=powerpoint上找到显示性能的基准。