我正在寻找一种编程语言(即:编译器和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生态系统非常了解。我希望,如果有一种符合我要求的语言存在,那么它可能是一个非常晦涩的项目,某个地方有一个杰出的人。它存在吗?
发布于 2018-11-30 12:53:54
夏普可能就是你要找的东西。它不是向后兼容的,因为有效的Java不是有效的X趋向,而是兼容的,即混合Java /X趋向项目是非常正常的事情,两者都可以无问题地进行互操作(与Scala不同,Scala可以互操作,但Java端很快就有难以处理的神秘名称)。X趋向基本上是Java的语法糖,并且有有效的Java代码作为中间编译产品。
例如,这是文档中的一个示例:
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)
}
}在语法方面,这里已经发生了几件小事情:
newpublicprivate进一步特点:
val和var用于变量定义,类似于Scala (yay类型推断)。override是一个实际的关键字,而不是可选的注释。(如果您愿意的话,X趋向eclipse插件中还有一个上下文菜单项,它可以将Java类转换为X趋向代码)。
https://softwarerecs.stackexchange.com/questions/53424
复制相似问题