这是我一直想知道的事情,我在网上任何地方都找不到它。当一家商店(比如日本)写代码时,我能用英文阅读吗?或者语言,如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”等字样和他们的母语“其他”?
编辑 - 是的,这很严重。我不知道语言的不同本地化是否有不同的关键字。或者如果甚至有不同的本地化。
答案 0 :(得分:157)
如果我理解的话,问题实际上是:“世界上每一位编码人员都知道足够的英语使用与我完全相同的保留字吗?”
嗯..英语不是这里的主题,而是编程语言的保留词。我的意思是,当我大约10年前开始时,我没有任何英语线索,而且我仍然可以通过学习编程语言编写简单的东西,即使我不知道它们是什么意思(用英语)。事实上,这有助于我学习英语。
例如。我知道做一个“iteración”(迭代当然)我不得不写:
for( i = 0 ; i < 100 ; i++ ) {}
给我“for”,“;”和“++”里面的简单外来词或符号。后来我才知道“for”的意思是“para”和“while”的意思是“mientras”等等,但同时我不需要知道英语,但在我的情况下,我需要的是知道“C”。
当然,当我需要学习更多东西时,我必须学习英语,因为文档是用那种语言编写的。
所以答案是:不,我不会用我的母语来看,等等。我用英语看到它们,但它们对我来说并不意味着它们对编程语言的反过来。
就像bash中的switch语句:case .. esac。什么是“esac”...对我来说,bash中switch语句的结束。
我猜这就是我们所谓的“抽象”
答案 1 :(得分:26)
我找不到参考资料,但我想起了三个故事。
Lisp黑客通过将它们与您的非母语编程进行比较来捍卫无意义的功能,如“cdr”和“car”: http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171.html
当Yukihiro Matsumoto(“Matz”)开始开发Ruby时,他使用英文关键字,即使他用日文编写了所有文档!。几年来Ruby没有英文文档,很少有美国人使用这种语言。但现在它是一种世界级的语言,它诞生于日本的事实只是历史的兴趣。如果该语言一直在平假名中使用关键词,那么它将更难以获得普及。
我曾经读过一篇文章 - 也许其他人可以找到它,谷歌今天没有帮助 - 这表明翻译关键词是错误的,因为这些词实际上不是英语 - 它们是行话。不仅(使用上面的例子) para 和 pour 不完全具有 for 在英语中对非程序员的确切含义短语“for loop”是乱七八糟的。甚至美国人也必须学习新的含义。因此,将词语的肤浅意义翻译成另一种语言更像是制作跨语言的双关语,而不是实际上有用。
答案 2 :(得分:26)
在Java语言中,由于JavaBeans约定,必须使用英语命名(至少部分)某些方法。
此约定要求通过一对getX()和setX()方法建立属性X.在法国 - 加拿大,一些开发人员必须使用法语编写代码,这会导致以下讽刺:
interface Foo {
Color getCouleur();
void setCouleur(Color couleur);
}
答案 3 :(得分:25)
我之前对日语编程真的没有太多考虑,但是我们继续使用问题的代码示例。
仅使用日语中的语言语句和英语变量:
// In Japanese, it makes more sense to put the keywords/modifiers as
// postfix expressions rather than prefix expressions.
(i < size)か {
(l[i])は {
1だ:
「もしもし。」を書く;
省略時値:
「いいえ、いいですよ。」を書く;
}
} ない {
「はい、ありがとうございます。」を書く;
}
答案 4 :(得分:13)
正如许多人已经指出的那样,在大多数编程语言中,你只需要学习一些关键词,所以如果它们是英语(或者不是你的语言)就没关系那么重要了。它只是与某些构造相关联的符号。例如,在VB中你有“那么”,在许多C风格的语言中都是“{”并且它在可读性方面没有太大的区别(好吧,至少我是这样看的,非英语以英语为母语者。)
但是,事情有时会变得多毛,而且(自然)语言的选择在于命名标识符。如果变量,函数,类等的名称由于语言障碍而没有有意义的名称,那么即使是最简单的代码也可能具有相当大的挑战性。
我记得有人曾经从一些博客中摘录了一小段Actionscript。这些名字是用德语写的,因为我不会说那种语言,所以东西也可以被称为var_123,var_562或func_333(也许我可能更容易记住这些名字或至少有一个名字在不复制和粘贴的情况下拼写正确的机会)。由于这是一个简短的,独立的片段,我使用在线翻译器以我的母语(西班牙语)为这些变量和函数提供有意义的名称,之后,一切都很清楚。关键是代码实际上很简单,但是当我克服语言障碍时,我只能在没有太多(不必要的)额外努力的情况下理解它。
从那以后,我转而使用英语来命名标识符。无论你喜欢与否,它都是编程,工程和一般技术的“koine”。大多数API都是用英文编写的,因此大多数文档都是用英文写的(也可能是你能找到的最好的资源)。作为一个好的方面,它使您的代码与您可能与之交互的代码更加一致,并且我认为它比其他语言(如西班牙语(这将是我的自然选择)更紧凑和简洁。) / p>
当然,如果你不能理解至少一些英语,问题仍然是一样的,所以这不是一个完美的解决方案。但是,鉴于来自许多不同国家的一些开发人员,很可能他们通过语言(通过代码,当然还有其他方式)进行沟通将是英语。因此,选择英语可能是最好的选择,即使它不是解决这个问题的完美解决方案。
答案 5 :(得分:10)
编程语言定义了关键字和标准类名,最佳做法是给用户定义的类型,变量和函数以及英文名称(作为非本地人,我可以告诉他们; - )。
所以是的,如果一切顺利,你将能够阅读代码。
然而,像Java和Perl这样的语言允许为标识符设置完整的Unicode集,所以如果有人在汉字中写下他的类名,你可能会遇到问题。
更新:对于Perl,有一个joke module允许你用拉丁语编写Perl。但它真的只是一个笑话。没有人认真对待这样的事情。
第二次更新:本地化编程语言的想法并不是那么荒谬。 Excel的宏语言是本地化的,但幸运的是它在文件中以一种规范语言(英语)存储,因此本地化只是正常事物之上的一层。这些东西只对小型“程序”有意义,对于“真正的”程序来说,它变得难以维护。
答案 6 :(得分:7)
实际上 某些Non-English-based programming languages(维基百科)
我是挪威语,但除了输出之外,我总是使用英语代替所有代码(忽略学校的一些愚蠢的代码)。实际上我通常用英语写一切,然后使用gettext(或其他东西)将翻译成我的母语。
答案 7 :(得分:6)
我是英国人,我们经常遇到的问题是美国/英国的拼写冲突。这通常发生在与编程相关的术语,如Initialise()或Initialize(),Analyze()或Analyze()等。这可能(有)导致尝试覆盖方法的问题,有时很难发现。
由于框架(在我们的例子中是C#)是由美国人设计的,我们发现最好是保持一致并使用美国拼写。我们甚至采用了Color。
我们的开发团队中有各种国籍,大多数非英国人自然倾向于美国拼写。
答案 8 :(得分:4)
我是一个在C#开发软件系统的法国团队。尽管编程语言关键字表面上是英文的,但我想你会很难阅读代码,因为所有的函数名,变量,代码注释,数据库表和列,技术规范,协议等等都在法语,包括那些可爱的重音字符ç,é,è,ù等。我甚至不确定系统是否因为本地化错误而在别处运行,例如依赖逗号作为默认的十进制分隔符。
否则,WinDev是法国流行的编程平台,其编程语言WLanguage具有法语或英语的关键字,请参见此示例:link text
答案 9 :(得分:4)
将此提升到一个新的水平,那么能够替代符号呢?
在看到像Brainf**k和Whitespace这样的语言后,我想要制作一个这样的语言:它与C相同,除非你使用右括号打开,打开括号关闭,交换含义+和 - ,*和/ ;;和:,&gt;和&lt;等等。
这个概念只不过是一个噱头改变的C编译器。但是,就像对关键词的思考方式不同一样,如果你以前从未想过这些事情,它会挑战你重新思考一些基本的假设。例如:
int foo)int i, char c( }
int six = 2 / 3:
int two = six + 4:
if )i > 0( }
printf)"i is negative"(:
{
{
答案 10 :(得分:4)
AppleScript曾经有法语和日语方言。我不知道为什么它被撤回了。
答案 11 :(得分:3)
在我参与的几个VBA项目中(是的,在我的职业生涯的早期),我们必须检测安装在用户机器上的办公室版本,并相应地更改speradsheets中使用的公式。
因为我用葡萄牙语编写程序“SUM”必须翻译成“SOMA”等等。我无法想象用几种语言实现这一目标的必要工作。还有其他人遇到过这个问题吗?
答案 12 :(得分:3)
我看到本地唯一的语言是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"
}
答案 13 :(得分:3)
我已经看到VBA被翻译成类似西班牙语的命令。这是有史以来最丑陋的事情之一。我会惭愧地在我的电脑上有这样的东西。
PD:我碰巧认为西班牙语比英语更好;但是翻译是错误的答案 14 :(得分:3)
不要取笑这个。几年前,微软已经宣布G#(德国夏普) - C#与德国关键词和API。当然,这是一个愚人节的笑话,但整个网站看起来如此真实和专业(并在microsoft.com上)。吓人。
在工作中,我们使用两个现场总线系统,这两个系统都是在德语国家开发的,这些系统在标识符方面有可怕的德语和英语混合,包括一些可爱的虚假朋友。这是一团糟。
不,英文关键字和标识符都可以。虽然有些人可能会说它应该是颜色还是颜色:)
答案 15 :(得分:3)
嗯,正如其他人指出的那样,关键字和系统调用可能仍然是英文版。
然而,理解语言的关键词只是理解代码的一小部分。变量名称,函数名称和注释都存在于作者的本地语言中。
编辑:我刚刚回到我的青年时代,我进入了TRS-80内置BASIC的映射表,将关键字切换为法语。我可以更改所有关键字,但我无法将其中任何一个更大。为有趣的节目。
答案 16 :(得分:3)
有些语言已翻译过关键字。例如,Excel公式。如果您在电子表格中编写一些计算,则这将使用您的语言。
幸运的是,这不是一般的做法,即使像我这样的非英语人士也感谢上帝,关键字有一种标准语言:
在哪里停下来?你能想象古希腊语中的C吗?
关键词必须保持一种语言,而且,它始于英语,让它保持这种状态。这可能是最糟糕的(亚洲语言?)。所以我们必须用英语写出方法和评论。好的,对我们来说还有更多的工作,但至少国际代码库保持一致。
然而,有一种情况是使用母语方法名称和评论可能是一种很好的做法:在第三世界国家。几个月后我要去塞内加尔管理一个Django项目。塞内加尔具有巨大的分析率,因此,他们在提高编程知识方面的精力已经很大了。法语是这里的母语,所以强迫他们同时学习计算和新的语言是低效的。
BTW,这将是您的法语关键字代码:
Si (i < taille) {
cas par cas :
cas 1:
afficher "salut"
défaut:
afficher "non merci"
} sinon {
afficher "oui, merci"
}
翻译关键字与翻译字符串无关。当然,我们用我们的语言翻译“hi,there”。欧洲程序员甚至比美国人更倾向于使用I18N,他们的服务可以覆盖更广泛的受众。
答案 17 :(得分:2)
在澳大利亚,我们仍然需要拼写颜色,例如颜色。 然而,当我在澳大利亚项目上工作的其他(澳大利亚)开发人员决定内部变量名称需要以美国方式拼写时,我觉得很烦人。
答案 18 :(得分:2)
关于Perl,你的问题很有意思,因为它的语法设计遵循(英语)自然语言。我想知道这是否会让非英语人士更难......
当然,Perl和Perlers拒绝遵守传统规则。疯狂科学家Damian Conway编写了Lingua::Romana::Perligata模块,该模块使用了源滤镜的黑魔法,允许你用拉丁语编写Perl!
答案 19 :(得分:2)
当我还是个孩子的时候,我们去了法国,在我们去过的博物馆里,我记得找到一个显示器,告诉你如何编写计算机程序。该语言是某种BASIC变体,我清楚地记得它使用POUR而不是FOR,依此类推。我7岁,刚刚学过BASIC,我觉得法国人有这样的方言,这对我来说似乎很自然!!
我想我可能已经LSE了?
答案 20 :(得分:2)
Filemaker的脚本语言已本地化。脚本(和数据!)以可怕的“sorta规范”形式存储。
因此,如果您使用美国版本编写脚本,然后在法语版本中打开它,所有关键字和内置函数名称都将使用法语。但为什么它不会运行?!啊哈!法语版使用“,”作为小数点,因此避免歧义使用“;”分隔函数参数 - 美国版本使用“。”和“,”分别。这种转换你必须自己做。
所以你通过令人难以置信的糟糕的脚本编辑界面(你不能把脚本写成文本文件)来解决所有这些问题。它运行!大!结果都错了!不好了!啊哈!您在美国版本中输入的Jan-7-2004日期将被解释为July-1-2004 - 显然日期不仅以区域设置相关的顺序显示,而且存储。 我在开玩笑吗?否。
[注意:Filemaker 8和9可能是理智的 - 我只使用过3-7。]
答案 21 :(得分:2)
一般来说,大多数程序员都适应英语形式。 我在7岁的时候学会了编程,只讲了希伯来语(从右到左),没有英语,这使得它成为一种非常迷人的体验。
您通常会遇到的问题是文档,变量和函数名称。我用其他语言看过我使用英文字母的变量。
我熟悉的唯一一种实际翻译的语言是好的旧Logo(至今仍然令人惊叹)。
答案 22 :(得分:1)
我阅读了很多代码,但问题始终是变量/方法名称和注释,如果他们使用日语或西里尔语这样的语言特殊字符在他们自己的语言上评论他们的代码,我们就麻烦了!但关键字我认为它们会保留英文。
答案 23 :(得分:1)
对于i18n语言语法来说,毫无意义。它会破坏任何可移植性。
唯一的例外是教育语言,例如LOGO。它们的设计便于学习,因此便携性不是问题。
答案 24 :(得分:1)
in Italian
se (i < dimensione){
scegli
caso 1:
stampa "ciao"
mancante:
stampa "no, grazie"
} altrimenti {
stampa "sì, grazie"
}
为了确认之前某些海报的后顾之忧,我看到一个带有宏的Fortran代码包括将所有关键词从英语翻译成法语。请允许我不要继续这样做。
我还必须使用包含意大利语,德语,英语和法语标识符的代码,不仅因为它是在许多不同的地方开发的,还因为主开发人员认为它很有趣并且帮助他不复制标识符名称(当然,常规的2000行......)
答案 25 :(得分:0)
我认为WordBasic是本地化的。在使用VBA之前,WordBasic用于在Word中编写宏。
如果我没记错,只有英文版的WordBasic才能在所有本地化版本上执行。如果您要编写荷兰语版本,则只能在荷兰语单词上执行。