到目前为止,对于我们的JVM系列海盗来说,这确实是一次冒险。 首先,在功能海洋中进行游览,然后在动态海中进行一到两站,甚至是Java群岛的旁游。 今天,我们将在埃塔岛(Eta Island)航行返回功能海,获得一些自由。 准备好在椰子内享用温暖的白色沙滩,碧波荡漾和水果味的酒精饮料,同时我们都学习做草裙舞。

单击该图像以查看JVM信息图的整个盗版。

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上页。

这个示例特别有趣,因为它使用了一种称为“功能性反应式编程”的概念以及由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 MuttineniTypeLead的共同创始人和Eta编程语言的作者。 从小开始,他就一直在积极探索更好的编程方式。 Rahul致力于在线多人游戏,增强现实,实时应用程序等等。 他热衷于将纯函数式编程的奇迹带入主流开发人员社区。

您是否熟悉JVM Universe中的所有编程语言? 你都发现了吗?

如果答案是“否”,那么我们将不遗余力地寻求知识。 因此,JVM信息图的盗版者随附了一系列文章,其中我们重点介绍了您可能知道或可能不知道的语言。

  • Golo —世界不需要另一种JVM语言。 所以他们又建造了一个
  • Clojure —将代码视为数据[JVM的盗版]
  • Eclipse Xtend —紧凑,静态,非常适合代码生成[JVM的盗版]
  • Frege-将纯函数式编程引入JVM! [JVM的盗版]
  • Gosu-嘿,看! 它是JVM的一种实用语言。 一种简单的语言
  • Jython:适用于Java平台的Python [JVM的盗版]

不要忘记查看JVM系列的Pirates 。

翻译自: https://jaxenter.com/eta-pirates-of-the-jvm-133518.html

函数编程变得简单:Eta来了相关推荐

  1. Skaffold:让K8S开发工作变得简单

    Skaffold:让K8S开发工作变得简单 本文介绍在开发过程中,Skaffold自动化build和deploy应用到K8S集群. Skaffold是由Google发布的命令行工具,专注于促进K8S应 ...

  2. openshift_云上的播放框架变得简单:Openshift模块

    openshift 仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说考虑自动缩放,单命令部署,持续集成等问题了 ...

  3. GWT MVP变得简单

    GWT Model-View-Presenter是用于大规模应用程序开发的设计模式. 它源于MVC,它在视图和逻辑之间进行划分,并有助于创建结构良好,易于测试的代码. 为了帮助像我这样的懒惰开发人员, ...

  4. 云上的播放框架变得简单:Openshift模块

    仅仅几年前,找到一个负担得起的Java Web应用程序托管解决方案是一项艰巨的任务,而寻找免费的托管解决方案是一项不可能的任务. 更不用说甚至考虑自动缩放,单命令部署,持续集成等事情,这都是科幻小说. ...

  5. 9切换中文mac_超详细的Mac重装系统教程!让重装系统变得简单起来!

    mac电脑该怎么重装系统?苹果电脑在长时间使用后,系统可能会变得比较慢,另外各种缓存垃圾也会越堆越多,影响电脑的反应速度.mac OS系统是苹果电脑独有的操作系统,重装mac系统过程和Win系统完全不 ...

  6. 蒸汽朋克简单图形免扣PNG素材,让设计艺术变得简单

    蒸汽波艺术风格融入到当今的设计中是非常抢眼的,例如淘宝造物节也大量使用蒸汽波风格等. 蒸汽波的风格设计时尚新潮元素众多,可以迅速吸引用户眼球,在设计中做蒸汽波风格时也要切记在运用颜色和元素摆放时多考虑 ...

  7. 让Netty入门变得简单

    让Netty入门变得简单 https://mp.weixin.qq.com/s/MBnbLmCmFJo0QK9WNwXrXQ 如果先启动nettyClient就不会有nettyServer输出了: p ...

  8. 2022餐饮加盟3大核心,让赚钱变得简单

    根据2022餐饮加盟项目排行来看,20-30万投资金额是投资者最理想的区间,从餐饮品类来看休闲饮品和小吃快餐是最为热门的品类.休闲饮品最受资本青睐是因为深受年轻人喜欢,年轻人是消费的主力军,小吃快餐因 ...

  9. 个人电脑秒变服务器 简单几步,你的电脑也可以成为服务器 (内网穿透)

    个人电脑秒变服务器 简单几步,你的电脑也可以作为服务器 简述 解决方法 前期准备 使用步骤 简述 前段时间学校实训遇到一个问题,运行在个人电脑的系统需要通过手机进行访问,当时在实训时采用的解决方式是将 ...

最新文章

  1. 010.KVM虚机冷迁移
  2. 如何通过 C# kill 指定进程?
  3. 20155117王震宇 2006-2007-2 《Java程序设计》第5周学习总结
  4. ASP.NET 学习笔记_06 Httphandler
  5. 目标识别(object detection)中的 IoU(Intersection over Union)
  6. jqueryMobile模块整理—按钮(buttons)
  7. Tesseract-OCR识别中文与训练字库实例
  8. eureka原理_SpringCloud学习之—Eureka集群搭建
  9. redis关于hash的常用命令
  10. Python-数据库
  11. 日本现场常用日语词汇
  12. 综合训练(考勤系统)
  13. 苹果换芯简史:芯片如何改变苹果的电脑产品线?
  14. Android Studio 3.0~3.x正式版填坑之路
  15. matlab设计倒频系统,OFDM技术仿真(MATLAB代码)
  16. IT30:天行健--君子以自强不息(启航)
  17. 【数据可视化】免费开源BI工具 DataEase 之 Tab 组件前世今生
  18. 这两年大量实体店灭亡,那么商机来了,什么东西又会崛起?
  19. 拯救者 linux 无线网卡驱动下载,Ubuntu下解决拯救者笔记本无法使用无线网卡
  20. 什么是跨站脚本 (XSS)?

热门文章

  1. 吴恩达《机器学习》课后测试Ex2:逻辑回归(详细Python代码注解)
  2. [Elasticsearch] Elasticsearch权威指南翻译目录
  3. python进阶--pandas基本功能
  4. Android自定义TabBar
  5. ROS rosbridge
  6. 初识Python(小白必看)
  7. 原装RFX2401C集成电路2.4GHZ单芯片射频前端IC无线教学模块
  8. 7.3结构体是纸老虎,旧知识新用法
  9. android表情符号使用,android评论输入表情符号
  10. 汉诺塔的递归算法与解析