能否使用其他语言编写Java代码?

9

我想知道一个人是否可以用另一种语言编写代码。 我指的不是像这样用不同语言命名变量:

String[] tableau = {"Janvier", "Fevrier"};
System.out.println(String[0].length);

但更像是
Chaîne[] tableau = {"Janvier", "Fevrier"};
Système.sortie.imprimeln(Chaîne[0].longueur);

“那是否可行?或者你需要编写自己的法语或[插入语言]编码语言?”

7
不过,这将是一种不同的语言 - 在双关语的意义上。 - Scary Wombat
有时候梦想会成真,但有时候这次不会。 - Ismail Sahin
在Java源代码中,您无法重命名现有类型或标识符,但是您可以在自己的类型和标识符中使用Unicode(好或坏)。然而,尽管这可能让我听起来很美国化:请使用英语(或至少是Unicode的ASCII子集)。 - user2864740
Excel做了类似的事情,所有函数名称都是本地化的。这真是一场噩梦。 - kapex
你可以用 Kotlin 写它。 - Hayden
4个回答

7
如果您想使用预处理器来完成这个任务,我相信它会完美地工作。Java没有内置的预处理器,但是C和C++有(例如cpp)-因此,您可以在构建链中添加一步来执行预处理,然后您的代码将被翻译成“托管”英语Java再进行编译。另一个例子是考虑语言CofeeScript;一种将自己转换为JavaScript的语言。因此,只要您的映射是一对一等效的,我相信答案是Oui

我的意思是,当然 String 类型不会改名为 French,但你肯定可以声明自己的类型叫做 Chaîne 吧?Java 肯定支持 UTF-8 编码的源文件吧? - Kaz
@Kaz 我相信 OP 的意图是通常本地化 Java 编程语言。至少 OP 特别询问了关于本地化 String 类、其字段长度和 System.out.println。Java 使用 UTF-8 字符串,我非常确定构建的主机环境(或可能是源代码库)系统决定了源文件的区域设置。 - Elliott Frisch
你可以通过预处理器来解决一部分问题,但是你会对Java附带的所有包中的每个标识符进行预处理吗?我坚持我的答案:“aucun”。 - John3136
1
@John3136 我会吗?不。我可以吗?是的。因此它是可能的。我并不保证这是一个好主意。 - Elliott Frisch

5

编号。

你可以编写自己的前端来将“法语Java源代码”转换为“英语Java”(无论是字节码还是源代码),但你仍然会遇到所有基于英语的库和任何第三方工具的问题。


0

编程语言不需要改变其库标识符和内置关键字,从一种语言到另一种语言。

如果您正在使用Java进行编程,可以使用UTF-8对源文件进行编码。

然后,您可以在自己的标识符中使用来自其他语言的Unicode符号。

您可以将自己的类型命名为Chaîne; 但String类型保持为String,而像ifforpublic这样的关键字保持为英文。

本地化语言关键字的概念已经尝试过。例如,在晦涩的语言Protium中。(如果所有线索都没有死亡,我会提供一个链接;但Rosetta Code有一些示例。)在Protium中,所有符号都由字符三元组组成,以创建半可读的缩写。例如,这段代码片段是用英语呈现的:

<@ SAI>
    <@ ITEFORLI3>2121|2008|
    <@ LETVARCAP>Christmas Day|25-Dec-<@ SAYVALFOR>...</@></@>
        <@ TSTDOWVARLIT>Christmas Day|1</@>
        <@ IFF>
            <@ SAYCAP>Christmas Day <@ SAYVALFOR>...</@> is a Sunday</@><@ SAYKEY>__Newline</@>
        </@>
    </@>
</@>

现在的想法是,这些三字母组合,比如LET VAR CAP,它们组成了一个标识符,比如LETVARCAP,分别映射到其他语言中的一些对应的三字母组合。或者,在写作系统中包含复杂字符的语言(如中文或日语)的情况下,映射到单个表意字符。

你可以理解为什么会这样。


0

Java语法应该用简单易懂的英文书写。JVM将使用英文语法转换成字节码。当然,您可以使用Locale来显示其他语言的标签和消息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接