其他(口语)语言编码


105

这是我一直想知道的事情,在网上任何地方都找不到任何提及。比如说日本的一家商店写代码,我能用英语阅读吗?还是诸如C,PHP之类的语言都编写了日语翻译?

我想我要问的是,世界上每个程序员都知道足够的英语来使用与我完全相同的保留字吗?

该代码是否会:

If (i < size){
    switch
        case 1:
            print "hi there"
        default:
            print "no, thank you"
} else {
    print "yes, thank you"
}

显示与我现在所看到的完全相同的英文版本,或者其他不懂英语的人看到“ if”,“ switch”,“ case”,“ default”,“ print”和“其他”以他们的母语?

编辑-是的,这很严重。我不知道一种语言的不同本地化是否具有不同的关键字。甚至根本没有不同的地区。


3
必然的问题:是否有主流语言的关键字不是英语(即使该语言最初是在英语不是母语的地方发明的)?
乔恩·施耐德

这个问题使我想起了我曾经与(外国人)进行的一次对话,他认为上帝的主要语言是英语,因此其他人应该学习它,以便他们的祈祷能够被理解。(尽管如此,我并不意味着无礼,有趣的问题)
wallyqs

我以为上帝是万能的!
Autodidact

上帝只懂一种语言。这是一个现已灭绝的美索不达米亚村庄的晦涩方言。这就是为什么他不回答您的祷告,以及为什么坏事发生在好人身上(他变得如此困惑)。
安东尼

1
哦,现在我已经阅读了一些答案...好问题。我一直以为会有本地化的计算机代码版本,但是考虑一下,某些约定将是实现的噩梦(从右到左或垂直方向),而另一些则很难适应(特别是:行)在PHP中以分号结尾。这是基于西方习惯,以分号结尾完整子句。想像一下,试图本地化标点符号习惯。
安东尼

Answers:


159

如果我理解得很好,那么问题实际上是:“世界上每个程序员都知道足够的英语来使用与我完全相同的保留字吗?”

嗯..英语不是这里的主题,而是编程语言保留的单词。我的意思是,大约10年前开始学习时,我没有英语的头绪,即使我不知道它们的含义(英语),我仍然能够通过学习编程语言来编写简单的东西。事实上,这有助于我学习英语。

例如。我知道要写一个“iteración”(当然是迭代的):

 for( i = 0 ; i < 100 ; i++ ) {}

对我来说,“为”,“;” 和“ ++”表示简单的外来单词或符号。后来,我了解到“ for”的意思是“ para”,而“ while”的意思是“ mientras”等,但是与此同时,我不需要英语,但我需要的是了解“ C”。

当然,当我需要学习更多东西时,我必须学习英语,因为文档是用该语言编写的。

因此,答案是:不,我不知道是否,是否会等着我的母语。我看到它们是英文的,但是它们对我来说并不意味着它们反过来对编程语言意味着什么。

就像bash中的switch语句:case .. esac。什么是“ esac” ...对我来说,bash中switch语句的结尾。

我猜这就是我们所谓的“抽象”


10
顺便说一句,“ esac”只是倒写。我无法告诉您您是否假装不愿提出观点,但是我可以看到,这对于不懂英语的演讲者会造成混淆。
pbh101

9
可以肯定的是,就像fi一样,但是在某些时候,它们的唯一含义是“您通过写'esac'来结束switch语句” ...是不是它们令人困惑或没有困惑,但这并不意味着用英语的任何东西。但是它们在C或bash或pascal中有含义。这才是重点。我们学习编程语言。
OscarRyz

5
请注意,在Excel中,该宏是用本地语言翻译的,而“ if”在法语中是“ si”,这使得这些工具绝对无法使用。
e-satis

9
您总是会从非英语母语人士那里得到最佳答案。我是苏格兰人,我也很难学英语;-)
戴维

9
+1开始编程时,我什至不知道如何正确发音goto。但是后来,当我了解到它的含义时,它在我脸上露出了笑容。
Hamish Grubijan 2010年

28

在Java语言中,由于JavaBeans约定,某些方法必须(至少部分)使用英语命名。

此约定要求通过一对getX()和setX()方法建立属性X。在加拿大法语区中,一些开发人员不得不使用法语进行编码,这导致了以下麻烦:

interface Foo {

  Color getCouleur();

  void setCouleur(Color couleur);
}

9
哦,可丽饼!官僚主义又赢了!:(
AR。08年

3
是的,在法国的学校里,他们教你那样做。真是太烂了,以至于学生们从不使用他们在课堂上所做的事情来编写现实世界中的代码,而是靠自己独自学习用简单的英语编写。
e-satis

在我的大学里,有些讲师在示例代码中使用了芬兰语,即使我理解他们这样做的原则性原因,结果通常也更加尴尬。幸运的是,(至少在私营部门中)闻所未闻的“在现实世界中”。英文FTW(就编程而言)。
约尼克,

2
@Jonik:至少您不必争论ASCII /扩展字符集。在一些地方(在这里),曾经有一个大辩论命名你的英语中的b)在捷克标识符)没有口音,C)在捷克与口音(其中大部分你不能没有捷克键盘类型,对于其他任何人的可维护性来说都很棒)。
Piskvor于

@Piskvor,实际上,如果您确实使用芬兰名称,则在使用特殊字符(äöå)或将其替换为&o时也存在类似的难题(如果您使用特殊字符,则可能会遇到字符集问题)。但是,是的,幸运的是我至少有7年没有使用芬兰语的代码了。:)
约尼克(Jonik)2010年

27

我在查找参考文献时遇到麻烦,但想起了三个故事。

Lisp黑客通过将无意义的功能(例如“ cdr”和“ car”)与使用您的非母语进行的编程进行比较来捍卫这些功能:http//people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171。 html

当松本行弘(“ Matz”)开始开发Ruby时,即使他用日语编写了所有文档,他也使用了英语关键字。几年来没有Ruby的英文文档,很少有美国人使用Ruby。但是现在它已成为世界一流的语言,它在日本出生的事实仅具有历史意义。如果该语言在平假名中使用了关键字,那么要获得普及将要困难得多。

我读过一篇文章-也许有人可以找到它,今天Google帮不上忙-这表明翻译关键字被误导,因为这些单词实际上不是英语-它们是行话。(使用上面的示例)parapour不仅不具有for的确切含义,对于非程序员来说,短语“ for loop”简直是废话。甚至美国人也必须学习新的含义。因此,将单词的肤浅含义翻译成另一种语言更像是在进行跨语言的双关语,而不是实际上有所帮助。


25

以前,我真的没有对日语编程进行过多考虑,但是现在开始使用问题的代码示例。

仅将日语语言声明与英语变量一起使用:

// In Japanese, it makes more sense to put the keywords/modifiers as
// postfix expressions rather than prefix expressions.
(i < size)か {
     (l[i])は {
     1だ:
         「もしもし。」を書く;
     省略時値:
         「いいえ、いいですよ。」を書く;
     }
} ない {
     「はい、ありがとうございます。」を書く;
}

=(D
–JoséLeal

1
其实我在想,如果您能够用日语编码,则可以使用→定问上下不这样的词作为特殊词,您能想象日语中的一口气吗?(定背木(→(lat)(问((空?lat)(引用())))(又...
wallyqs

1
如果要用后缀编写,也可以将其设为Forth方言,ね?:-)

会编译吗?:\
NoobEditor

13

正如许多人已经指出的那样,在大多数编程语言中,您只需要学习一些关键字,因此,如果它们是英语(就此而言,不是您自己的语言),则无所谓。这只是您与某些构造相关联的符号。例如,在VB中,您具有“ THEN”,在许多C风格的语言中,它都将是“ {”,并且在可读性上并没有太大的区别(嗯,至少我是这样认为的,因为它是非英语的以母语为母语的人)。

但是,有时候事情会变得繁琐,而(自然)语言选择的重要性在于标识符的命名。如果由于语言障碍,变量,函数,类等的名称对您来说没有一个有意义的名称,那么即使是最简单的代码也可能具有挑战性。

我记得有人曾经给我摘录过一些博客中的Actionscript片段。这些名字是用德语写的,因为我不会说这种语言,所以也可以将它们称为var_123,var_562或func_333(也许我更容易记住名字或至少有一个名字)。无需复制和粘贴即可正确拼写它们的机会)。由于这是一个简短的,自成体系的代码段,因此我使用了在线翻译程序,用我的母语(西班牙语)为这些var和函数赋予了有意义的名称,然后,一切都变得很清楚了。关键是代码实际上很简单,但是只有克服了语言障碍,我才能够在没有太多(不必要的)额外精力的情况下理解它。

从那时起,我开始使用英语来命名标识符。无论您是否喜欢,它都是编程,工程和一般技术资料的“ koine”。大多数API用英语编写,因此大多数文档也是用英语编写的(可能找到的最佳资源也是英语)。顺便说一句,它使您的代码与您可能要与之交互的代码更加一致,并且我认为它比诸如西班牙语(否则这是我的自然选择)之类的其他语言更紧凑和简洁。

当然,如果您至少听不懂一些英语,问题仍然存在,因此这不是一个完美的解决方案。但是,考虑到来自许多不同国家的许多开发人员,他们交流(通过代码,当然还有其他方式)进行交流的通用语言可能是英语。因此,选择英语也许是最好的选择,即使这不是解决此问题的完美解决方案。


是的 一个较小的问题是,当编码器无法正确编写英文vars名称时。我见过的最糟糕的情况是“ String employeeiNeim” hehe(不,只是在开玩笑),但我以前见过的情况真的很接近。
OscarRyz

对于非英语母语的人,您对语言的掌握令人惊讶。恭喜,即使对于以英语为母语的人,英语也是非常奇怪的野兽。
尼古拉斯·弗林特

10

编程语言定义了关键字和标准类名称,并且最佳实践是为用户定义的类型,变量和函数提供英文名称(作为非母语使用者,我可以说;-)。

是的,如果一切顺利,您将能够阅读代码。

但是,诸如Java和Perl之类的语言允许为标识符设置完整的Unicode集,因此,如果有人用日文汉字写出他的类名,则可能会遇到问题。

更新:对于Perl,有一个玩笑模块,可让您用拉丁语编写Perl。但这只是一个笑话。没有人认真使用这样的东西。

第二次更新:本地化编程语言的想法并不是那么荒谬。Excel的宏语言已本地化,但是幸运的是,它以一种规范语言(英语)存储在文件中,因此本地化只是普通事物之上的一层。这些事情仅对小型“程序”有意义,而对于“实际”程序则很难维护。


7

实际上,一些基于非英语的编程语言(维基百科)

我是挪威人,但我一直都将英语用于除输出以外的所有代码(忽略学校的一些愚蠢代码)。实际上,我通常会用英语编写所有内容,然后使用gettext(或其他东西)翻译成我的母语。


6

我是英国人,我们经常遇到的一个问题是美国/英国的拼写冲突。这通常在与编程相关的术语(例如Initialize()或Initialize(),Analyse()或Analyze()等)中发生。这可能会(导致)尝试覆盖方法的问题,有时很难发现。

由于该框架(在我们的情况下为C#)是美国人设计的,因此我们发现最好保持一致并使用美国人的拼写。我们甚至采用颜色。

我们的开发团队拥有不同国籍的人,大多数非英国人自然倾向于美国的拼写。


4

AppleScript曾经有法文和日文方言版本。我不知道为什么将其撤回。


可能是因为在Internet时代很难共享代码... VBA也已翻译。馊主意。
PhiLho

4

将其带入一个新的高度,如何替换符号呢?

看到Brainf ** kWhitespace之类的语言之后,我想到了制作这样的语言:它与C相同,只不过您使用了右括号来打开,右括号来关闭,交换+和-,*和/的含义。 ,; 和:,>和<等

这个概念只不过是一个花哨的修改过的C编译器。但是,就像以不同的方式思考关键字一样,如果您以前从未想到过这样的事情,那么挑战您就要重新考虑一些基本的假设。例如:

int foo)int i, char c( }
    int six = 2 / 3:
    int two = six + 4:
    if )i > 0( }
        printf)"i is negative"(:
    {
{

2
嘿,我喜欢那个笑脸。
aib

4

我在一个法国团队中,用C#开发软件系统。尽管编程语言的关键字表面上是英语,但我想您会很难读懂代码,因为所有函数名,变量,代码注释,数据库表和列,技术规范,协议等都在其中。法语,包括那些可爱的重音符号ç,é,è,ù等。由于本地化错误(例如依赖逗号作为默认的十进制分隔符),我什至不确定系统是否还能在其他地方运行。

否则,WinDev是法国流行的编程平台,其编程语言WLanguage具有法语或英语的关键字,请参见此处的示例:链接文本


resharper将捕获任何特定于语言环境的废话:)使用1个月的测试来清理您的代码库。
v.oddou

4

我看到的唯一本地化的语言是带有宏的Excel。如果尝试使用意大利语版本的Office对列进行求和,则必须编写SOMMA(A1:A10)而不是SUM。真可惜

顺便说一句,只是因为它很有趣,这就是带有意大利语关键字的代码的外观:

se (i < size){
    commuta
        caso 1:
            stampa "hi there"
        normalmente:
            stampa "no, thank you"
} altrimenti {
    stampa "yes, thank you"
}

3

我看过VBA转换成西班牙式命令。这是有史以来最丑的事情之一。我很as愧在我的计算机上有这样的东西。

PD:我碰巧认为西班牙语是一种比英语更好的语言。但是翻译是错误的


我不知道新的ms-office版本是否仍然存在,但是较旧的ms-office无法执行为其他本地化编写的脚本。
EricSchaefer

1
英语比西班牙语“更好” 的唯一方法是英语具有更大的词汇量,因此写作的时间要短一些。西班牙语更加合乎逻辑!
Chip Uni

西班牙语(与大多数语言一样)的词汇量比英语大得多;但是英语使发明新词变得容易,并且仍然易于理解。这使得它非常简洁,并且在技术问题上易于使用。此外,英语更是必不可少的,并且倾向于使用简单的句子(如果有的话,以避免歧义),也许这会使它对于过程编程更加“自然”。还要注意,我永远不会说英语比任何其他语言都“好”。但是BASIC是基于英语的,翻译它会导致混乱。
哈维尔

“西班牙语(和大多数语言一样)的词汇量比英语大得多”:并非如此。众所周知,英语比任何其他语言拥有更多的单词,大约250,000与西班牙的100,000相比
Luigi Plinge 2011年

这里的教训之一纯粹是商业性的。您无法维持对本地化语言的支持,因为VBE编程社区在世界范围内可能少于1000个人。微软在1990年代做到了这一点,然后迅速收回。一些课程可以延续到更大的社区,例如西班牙语。一方面,您无法与没有相同本地化版本语言的人共享脚本。
2012年

3

好吧,正如其他人指出的那样,关键字和系统调用可能会保留为英文。

但是,了解语言的关键字只是了解代码的一小部分。变量名,函数名和注释都可能使用作者的母语。

编辑:我刚刚回到我的青年时代,我去了TRS-80内置BASIC的映射表,将关键字切换为法语。我可以更改所有关键字,但不能将其中任何一个都变大。专为有趣的程序而设计。


确实。“我们将使用[插入本地语言]进行从变量名到注释的所有操作-这只是一个微型应用程序,谁会对其进行更改?” 几年后,在其他地方:“是的,有评论。如果我只知道'// Meg tudom enni azüveget,nemártnekem'的意思是...”(为强调而更改了语言)
Piskvor于

我记得在大学里有人去过DOS并将某些命令和消息更改为淫秽,但仍然有效
JoelFan 2010年

3

不要开玩笑 几年前,微软发布了带有德语关键字和API的G#(德语为Sharp)。当然,这是愚人节的笑话,但是有关此内容的整个网站看起来是如此真实和专业(并且在microsoft.com上)。害怕。

在工作中,我们使用了两种现场总线系统,这两种系统都是在德语国家开发的,这些系统的德语和英语混合使用令人恐惧的标识符,其中包括一些可爱的虚假朋友。一团糟。

否,英文关键字和标识符很好。尽管有些人可能会争论是应该使用Color还是Color :)


3

在我从事的多个VBA项目中(是的,在我职业生涯的早期),我们必须检测安装在用户计算机上的Office版本,并相应地更改单张纸中使用的公式。

当我用葡萄牙语编程时,“ SUM”将必须翻译为“ SOMA”,依此类推。我只是无法想象以多种语言实现这一目标所必需的工作。还有其他人遭受过这个问题吗?


3

有些语言已经翻译了关键字。例如,Excel公式。如果您在电子表格中编写一些计算,则将使用您的语言。

幸运的是,这不是一种普遍的做法,甚至像我这样的非英语使用者也感谢上帝,其中有一种标准的关键字语言:

  • 分享您的工作更容易。
  • 它可以防止文档成为一个更大的噩梦。
  • 英语单词和句子通常简短,语法上很实用。在文学中,拉丁语言要漂亮得多,但是对于技术性事物来说,英语是岩石。

在哪里停下来?您能想象古希腊语中的C吗?

关键字必须保持一种语言,而且,它以英语开头,让它保持这种状态。这可能是最糟糕的(亚洲语言?)。因此,我们必须用英语编写方法和注释。好的,我们需要做更多的工作,但是至少国际代码基础保持一致。

但是,在一种情况下,使用母语方法的名称和注释可能是一种好习惯:在第三世界国家/地区。我将在几个月内去塞内加尔管理Django项目。塞内加尔的合成化率很高,因此,他们在提高编程知识方面投入了很多精力,这已经非常棒了。法语是这里的母语,因此强迫他们同时学习计算和新舌头将是无效的。

顺便说一句,那将是您的代码与法语关键字:

Si (i < taille) {
    cas par cas :
        cas 1:
            afficher "salut"
        défaut:
            afficher "non merci"
} sinon {
    afficher "oui, merci"
}

并非翻译关键字与翻译字符串无关。当然,我们已经用我们的语言翻译了“ hi,there”。欧洲编码员甚至更倾向于使用I18N,而美国编码员则可以更广泛地使用I18N。


2

一般来说,大多数程序员都适应英语形式。我7岁那年学习编程,只说希伯来语(从右到左),并且没有英语,这使他成为了一个非常有趣的经历。

通常,您会遇到的问题是文档,变量和函数名称。我已经看到了使用英语字母的其他语言变量的份额。

我所熟悉的唯一实际翻译的语言是好的旧徽标(到今天仍然很棒)。


Shalom Uri,Sourceforge上还有希伯来语编程语言(HPL)。与LOGO一样,它是针对年轻的计算机用户的。
TonJ

2

当我还是个孩子的时候,我们去了法国,然后去了一个博物馆,我记得当时找到了一个显示器,向您展示了如何编写计算机程序。该语言是某种BASIC变体,我清楚地记得使用POUR而不是FOR等等。我7岁那年,才刚学过BASIC,对我来说,法国人会有自己的方言是完全自然的!

我想可能是我看到的是伦敦证交所(LSE)


2

Filemaker的脚本语言已本地化。脚本(和数据!)以可怕的“排序规范”形式存储。

因此,如果您以美式版本编写脚本,然后以法语版本打开脚本,则所有关键字和内置函数名称都将以法语显示。但是为什么不运行呢?啊哈!法语版本使用“,”作为小数点,因此为了避免歧义,请使用“;” 分隔函数参数-美式版本使用“。” 和“,”。这种转换必须自己做。

因此,您将通过极其糟糕的脚本编辑界面(无法将脚本编写为文本文件)来解决所有这些问题。它运行!大!结果全错了!不好了!啊哈!您在美国版本进入扬7-2004日期被解释为七月-1-2004 -显然日期不仅表现,但存储在区域设置相关的命令。 我在开玩笑吗?没有。

[注意:Filemaker 8和9可能是理智的-我只曾用过3-7。


哎哟! 喜欢你的声音应该张贴这thedailywtf.com
安德烈·

2

关于Perl,您的问题很有趣,因为它的语法旨在遵循(英语)自然语言。我想知道这是否会使非英语使用者更加困难...

当然,Perl和Perlers拒绝遵守常规规则。疯狂的科学家Damian Conway编写了Lingua :: Romana :: Perligata模块,该模块使用源过滤器的黑魔法,使您可以用拉丁语编写Perl!


我不这么认为。调查的结果是,即使您会英语,也无法对Perl说出while(cond)jump_to:label...。我的意思是,像goto之类的东西。
OscarRyz

作为讲德语的人,大多数perl的“自然语言类似”习惯用法(例如“ open()或die()”)对我来说都是很自然的。我猜英语和德语足够相似
bjelli

2

在澳大利亚,我们仍然需要像拼一样拼写颜色。但是,当其他(澳大利亚)开发人员在从事澳大利亚项目时,决定内部变量名称需要用美式拼写时,我确实感到很烦。


1

恕我直言,对一种语言语法而言,这毫无意义。这只会扼杀任何形式的可移植性。

唯一的例外是教育语言,例如LOGO。它们是为易于学习而设计的,因此可移植性不是问题。


1
当您的受众群体较大时,例如在Excel中写下公式或对其演示文稿产生小的影响的人,您必须考虑对“保留”字词实施i18n ...
rshimoda

1

我读了很多代码,但是问题始终出在变量/方法的名称和注释上,如果他们使用自己的语言注释代码,使用日语或西里尔字母等特殊语言,我们就麻烦了!但我认为这些关键字将保持英文原样。


1

用意大利语

se (i < dimensione){
    scegli
        caso 1:
            stampa "ciao"
        mancante:
            stampa "no, grazie"
} altrimenti {
    stampa "sì, grazie"
}

为了证实以前发布者的担心,我看过一个带宏的Fortran代码,其中包括将所有关键字从英语翻译为法语的功能。请允许我不要继续这样做。

我还必须使用同时包含意大利语,德语,英语和法语的标识符的代码,这不仅是因为它是在许多不同的地方开发的,而且还因为主要开发人员认为它很有趣,并帮助他避免了重复标识符名称(当然,常规行长为2000行。...)


0

我认为WordBasic已本地化。在使用VBA之前,使用WordBasic在Word中编写for的宏。

如果我没记错的话,只有英语版本的WordBasic才能在所有本地化版本上执行。如果要编写荷兰语版本,则只能在荷兰语单词上执行它。

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.