为什么没有更多的自然语言编程语言?


9

是否有可用且可扩展的编程语言不止一种自然语言?

例如,带do..while循环的英语版本,带循环的西班牙语版本,带hacer..mientas的法语版本faire..pendant和带的荷兰语版本doe..terwijl

我可以想到的唯一一种“编程语言”就是Microsoft VBA。

奖励问题:为什么很少有多种语言的编程语言?


12
不管是好是坏,英语是大多数编程语言中的Lingua Franca。
罗伯特·哈维

13
That's a reason why the languages are in English, not why there are no other languages, for example no "Java Indonesian" or "C++ Swahili"-因为您的Java Indonesian程序只能由Indonesian程序员维护。
罗伯特·哈维

5
@DavidArno 在非英语国家/地区的人是否使用英语编码?并链接到它的多个问题
蚊蚋

8
与翻译标准库相比,@MartijnBurger转换关键字是“次要问题” ,这是“巨大的任务”。这也是导致互操作性问题的原因。Java编译后不依赖于关键字的拼写;但这确实取决于包,类和方法名称的拼写。
丹·盖茨

3
@DanGetz在Java(以及其他语言)中仍然存在关键字保留的问题。我无法像String for;Java中那样定义字段,因为这将是类中的导出符号。而且那也不能命名一个字段doe,因为它是荷兰语版本,并且public class Deer { String buck; String doe; }无法doe访问该字段。所有关键字都是Java中的保留字。与其他语言中的关键字冲突的字段会发生不好的事情。

Answers:


21

Excel公式中的函数名称已本地化,您可以在其中使用英语或本地等效字词。

当您在区域和用户语言之间移动时,这导致无数电子表格中断。由于本地文档已本地化并且没有提及事物的英文名称,因此也很难搜索有关功能的信息,相反,对于大多数读者而言,使用本地名称询问SO本质上是毫无意义的。

关键字应被视为不透明的绰号,恰好与拼写它们的英文单词的含义保持一致。那里有很多不讲英语的程序员,他们都不知道关键字的一半是什么意思。


5
令人惊讶的是,这个答案是出现“ Excel”一词的唯一地方,被认为是翻译公式的史诗般的失败。这两个参数都是有效且非常有力的:电子表格会中断,而本地化版本会分散社区。这不包括供应商自行翻译文档和程序(编译器)的工作。

1
为什么在脚本中翻译关键字如此困难?当然,由于它们已经过特殊处理,因此它们应该相对容易解析。
SuperBiasedMan '16

而且,Excel并不是真正的自然语言编程系统,因为它不会将英语句子结构转换为可执行程序。
安德森·格林

16

在上个世纪,特别是在1960-1970年代,它们已经成为一些非英语的编程语言。在法国,我们的PAFLSE带有法国风格的关键字。第二次世界大战德国由K.Zuze 创作的Plankalküll 在苏联,A.Ershov设计了一些带有俄语关键字的语言(例如Rapira)。IIRC PAF(由我已故的父亲在我还是婴儿的时候设计和实施-1960年代初)也可以与具有英语外观(或俄罗斯外观或德国外观)的关键字一起出售。而且某些语言(例如APL)根本没有任何关键字。其他语言(PL / I)没有保留关键字。你可以重新定义与预处理技术的关键字(如今天,在C,#define si if#define sinon else法国学生....;类似的宏观基础的招数在PL / I,甚至Common Lisp的是可能的)。

但是IT主要是在英语国家(美国)开发的。因此,编程语言及其实现具有英文说明和文档以及英文关键字。因此,每个开发人员都需要能够阅读技术英语,并且“本地化”编程语言没有任何附加价值(而且,这样做会使使用其他软件更加困难,正如在其他地方回答的)。当前英语国家的技术和经济优势要求所有工程师今天都阅读英语(我敢肯定,即使是朝鲜,中国或伊朗的软件工程师也能够阅读英文文档,并能够阅读带有英文关键字和标识符的代码) 。因此,没有更多的附加值可以“本地化”一种编程语言(也许除了向高中生​​教基础编程之外)。

另外,英语有很多简短的关键字(比较sinon法语和else英语,或者mettre法语和put英语),因此使用英语关键字有一个很小的优势。

也许一个世纪后,中国可能成为IT的主要国家,某些基于中文的编程语言可能会蓬勃发展。我们不知道那会发生什么...。

PS。英语的主导地位并不特定于IT。即使英国脱离欧盟(英国脱欧的情况),事实上的官方EC语言仍将是英语(那时将不再是任何欧盟成员国的语言),H2020 ICT项目也将用英语编写。


别忘了Plankalküll
Erik Eidt'2

谢谢。不要与谐音的法国计划Calcul
Basile Starynkevitch

我不知道,但是我赞成,所以现在(仅alas)是中立的。我发现这是一个很好的答案。
Mawg说恢复Monica

5
英语是爱尔兰共和国的欧盟两种正式语言之一。
马修·弗林

9

没有很好的理由不翻译专业编程语言。

1)努力:翻译现代语言将是一项艰巨的任务。以Java为例-转换50个左右的关键字将是一个小任务,但是您还需要转换包含数千个类和方法以及相关文档的完整标准库。

2)兼容性:即使基础语言和标准库已翻译,您仍然无法使用未翻译的第三方库和代码。第三方库和代码是使语言具有吸引力和实用性的主要部分。使用翻译版本时,每种语言都必须从头开始为每种翻译启动生态系统。每个人的情况都会更糟。

3)程序员无论如何都要懂英语。无论如何,HTTP,CSS,HTML等许多标准都使用英语作为标识符。由于这些单词已纳入标准,因此无法翻译。

由于程序员无论如何都需要懂英语,因此创建编程语言的翻译版本将只有缺点,而没有好处。

也就是说,对于面向临时程序员而非专业程序员的语言,创建翻译版本可能是有意义的。VBA就是这种情况,我相信AppleScript也存在于翻译版本中。


5

我不知道任何其他语言,除了可能是某些真正古老的深奥版本的BASIC,它往往会受到很多奇怪的青睐,因此,我将坚持一个额外的问题:为什么翻译的编程语言如此之少:

我相信,这只是编译器和库实现者没有太大需求的复杂性。我认为这是一些原因。

  • 如果您不坚持使用“通用”语言,则将限制代码的读者。当然,不是每个人都懂英语,但是每种语言都一样。
  • 单个单词的关键字不一定在所有语言中都是单个单词,这会使解析变得复杂。我从未检查过,但是我可以想象有很多特殊的大写字母可以处理c ++的单个多字类型“ long long”。
  • 如果您开始翻译关键字,还会考虑语言环境以及数字的格式吗?例如,逗号与句点作为小数点分隔符。还是要求德语名词大写?
  • 给定程序中的绝大多数文本是变量,方法和类名,更不用说注释了。尽管肯定有用其他语言编写的库,但是对于大多数开发人员而言,必须维护所有库的源代码翻译以为所有用户服务将是很大的负担,更不用说围绕此类代码进行讨论的额外复杂性了。
  • 编译器必须了解所有已实现的语言。同一文件中甚至可能有多种语言。对于计算机而言,这确实是一个小成就,但是仍然需要额外的工作。也许您最终将不得不使用相同的关键字来表示不同语言中的不同事物,或者术语太含糊而无法阅读。
  • (好的,固执己见的)当然,大多数不得不处理以不同语言编程和格式化的MS Office文档的人都会认为这个想法不值得。

如果我们能够以一种更结构化的方式使用代码,在一个实际上将代码理解为代码,语句,指令等的编辑器中,这将使我们能够做很多有趣的事情,那么我个人会很喜欢它。 ,甚至可以支持自动翻译。对于想知道我在想什么的人,请查看Smalltalk的图像和重构浏览器,并想象一下,如果它具有更大的吸引力,它会变成什么样。


3

如果您使用的语言在一个级别上通过“符号标签”定义,而在另一级别上使用“表面标签指示符”定义,并且它们之间定义良好,则肯定可以实现。

想象一下,你有你的语言ifwhile... doswitch并在标准中定义(在某种程度上)所有其他关键字,你可以在出货“标记化格式”系统库,写在非符号化的形式本地代码。然后,实际的编译器将在标记化层上工作,可能情况会很好。

但是,这还不是全部。您仍然最终会遇到这样的情况,即您从不是通过函数名进行接口的“标准库”的某个地方获得了库。而且这些语言之间没有规范的映射,或者需要翻译成一种本地语言才能很好地使用,或者最终在源代码中混杂了多种语言。


2

给出的所有答案都是很好的答案,但是我还是会给我两美分。

在计算美国和英国在技术,文化和经济上的统治地位之初,使使用英语单词创造出最成功的语言是合乎逻辑的。

后来,随着软件成为一个行业,它也成为了全球性的尝试。程序员的数量少于需要的数量已不是什么秘密,因此软件公司,以及像IBM这样的具有行业定义意义的公司,开始雇用来自世界各地的程序员:俄罗斯,巴基斯坦,印度,法国,德国,以色列等。大多数情况下,它们都是使用已经存在的全球成功的语言进行编程的,这些语言已经基于英语,并且还创建了新的语言,对于程序员的不同来源来说,已经存在的通用语言比其他任何一种语言都更好。

最近,开源和自由软件运动使软件的创建比以前更加全球化。一些开放软件项目,包括一些编程平台,语言和框架,是涉及数百名协作者的庞大项目。

以色列人将与斯里兰卡人一起使用哪种语言?他们很可能不会说话,甚至不会读对方的母语。所以英语来了。

不管喜欢与否,英语是全球努力的语言。不是因为美国在推动它,而是因为世界正在推动它。

释义Jay Walker

您的母语是您每天最常使用的一种语言,它将始终处于您的心脏和大脑的中心,但是使用英语,您将成为更广泛对话的一部分。

参见视频“英语狂热”

底线:

使用不同语言的编程语言将继续存在并且将继续被发明(例如基于图形标记的Scratch),但是至少在可预见的将来,这种语言将相对较少。


-2

英语也是一种“无重音”语言,您也不会遇到奇怪的字符,需要与ASCII不同的编码。我是意大利语,如果我使用意大利语键盘布局或带重音的字符(如àèéìòù),有时会遇到编码错误。此外,“ else”被翻译成“ altrimenti”,“ in”被翻译成“ dentro”……这会令人沮丧。


9
但是,这是循环推理-ASCII成为标准字符集,因为英语是计算的通用语言。
JacquesB '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.