编程语言是形式语言,但与许多形式主义不同,它们还具有通过其操作语义或(对于标记语言而言是表示语义)定义的某些固有含义。编程语言尽管确实是形式化的,但就它们允许的交流而言,它们与自然语言非常相似。
尽管编程语言的开发是人为的,但是自然语言的演化,借用,混合和变异的过程都具有相当明显的人为对应物。所以我想知道:从语言学家的角度来看,有没有对编程语言的演变和行为进行过大规模,深入的研究 ?
编程语言是形式语言,但与许多形式主义不同,它们还具有通过其操作语义或(对于标记语言而言是表示语义)定义的某些固有含义。编程语言尽管确实是形式化的,但就它们允许的交流而言,它们与自然语言非常相似。
尽管编程语言的开发是人为的,但是自然语言的演化,借用,混合和变异的过程都具有相当明显的人为对应物。所以我想知道:从语言学家的角度来看,有没有对编程语言的演变和行为进行过大规模,深入的研究 ?
Answers:
请记住,语言语法Noam Chomsky的研究成果就是形式语法,而没有现代编程就不可能有形式语法。
一场车祸使我无法完成关于您所要求的主题的毕业论文,因此我无法提供给您任何参考,只有一种观点。
口语语言的发展取决于上下文,并且以不可预测的方式发展为人类无法预测的环境。第二次世界大战的结果对日语产生了巨大影响。英国人,澳大利亚人,南非人和北美人不太会说相同的语言。在过去200年的独立性之后,过去曾是西班牙殖民地的动词偏向用法已经大为不同(前殖民地认为西班牙的西班牙人是古朴的)。
只是效率高于语音,使得在不同区域以不同频率使用的不同单词的发音有所不同:非常普通的单词被略读或拼写错误,而不太常见的单词则尽可能准确地说出来。
自然语言及其变体,细微差别和演化不适合我们对计算机的确定性。(Gee!由于误解和第二种解释的共通性,它们似乎甚至不适合人类之间最简单的互动[避免引述关于男/女友所说的话及其真正含义的笑话))
我重新阅读了该问题,并且我认为我的原始答案没有解决。这是另一种尝试。
不,关于我所知道的编程语言语言还没有进行任何认真的研究。已经找到了两个主要分支和一个子分支的语言谱系:
对于我们这些在该领域有数十年经验的人来说,编程语言已经很杂种,因此人们可以在大多数现代编程语言(现在称为多范式编程语言:C#,Python,Java等)中找到任何纯范式的大部分内容。 ..即使以前纯函数式语言(如OCaml和Haskell)也包含足够的过程性(通过monads)和OO功能,可以让您执行任何操作。
我认为已经发生的事情是,很明显,必须切换编程语言才能将正确的范例应用于给定的子问题,这是很昂贵的(虽然并不愚蠢)。
高度并行和异步系统领域的趋势仍然存在例外。首选语言严格地是功能性的,例如Erlang,可能是因为从功能上考虑这样的复杂系统更容易。
演化的非范式部分是语法。鼓励甚至允许使用加密程序的语言越来越少使用(APL,AWK甚至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年代的“每站点语言”时代以来已融合了多少种编程语言。
我喜欢@Apalala的答案,这似乎表明它与几种主要的通用语言融为一体。这仅是有道理的,因为一个人的好主意迟早会被其他人接受。
我要补充的是,每当使用一种语言时,他们都必须通过添加术语来扩展它,将其转换为更面向手边领域的语言。有时这很简单,有时却不是。 这不是一个简单的例子。
我在通用语言中欣赏的特性是它在多大程度上有助于定义新的领域特定语言。