编程语言如何受益于基于英语?[关闭]


14

我认为,当今世界使用基于英语的编程语言进行编程,不仅是因为历史/经济情况,而且还因为英语形态尤其具有某些最适合算法思维的特性。但是无论如何,听到您对此的看法会很有趣,特别是如果您自己会说多种语言。

我已经提到过一些基于德语的语言(例如,请参阅Plankalkul,事实上,由于第二次世界大战,我们对第一门编程语言了解甚少),这也是一种基于俄罗斯的Algol风格,其历史可追溯至80年代至少在纸上,不确定它是否曾经以二进制形式存在。两者看起来都比较呆滞,因为与基于EN的语言相比,完整单词的缩写和怪异缩写要多。因此,如果您知道任何其他基于国家语言的PL,即使今天完全是过时的和无关紧要的,无论是理论上的还是其他方面的知识,对它们进行查看都会很有趣。

回到主要问题:那么,使莎士比亚的语言如此出色地进行编程的是什么(如果有的话)?

(实际上在Wikipedia上有一个基于非英语的编程语言列表(当然,还有其他地方吗?),但是听到那些母语的人对给定的“国家”编程语言的真实感受会很有趣。喜欢。)


3
@迈克尔:他说“我认为”。他表达了自己的看法。您可能会问他是如何得出这一意见的,但我认为他不需要引用消息来源。我们可以相信他,如果他说这是他的意见,那是他的意见。此外,他没有说没有历史或经济情况,只是他认为这些不是唯一因素,并且他对讨论其他因素更感兴趣。
HedgeMage 2010年

1
@Michael:您说的“计算机主要是在英语国家发明和建立的”,这是历史/经济情况。例如,我们可以引发19世纪英国的工业革命(实际上是整个帝国),或者在第二次世界大战期间/之后向美国“引流”,或者在第二次世界大战期间美国损失最少工业国家等
mojuba

3
无论哪种语言,在语法上都应不分性别。
JeffO 2010年

1
@Jeff O:绝对,不仅性别。基本上,所有动词都应该保持中立,因为否则,您最终会以“ while ... do ...”中的“ do”以确切的形式(时态,性别等)思考。与许多其他欧洲语言相比,英语中的动词形态是如此轻松,以至于我认为,这尤其使英语对编程如此好。
mojuba

2
我们可能还会问为什么在我们使用意大利语时会提供音乐的关键字。那里可能会有一些见解。
David Thornley,2010年

Answers:


17

免责声明:我的母语是德语。

我认为没有任何理由比其他自然语言更好地使用英语作为关键词。我确实认为它是IT中最重要的一种语言,但这并不是因为其语言特性,而是因为大多数技术人员都在某种程度上讲它,所以它是该领域许多重要人员的母语,大多数与技术相关的术语已经是英语,等等。

但是由于我们谈论的是编程语言,而不是文档/ API /名称/ etc,所以我不得不反对:编程语言不是基于英语-也不基于任何其他自然语言。编程语言是形式语言。他们确实在不同程度上使用了(通常)英语中的少数单词。有些甚至试图模仿其语法-但无论如何都完全无法像英语一样阅读。为了加重侮辱性伤害,他们仅将一个(少数情况下)含义与他们借用的每个单词相关联。通常,此含义是非常专业的术语,专门术语或基于可疑的类比。因此,了解编程语言借用的单词的多种自然语言含义并不能真正帮助理解关键字背后的编程概念。把我的头顶部的例子:arraytypegotoclassvoid。(有趣的是,跳出来介意,因为我重新读了一个问题:这些所有的,除了goto具有德语翻译它们至多有一个字符长:FeldTypKlasseLeere。他们所有的声音怪我,但是这可能是习惯问题)


2
类kind-of的意思是英语。“类”定义类型,它是“对象的类”。您可以说所有Int值或所有Person记录都属于一个类,因为它们共享某些功能。但是,大多数类似C的程序员都不是绝对的,所以“类”对他们来说就是“对象蓝图”。
CodexArcanum 2010年

7
顺便说一句,您的英语很棒
艾伦(Allen)

作为德国人,我不得不说我完全同意你的看法。我认为,主要原因是,正如您提到的,英语是IT世界中语言。世界各地的人们每天都用英语讲话,讨论和编程-因此几乎所有相关文章都是以英语发表的。书籍也是如此。另外,大多数翻译成德语的书都读错了。一些短语和关键词被翻译。这完全扼杀了潮流
mhr

我完全同意尝试将英语语法引入编程语言是一个完全错误。我不同意“这是非常专业的术语”。作为以英语为母语的人,将概念描述为预先存在的术语的类似物是日常交流的典型内容。英语作为一种语言只是松散的解释,并且通常是针对特定上下文的。至于德国的同类产品,这并不奇怪。英语是从德语中借来的大部分结构,而其他语言则是从很多词汇中借来的。这就像自然语言的“神秘肉”。
Evan Plaice

@EvanPlaice是的,这些确实有多不自然,这值得商bat。他们显然有一些好处,否则他们早就被废除了。我无法判断他们是否通常会帮助以英语为母语的人,我只知道等效词(选择最接近的译文,然后用该译文构建等效的类比)往往会在学生的大脑中建立错误的联想。重新翻译:是的,有相似的单词也就不足为奇了;我的目标是“问题不多于简短的单词和怪异的缩写”。

8

英语是编程的通用语言

在同一篇文章中:

正是伟大的黑客集体意识到,坚持用英语进行技术讨论可以使工作轻松完成。


9
lingua franca-拉丁语,今天(意思是法语)。但是我们用它来表示英语。

6
@Graham Lee:具有讽刺意味的是,该短语的意思是(作为借来的英语术语)“一种由不同背景的人们用来相互交流的通用语言。”
greyfade 2010年

为什么意大利语是音乐符号的语言,而拉丁语是科学音乐的语言?对于技术,它是英语。随着国际公认“通用语言”,英语将不可避免地拥有最广泛的技术专用词汇。丰富的词汇对于有效(且通用)的沟通至关重要,因此人们愿意采用这种语言。
Evan Plaice

5

英语是有利的,因为:

  1. 更适合当前外围设备的限制。

易于输入。您可以使用标准键盘。我知道这听起来像“骆驼粪”,但是您尝试过用中文打字吗?有上千个字符,而且由于汉语没有足够的“字符”构建技术来适应键盘的概念,因此对于全球读者而言,学习起来并不容易。

  1. 可以转换为同样可识别的非单词。英文由于缺少重音符号而倾向于缩写。

缩短的英语单词是可识别的符号。无需学习整个英语即可编写代码,因此该语言之外的人可以快速学习。

  1. 并考虑到通用编程语言具有更多的数学符号和更少的单词。

汇编使用没有句子结构的小词。然后是诸如COBOL和FORTRAN的语言,它们试图尽可能地容纳英语的句子结构。较新的语言实现了对通用代数符号的更多依赖,因为它们具有更好的可预测性。(在COBOL中,将X添加到Y,将X减去Y,计算Y = X + A;计算使前面的语句不再需要,并降低了语言解析的复杂性)。考虑到C ++之类的语言比基于语言的语言更具象征性,这对我来说并不需要太多。现在有了使用C#的基于单词的编程的一些回归,但这主要是为了支持流行的编程模式。

结论:

最终,外围设备限于基于字符的语言(例如英语)。此外,西方语言对数学概念也有更好的支持(例如0等概念;中国借用数字来代替自己的数字表示形式,以更好地传达数字,因为它的书写时间较短(平均而言))。除了数值之外,我认为基于符号的语言(中文)比英语更适合于编程语言形态,因为大多数现代语言已经使用了符号,并且它在普遍意义上等同于学习。但是,我们必须施加类似于C ++的结构,对于世界上大多数人来说,拥有符号块并不容易阅读。


4
一个人不必学习整个英语即可编写代码,因此该语言之外的人可以快速学习 -听起来不像是一个很好的论据:在医学中,有很多拉丁词,而您却没有需要了解拉丁语才能学习医学。
mojuba

2
您所说的中文是错误的。可以使用标准键盘输入中文。
grokus

2
@mojuba不是我的意思。我的意思是英语擅长缩写单词,MOV,cpystr等。您不能砍掉一半的中文符号或一半的日语单词(通常是单词的组合),并且含义相同。而您还有很多空间可以缩短英语单词并传达相同的含义。我的意思不是说其他​​专业没有并入其他语言的单词,而是要说程序语法确实包含的单词可以很容易地简化为标记。
Lee Louviere

@grokus除非要输入拼音,否则您不能直接输入中文。您必须使用按键或使用拼音并选择最接近的匹配符号。无论哪种方式,都必须合并选择过程,因为标准键盘不支持四种中文音调。除非您修改标准键盘,否则将违反要求。
Lee Louviere

-1、0不是西方概念(中东优先),Assembly根本不使用单词(通常基于脱机/寄存器名称,而3-5个字符的命令代替0x86为LDA),英语结构因为英语具有“西方”语言中最差的结构集之一,因此可以杀死编程人员。“可识别”的非单词是局部性和主题特定的概念,并且可能与“非英语”单词集一样糟糕。所有语言都是象征性的,这是使它们成为正式语言的一部分:int表示整数,Double表示双精度浮点数…
Jeff Langemeier

5

英语在计算中被广泛使用的唯一原因是,它恰好是当今广泛使用的语言。

如果计算机是2000年前发明的,它们将使用希腊语。如果它们是200年前发明的,那么它们将使用法语。如果他们在200年内被发明,他们可能会使用中文...


3

如果假设只使用英语-拉丁字母,那么假设的编程语言将具有一些好处。

  1. 这是一个小字符集(与汉字不同)
  2. 通常不使用变音符号(与法语,西班牙语,德语等不同)
  3. 每个大写字母都有一个小写字母(与德国Eszett不同)
  4. 整理很简单

所有这些都是尚未在所有设备上正确解决的问题。例如,带有变音符号的歌曲标题无法在数字音乐播放器上正确显示


5
我想知道计算机是否是在中国发明的,我们将辩论任何人如何编写非中文的代码,因为所有字符都允许使用较短的名称。
CodexArcanum

3
我不同意。例如,希腊字母很小。特别是在编程时,可以消除变音标记,与德国ß一样;如今,归类已规范化,即以几乎所有现有语言都以某种“直截了当”的形式用于计算/数据库等。就像在计算中基本上不使用或避免英语的“ the”和“ a”文章一样,任何其他语言都可能经过了一些优化。
mojuba

3
我认为大写和小写与编程语言无关。
David Thornley,2010年

1
@David Thornley啊,但是对编译器来说,程序就是数据。
康拉德·弗里克斯

1
@Ingo我不确定您的意思。例如,假设我使用了一个名为的变量étudiant。使用unicode,第一个字母可以表示为U+00E9 LATIN SMALL LETTER E WITH ACUTE,也可以e后面跟U+0301 COMBINING ACUTE ACCENT。如果您是这些语言之一的编译器作者,您是否要支持这样的变量命名?在同一个作用域中命名为\u00e9tudiant和的两个变量将如何处理e\u0301tudiant
康拉德·弗里克斯

2

我不太确定编程语言本身是否会因为基于英语而受益。在解释中:

  • 方法,变量,对象等的名称与计算机无关
  • 评论内容与计算机无关
  • 编程的逻辑可以在大多数(我假设所有)口头语言中表达。

因此,如果英语对编程语言有利,那么它将有助于使更多的人使用编程语言。在这方面,这里有一些想法:

  • 国外许多人都学习英语,无论他们是否想编程
  • 设计计算机语言并希望许多人使用它的人们通常会选择最著名的口头语言来描述它。

总结这些想法,我认为英语并不能真正以大多数其他语言可以提供的任何重要方式来帮助编程语言-除了很多人说英语之外。


有趣的是您提到评论;我曾在一家日文公司工作,该公司的所有C文件都以Unicode存储,因为注释是日文。
Mark Avenius

1

在我看来,英语比许多(但不是全部)其他语言拥有更丰富的技术和数学词汇。缺少此类词汇的语言会使用英语借词来完成工作。仅此一个令人信服的理由就将编程语言导向英语。

对于具有足够丰富词汇量的语言来描述我们需要描述的所有内容而又不不断诉诸英语借用词的情况,英语作为自然科学的通用语是令人信服的,但是我们的字母表给了我们另一条小腿:

  • 与使用重音拉丁字符的中文,日语,西里尔字母或罗曼史语言相比,英语可以用较小的字符集表示。
  • 英文字母很大程度上是由于其完全没有重音符号,因此在视觉上非常清晰。由于括号不匹配或分号缺失而导致我们有足够多的错误,添加辨别“ē”,“ĕ”和“ě”的问题是愚蠢的。

3
英语技术词汇丰富,因为计算主要是在讲英语的国家/地区开发的,而不是相反。确实有点鸡蛋问题;)至于重音符号,确实很有趣。
mojuba

@mojuba我不同意。英语技术词汇丰富,因为早于计算机的技术主要是用英语开发的。这些技术主要是出于经济原因而以英语开发的,但是当计算机问世时,英语已经准备就绪。
HedgeMage 2010年

2
Pulchra est lingua Latina!(“拉丁语言很美!”)我实际上讲古典拉丁语,并且在我的代码中使用它非常有趣。不幸的是,它一直处于死语言的边缘,因此以编程语言为基础是不切实际的。(尽管,现在我很想设计一种有趣的技术。)许多优秀的技术来自非英语国家的人,但是来自任何一种语言的技术却不足以匹配英语提供的丰富词汇,这些语言也可以满足我提到的另一个因素:小而清晰的字母。
HedgeMage 2010年

1
@mojuba + HedgeMage,在哪里开发技术都没关系,英语是借来的单词和词汇的大杂烩,任何非英语开发的术语都会迅速地融入到语言中。英语的主要优点是它提供了许多复杂的时态,可以很好地很好地描述抽象概念,这非常有用。
whatsisname 2010年

5
英语之所以丰富,是因为它习惯于在黑暗的小巷里抢劫其他语言并窃取所有有用的单词。它不是借词集市而是借词集市。
David Thornley,2010年

1

对于一些有趣的语言背景的阅读,以及我们最终如何抱怨的事情:

史蒂文·平克的思想

记住,我们谈论的是语言结构,而不是我们如何交流信息(不是同一个人),我使用的代码中变量的主要语言全部是德语(代码同样易于理解) )。英语并不具有任何适合自己的编程更好,如果我们直接去关我们的语言是如何构成它可能是更坏而不是更好,这可能是诚实的原因有很多:

  1. 缺乏结构(我们可以在任何地方放置主语/谓语/名词/形容词),
  2. 我们话语的可变性(我们觉得可以缩写任何东西)
  3. 大一:精通英语的人比不懂英语的人对代码部分的理解要好。

问为什么编程语言使用“英语”就像问为什么元素周期表中仍带有字母“ W”标识钨一样,除非知道历史,否则大多数人无法告诉您原因。如果您想了解编程语言的历史,我们应该回到打孔卡,字节指令和汇编。

汇编没有主要的“英语”结构,但是它与您不讨厌自己的机器代码一样近。此外,高级语言的所有结构元素都可以而且经常被我们那些疯狂地享受它的人所实施。LD,MV,ST,BRA和指令集的其余部分看起来都不像英语,但我可以完美阅读并获得全部含义。

我们将LD或MV在汇编中的相同含义分配给更高级别的结构,我不需要知道变量的含义,而且在很多情况下,由于列表中的#2,它无论如何都不是英语。诸如int,str,enum之类的标识符集仅是一种告诉您正在使用的内容的方式。而不是如果INT标识是海鸥,我们就都知道海鸥在译码上下文的意思,不是因为它的英语,但是这就是标识覆盖。

TL; DR:像其他语言一样,编程语言也需要培训才能理解。他们的命令使用英语而不是西班牙语,德语或俄语的原因比某些必要的英语结构(或多或少适合形式语言结构中的标识符)更具有深奥和历史意义。

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.