eta: 45s
到目前为止,对于我们的JVM系列海盗来说,这确实是一次冒险。 首先,在功能海洋中游览,然后在动态海中停一两站,甚至是去Java群岛的一次侧面旅行。 今天,我们在埃塔岛(Eta Island)上航行返回功能海,获得一些自由。 在我们都学会做草裙舞的同时,准备暖和的白色沙滩,碧波荡漾和椰子中的果味酒精饮料。
Eta –背景信息
其他语言无法提供的Eta必须提供什么?
Rahul Muttineni :我从小就热爱探索新的编程语言,五年前,我发现了Haskell,这让我震惊 。 我知道语言(或它的某种变体)将是编程的未来,因为我知道构建大型,快速发展的系统的痛苦–我在14岁时就从事在线多人游戏,并且必须不断添加新功能。 最近,我担任Clojure顾问,在此期间,我了解了Java平台的重要性,并了解到当前的JVM语言无法提供与Haskell相同的优势。 因此,我着手弄清楚如何让Haskell在JVM上工作并朝着对主流程序员更友好的新方向发展语言。 埃塔(Eta)是这种努力的结果。
Eta是JVM上的一种纯函数式语言,可在软件开发过程中为您提供更多理智。 您可以更好地推理代码,并了解发生了什么。 人们可以更轻松地看到核心业务逻辑,而不会陷入细节。 编译器可以防止您犯愚蠢的错误(比其他静态类型的语言要多得多!)。 我们是人类,无论我们在编程上获得了多少专业知识,在糟糕的一天,我们都会犯错误,而这些错误可能会造成巨大的损失。 而且,对所有人来说都比较容易教,因为它自然而然地遵循数学原理,即您没有随时间改变值的变量-命令性语言的这一方面使某些人难以进行编程。
Eta…在软件开发过程中为您提供了更多理智。
JVM上的另外两种主要功能语言Scala和Clojure仅提供了上述好处的一部分。 默认情况下,Clojure具有不变性,可以轻松地推理代码,但是动态类型化的类型意味着没有静态检查(=糟糕的日子里的错误)。 另一方面,Scala具有强大的类型系统,并试图在一种语言中混合使用功能和OOP范式(这限制了类型系统的功能),并且默认情况下它不是不可变的,因为您必须为每个变量指定它宣言。 Eta可以同时使用两种语言和更多语言! 这两种语言都受到Haskell的影响,并继续支持其中的更多想法。 因此,我们了解到要使JVM上的编程语言更好,我们需要使用源代码:Haskell。
JAXenter:您能描述语言的核心原理吗?
Rahul Muttineni : 在这里查看我们的网站。 它通过示例简要地解释了核心原理。
JAXenter:使用Eta的典型程序是什么样的?
Rahul Muttineni : 文档中有很多代码示例,您可以选择其中之一。
–不是哪个?
Rahul Muttineni: Eta是一种通用语言,因此您可以用它来构建任何东西。 但话虽如此,它的核心原理使初学者可以轻松地对高度并发/并行的系统进行编程,而无需费力。 此外,Eta强大的类型系统在编译时为您提供了一层测试,可以减少需要维护的测试数量,因为每次编译时编译器都会进行大量的静态检查。 这意味着快速发展的应用程序可以在不破坏现有功能的情况下添加新功能,因为最佳的软件工程实践是在语言级别上实施的。
由于Eta在默认情况下是不可变的,并且是惰性的(存储暂停的表达式),因此它会生成大量垃圾,从而对垃圾收集器造成压力。 这意味着对于原始性能确实很重要的应用程序,Eta可能不是一个好选择。 但这并不是说您不能通过适当地调整GC设置并使用重写规则功能来告诉编译器更积极地优化代码,从而针对低延迟应用程序调整Eta!
简而言之,对于需要长期稳定并经常更改或利用并发/并行性的大型应用程序,Eta是完美的。 对于要求裸机性能的应用,Eta不太适合。
JAXenter:语言的当前状态是什么?
Rahul Muttineni:语言处于alpha阶段,但是编译器和运行时系统本身非常稳定。 工具和库仍不成熟,但是我们正在快速增长。 我们已经很好地与Java集成,因此您可以轻松地向JavaFX,JDBC,Apache Spark等库编写绑定。此外,我们与Haskell语言的兼容性足够好,甚至可以访问大量的Haskell语言。 Haskell库也是如此!
你可以找到一些例子在这里 , 在这里 ,并在这里从我们的Github上页。
这个示例特别有趣,因为它使用了称为功能性React式编程的概念以及由Haskell实现的库,但是Eta可以对其进行编译! 而且,它还绑定到JavaFX Canvas API来绘制游戏图形,这清楚地表明从Eta访问Haskell和Java生态系统都非常简单。
JAXenter:您的计划如何?
Rahul Muttineni :我们将重点关注的方面在我们的GitHub页面上进行了描述:
- 并发运行时
- 互动式REPL
- 元编程(TemplateHaskell支持)
- 核心库支持
- Java FFI导入的样板生成
- 特定于平台的安装程序
我们围绕这个公司建立了一家名为TypeLead的公司,因此我们为希望在生产中使用Eta的公司提供商业支持和培训。 您可以在这里找到公司的愿景。
JAXenter:对Eta感兴趣的人如何开始?
Rahul Muttineni:如果人们对Eta感兴趣,则应继续前往我们的入门页面 。 它为初学者提供了有用的资源。
JAXenter:感谢您的采访!
Rahul Muttineni:谢谢你的陪伴 。
Rahul Muttineni是TypeLead的共同创始人和Eta编程语言的作者。 从小开始,他就一直在积极探索更好的编程方式。 Rahul致力于在线多人游戏,增强现实,实时应用程序等等。 他热衷于将纯函数式编程的奇迹带入主流开发人员社区。
您是否熟悉JVM Universe中的所有编程语言? 你都发现了吗?
如果答案是“否”,那么我们将不遗余力地寻求知识。 因此,JVM信息图表的盗版者随附了一系列文章,其中我们重点介绍了您可能知道或可能不知道的语言。
翻译自: https://jaxenter.com/eta-pirates-of-the-jvm-133518.html
eta: 45s