有没有研究编程语言学?


18

编程语言是形式语言,但与许多形式主义不同,它们还具有通过其操作语义或(对于标记语言而言是表示语义)定义的某些固有含义。编程语言尽管确实是形式化的,但就它们允许的交流而言,它们与自然语言非常相似。

尽管编程语言的开发是人为的,但是自然语言的演化,借用,混合和变异的过程都具有相当明显的人为对应物。所以我想知道:从语言学家的角度来看,有没有对编程语言的演变和行为进行过大规模,深入的研究 ?


6
Perl是由语言学家制作的,比英语本身更混乱。
工作

1
@Job:它已经存在了23年以上,默认安装在无数类Unix平台上,并且仍然定期用于从自动化(比shell脚本更简洁的方式)到Web开发(以这种方式)它比使用PHP更加清洁)到带有正则表达式的文本处理的原始目的(为此它已经建立了事实上的行业标准)。当然,这很杂乱,但是以一种对人有用的方式,这就是Perl的发展中Larry的语言学背景的福音。
乔恩·珀迪

@Job的效果称为“更糟”,en.wikipedia.org / wiki / Worse_is_better 。
阿帕拉拉2011年

@Aplala:没关系。如果有的话,Perl是一个反例,因为它功能丰富复杂受欢迎。
乔恩·普迪

Answers:


6

请记住,语言语法Noam Chomsky的研究成果就是形式语法,而没有现代编程就不可能有形式语法。

一场车祸使我无法完成关于您所要求的主题的毕业论文,因此我无法提供给您任何参考,只有一种观点。

口语语言的发展取决于上下文,并且以不可预测的方式发展为人类无法预测的环境。第二次世界大战的结果对日语产生了巨大影响。英国人,澳大利亚人,南非人和北美人不太会说相同的语言。在过去200年的独立性之后,过去曾是西班牙殖民地的动词偏向用法已经大为不同(前殖民地认为西班牙的西班牙人是古朴的)。

只是效率高于语音,使得在不同区域以不同频率使用的不同单词的发音有所不同:非常普通的单词被略读或拼写错误,而不太常见的单词则尽可能准确地说出来。

自然语言及其变体,细微差别和演化不适合我们对计算机的确定性。(Gee!由于误解和第二种解释的共通性,它们似乎甚至不适合人类之间最简单的互动[避免引述关于男/女友所说的话及其真正含义的笑话))


在我们的研究中(我有一位导师),我们研究了希腊语和拉丁语,因为它们具有定义明确的语法,可以很好地涵盖单词在句子中可能具有的每个角色。这还不够好,关于人们实际上如何说这些语言的记录表明,这与他们的语法所指出的完全不同,就像现代语言一样。
2011年

4
关于古希腊语和拉丁语-这里的部分问题是,尚存的文本本质上是形式上的正式文章-散文,合同,法律裁决等。如果您考虑我们每天发送的消息-“嗨,亲爱的,请牛奶”和“吉姆-记得9点的凯西报告”-古罗马的这些短暂信息中的大多数都会永远消失。
HorusKol 2011年

2
并非完全如此。我的母亲偶尔会谈论她的高中拉丁语课,并提到他们翻译的一篇,这是罗马贵族给战车司机的一份备忘录。要点是:“请在高峰时间不要被某某战车的后面所困。我不知道他在喂什么马,但恶臭却很严重。”
John R. Strohm

4

我重新阅读了该问题,并且我认为我的原始答案没有解决。这是另一种尝试。

不,关于我所知道的编程语言语言还没有进行任何认真的研究。已经找到了两个主要分支和一个子分支的语言谱系:

对于我们这些在该领域有数十年经验的人来说,编程语言已经很杂种,因此人们可以在大多数现代编程语言(现在称为范式编程语言:C#,Python,Java等)中找到任何范式的大部分内容。 ..即使以前纯函数式语言(如OCaml和Haskell)也包含足够的过程性(通过monads)和OO功能,可以让您执行任何操作。

我认为已经发生的事情是,很明显,必须切换编程语言才能将正确的范例应用于给定的子问题,这是很昂贵的(虽然并不愚蠢)。

高度并行和异步系统领域的趋势仍然存在例外。首选语言严格地是功能性的,例如Erlang,可能是因为从功能上考虑这样的复杂系统更容易。

演化的非范式部分是语法。鼓励甚至允许使用加密程序的语言越来越少使用(APLAWK甚至Perl和LISP)。如今,主要的语法是更具可读性(而不是易于写的)的语言,例如C(C ++,C#,Java,Objective-C,Scala,Go,IML,CSS,JavaScript以及Python),Pascal(Fortran 90+ x),Smalltalk(Ruby),ML / Miranda(OCaml,Haskell,Erlang)和SGML(HTML,XML)。

该图并不完全准确,也不是最新的,但它很好地说明了自1970年代的“每站点语言”时代以来已融合了多少种编程语言。

编程语言进化


1
这更像我在寻找什么。我想我也在寻求与形态和语音的直接关联,除了与使用正式语法相关的明显语法关联之外。
乔恩·普迪

@Jon Well,另一个明显的趋势是英语在语法和语法上一直是并且是所有编程语言背后的主要自然语言。编程语言是从左到右,动词优先的。例如,日语有很大的不同,但是我不知道要开发日语风格的编程语言。en.wikipedia.org/wiki/Japanese_language#Sentence_structure
阿巴拉拉(Apalala)2011年

@Aplala:SOV顺序在面向堆栈的语言中很常见,中缀运算符算作SVO,而函数(Lisp是病理示例)是VSO。英语无疑具有很强的影响力,但是我认为还有其他因素在起作用……我可能必须自己进行这项研究。:P
乔恩·普迪

@Jon是的,我忘记了基于堆栈和SOV的Forth和Postcript。如果您开始研究,请告诉我。我在大学学习语言理论,而编程语言仍然是我的爱好。我对其中许多(Simula,Prolog,LISP)有第一手的回忆。
2011年

@Jon您可能会发现有趣的是,许多说西班牙语的程序员都更喜欢使用西班牙语的标识符,即使它们与所使用的编程语言,库,框架,标准和工具严重不匹配。他们的程序以“ Spanglish”结尾。我曾经见过像使用东欧语言的其他母语为罗马/拉丁文的程序员所喜欢的东西。我不知道远东(中国,日本,韩国),俄罗斯或阿拉伯的程序员喜欢做什么。
2011年

1

我喜欢@Apalala的答案,这似乎表明它与几种主要的通用语言融为一体。这仅是有道理的,因为一个人的好主意迟早会被其他人接受。

我要补充的是,每当使用一种语言时,他们都必须通过添加术语来扩展它,将其转换为更面向手边领域的语言。有时这很简单,有时却不是。 这不是一个简单的例子。

我在通用语言中欣赏的特性是它在多大程度上有助于定义新的领域特定语言。

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.