首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向后兼容替代Kotlin和Scala?

向后兼容替代Kotlin和Scala?
EN

Software Recommendation用户
提问于 2018-11-29 23:28:06
回答 1查看 84关注 0票数 2

我正在寻找一种编程语言(即:编译器和IDE软件包),它引入了诸如隐式转换、赋值/调用可替换性、混合、扩展方法、函数剔除、模式匹配等现代方便概念,但完全与Java兼容。

“向后兼容”的意思:我可以使用遗留的Java代码并在新语言中使用at as-is,并且只在我想要的特定位置添加高级特性。

历史上的平行:当人们决定在C语言中添加面向对象的特性时,他们采取了两种不同的方法。一个(C++)强调向后兼容性。另一项(目标C)没有。在我看来,目标C是C,就像Kotlin和Scala是Java;C++对于C是未知语言X对于Java。

作为另一个挑剔的需求,这应该看起来像一种真实的语言,而不是像Project这样的注释汤。

我对Kotlin和Scala等语言的抱怨之一是,它们引入了一些不必要的更改,比如将声明从Type name更改为name: Type。我说这是无谓的,因为它们在功能上是等价的,在人机工程学上是低劣的(在每次声明中都有一个额外的字符)。它们破坏了兼容性,而没有提供任何额外的好处。

我对Java生态系统非常了解。我希望,如果有一种符合我要求的语言存在,那么它可能是一个非常晦涩的项目,某个地方有一个杰出的人。它存在吗?

EN

回答 1

Software Recommendation用户

发布于 2018-11-30 12:53:54

夏普可能就是你要找的东西。它不是向后兼容的,因为有效的Java不是有效的X趋向,而是兼容的,即混合Java /X趋向项目是非常正常的事情,两者都可以无问题地进行互操作(与Scala不同,Scala可以互操作,但Java端很快就有难以处理的神秘名称)。X趋向基本上是Java的语法糖,并且有有效的Java代码作为中间编译产品。

例如,这是文档中的一个示例:

代码语言:javascript
复制
package com.acme

import java.util.List

class MyClass {
  String name

  new(String name) {
    this.name = name
  }

  def String first(List<String> elements) {
    elements.get(0)
  }
}

在语法方面,这里已经发生了几件小事情:

  • 构造函数使用关键字new
  • 方法/构造函数具有默认的可见性public
  • 字段具有默认的可见性private
  • 语句是可选的,在这种情况下,最后一个表达式定义返回值。

进一步特点:

  • valvar用于变量定义,类似于Scala (yay类型推断)。
  • override是一个实际的关键字,而不是可选的注释。
  • 可拓方法,它允许更多的流动调用链,而不是深度嵌套的函数调用。

(如果您愿意的话,X趋向eclipse插件中还有一个上下文菜单项,它可以将Java类转换为X趋向代码)。

票数 0
EN
页面原文内容由Software Recommendation提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwarerecs.stackexchange.com/questions/53424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档