这是我一直想知道的事情,我在网上任何地方都找不到它.当一家商店(比如日本)写代码时,我能用英文阅读吗?或者语言,如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"和" "用他们的母语?
编辑 - 是的,这很严重.我不知道语言的不同本地化是否有不同的关键字.或者如果甚至有不同的本地化.
如果我理解的话,问题实际上就是:"世界上每一位编码人员都知道足够的英语能够使用与我完全相同的保留字吗?"
嗯..英语不是这里的主题,而是编程语言的保留词.我的意思是,当我大约10年前开始时,我没有任何英语线索,而且我仍然可以通过学习编程语言来编写简单的东西,即使我不知道它们是什么意思(用英语).事实上,这有助于我学习英语.
例如.我知道做一个"iteración"(迭代当然)我必须写:
for( i = 0 ; i < 100 ; i++ ) {}
给我"为",";" 和"++"里面的简单外来词或符号.后来我才知道"for"的意思是"para"和"while"的意思是"mientras"等等,但同时我不需要知道英语,但在我的情况下,我需要的是知道"C".
当然,当我需要学习更多东西时,我必须学习英语,因为文档是用那种语言编写的.
所以答案是:不,我不会用我的母语来看,等等.我用英语看到它们,但它们对我来说并不意味着它们对编程语言的反过来.
就像bash中的switch语句:case .. esac.什么是"esac"...对我来说bash中switch语句的结束.
我猜这就是我们所谓的"抽象"
在Java语言中,由于JavaBeans约定,必须使用英语语言(至少部分地)命名一些方法.
此约定要求通过一对getX()和setX()方法建立属性X. 在法国 - 加拿大,一些开发人员必须使用法语进行编码,这导致以下讽刺:
interface Foo { Color getCouleur(); void setCouleur(Color couleur); }
我找不到参考资料,但我想起了三个故事.
Lisp黑客通过将它们与您的非母语编程进行比较来捍卫无意义的功能,如"cdr"和"car":http: //people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg01171. HTML
当Yukihiro Matsumoto("Matz")开始开发Ruby时,他使用英语关键词,即使他用日语编写所有文档!.几年来Ruby没有英文文档,很少有美国人使用这种语言.但现在它是一种世界级的语言,它诞生于日本的事实只是历史的兴趣.如果该语言一直在平假名中使用关键词,那么它将更难以获得普及.
我曾经读过一篇文章 - 也许其他人可以找到它,谷歌今天没有帮助 - 这表明翻译关键词是错误的,因为这些词实际上并不是英语 - 它们是行话.不仅(使用上面的例子)para和pour不完全具有英语中的确切含义,对于非程序员来说,"for loop"这个短语是乱七八糟的.甚至美国人也必须学习新的含义.因此,将词语的肤浅意义翻译成另一种语言更像是制作跨语言的双关语,而不是实际上有用.
我之前对日语编程真的没有太多考虑,但是在这里,我们使用问题的代码示例.
仅使用日语中的语言语句和英语变量:
// In Japanese, it makes more sense to put the keywords/modifiers as // postfix expressions rather than prefix expressions. (i < size)? { (l[i])? { 1?: ??????????; ????: ???????????????; } } ?? { ???????????????????; }
正如许多人已经指出的那样,在大多数编程语言中,你只需要学习一些关键词,所以如果它们是英语(或者不是你的语言,那就没那么重要).它只是与某些构造相关联的符号.例如,在VB中你有"那么",在许多C风格的语言中都是"{"并且它在可读性方面没有太大的区别(好吧,至少我是这样看的,非英语母语人士).
但是,事情有时会变得多毛,而(自然)语言的选择在于命名标识符.如果变量,函数,类等的名称因语言障碍而没有有意义的名称,那么即使是最简单的代码也可能具有相当大的挑战性.
我记得有人曾经从一些博客中摘录了一小段Actionscript.这些名字是用德语写的,因为我不会说那种语言,所以东西也可以被称为var_123,var_562或func_333(也许我可能更容易记住这些名字或至少有一个名字在不复制和粘贴的情况下拼写正确的机会).由于这是一个简短的,独立的片段,我使用在线翻译器以我的母语(西班牙语)为这些变量和函数提供有意义的名称,之后,一切都很清楚.重点是代码实际上很简单,但是当我克服语言障碍时,我只能在没有太多(不必要的)额外努力的情况下理解它.
从那以后,我转而使用英语来命名标识符.无论你喜欢与否,它都是编程,工程和一般技术的"koine".大多数API都是用英语编写的,因此大多数文档都是用英语编写的(也许最好的资源也是英文版).作为一个好的方面,它可以使您的代码与您可能要与之交互的代码更加一致,而且我认为它比其他语言(如西班牙语(这将是我的自然选择)更紧凑和简洁).
当然,如果你不能理解至少一些英语,问题仍然是一样的,所以这不是一个完美的解决方案.但是,鉴于来自许多不同国家的一些开发人员,很可能他们的通用语言(通过代码,当然还有其他方式)将是英语.因此,选择英语也许是最好的选择,即使它不是解决这个问题的完美方案.
编程语言定义了关键字和标准类名,最佳做法是给用户定义的类型,变量和函数以及英文名称(作为非本地人,我可以告诉;-).
所以是的,如果一切顺利,你将能够阅读代码.
但是,像Java和Perl这样的语言允许为标识符设置完整的Unicode集,所以如果有人在汉字中写下他的类名,你可能会遇到问题.
更新:对于Perl,有一个笑话模块,允许您用拉丁语编写Perl.但它真的只是一个笑话.没有人认真对待这样的事情.
第二次更新:本地化编程语言的想法并不是那么荒谬.Excel的宏语言是本地化的,但幸运的是它在文件中以一种规范语言(英语)存储,因此本地化只是正常事物之上的一层.这些东西只对小型"程序"有意义,对于"真正的"程序来说,它变得难以维护.
其实有是一些基于非英语的编程语言(维基百科)
我是挪威语,但我总是使用英语为除输出之外的所有代码(忽略学校的一些愚蠢的代码).实际上我通常用英语写一切,然后使用gettext(或其他东西)将其翻译成我的母语.
我是英国人,我们经常遇到的问题是美国/英国的拼写冲突.这通常发生在编程相关的术语,如Initialise()或Initialize(),Analyze()或Analyze()等.这可能(有)导致尝试覆盖方法的问题,有时很难发现.
由于框架(在我们的例子中是C#)是由美国人设计的,我们发现最好是保持一致并使用美国拼写.我们甚至采用Color.
我们的开发团队中有各种国籍,大多数非英国人自然倾向于美国拼写.