我们需要一个Java++吗?[已关闭]

在我看来,在某些方面,Java是C语言一段时间以来的地方。两者在当时都是相当简约的语言,具有相对干净,简单的核心。(我在这里指的是核心语言,而不是库。两者都非常受欢迎。两者都是通用语,有大量的遗留代码。两者都缺少一些现代生产力功能,其他语言的程序员经常会错过这些功能。两者似乎都非常惯性主导,适应不断变化的世界的速度很慢。

在我看来,创建一个Java ++是合理的,它大致是Java的超集,就像C++C一样。这样的语言将试图将Java从它所经历的相对停滞中解脱出来,只有在绝对必要的情况下才以一些次要的方式破坏向后兼容性,添加许多普通的旧Java所缺少的现代功能,并担心以后的标准化。可能是一个好主意的功能包括:

  1. 一等函数,委托。
  2. 闭 包。
  3. 静态类型推断,类似于 C# 或 D 中。varauto
  4. 运算符重载。
  5. 结构作为与类(如 C# 和 D)不同的值类型。
  6. 性能。
  7. 用于忽略已检查异常的选项。
  8. 在文件中声明多个顶级公共类的功能。
  9. 更强大的内置数组,允许诸如追加之类的操作。
  10. 更好的泛型/真实模板。
  11. 类似于 C# 4.0 的 dynamic 关键字,它允许在必要时使用一般静态语言进行 duck 键入。
  12. 由于Java主要是一种VM语言,因此可能会有一些硬核元编程功能,例如为某些事情动态生成代码。

你认为会有这种语言的需求吗?你认为这样的事情会成功吗?

编辑:我不是在谈论运行时/字节码级别的兼容性,我说的是源代码级别的Java兼容性。另外,是的,Java 7可以添加其中一些,但是似乎向Java添加功能的“官方”过程非常保守。真正的要点是将Java分叉成一个分支的想法,重点是创新而不是稳定性/标准化。


答案 1

比如说,Scala或更好的Groovy,它自称是Java的动态版本?


答案 2

将为此被Java粉丝们否决,但作为同时编写Java和C#的人,我会说C#与Java ++一样接近。

C到C++是一个范式转变,从过程到面向对象,他们保留这个名字的唯一原因是吸引C程序员认为它是同一种语言,这导致了大量伪装成C++的非常糟糕的C代码。

Java在不断扩展,Sun正在迅速整合越来越多的功能,所以Java 7或8很可能是你的Java ++ 。