【问题标题】:What is a formal programming language?什么是正式的编程语言?
【发布时间】:2011-02-09 18:44:28
【问题描述】:

一种编程语言是一种正式的编程语言是什么意思?哪些语言是正式的编程语言?哪些是非正式的编程语言?

我还没有找到好的解释。

【问题讨论】:

  • 这取决于他们的穿着。 :-)
  • 这只是第 7 个被标记为正式的问题 - stackoverflow.com/questions/tagged/formal-languages - 所以无论它是(或不是)它都不是 Facebook。或推特。
  • 也许你的意思是“正式的”,你的意思是图灵完备的?

标签: programming-languages formal-languages


【解决方案1】:

正式意味着定义明确。每种可用于定义可执行程序的编程语言都必须进行良好定义,以便机器能够理解。

【讨论】:

    【解决方案2】:

    这是wikipedia的摘录

    “John C. Reynolds 强调,形式规范语言与旨在执行的语言一样多的编程语言。他还认为,影响计算机行为的文本甚至图形输入格式都是编程语言,尽管事实上,它们通常不是图灵完备的,并指出对编程语言概念的无知是导致输入格式存在许多缺陷的原因”

    【讨论】:

    • 正式规范语言!=正式语言。
    • 查看所有摘录请“他还认为影响计算机行为的文本甚至图形输入格式都是编程语言”
    【解决方案3】:

    每种编程语言都是一种形式语言,所以说“形式编程语言”对我来说没有多大意义。 (或者有人知道一种非正式的编程语言吗?)

    形式语言是一种具有数学精确构造规则的语言。或者,更准确地说,它是一些字母表上的一组单词。例如,如果您采用由字母 abc 组成的字母表,则该字母表上的正式语言可能是一组 {a, aa, aba, ca} .当然,这样的语言不会很有用——关键是,有了一套体面的构造规则,你就可以创建一种语言,比如 C 或 PostScript。

    至于“构造规则”,它们可以是形式语法(参见 CSS 的语法)、正则表达式(参见 gorgeous regex 以了解 RFC 822 定义的电子邮件地址)、自动机或通用算法。


    如果你觉得你对这件事还有一点理解,不要绝望,因为这不是一个很好的解释 :-) 形式语言的概念背后有很多思考。我建议您尝试消化Wikipedia entry 并查找更多教程和书籍。这很有趣,你会学到很多关于编译器、正则表达式、图灵机和其他数字人类奇迹的背景。

    【讨论】:

    • “非正式编程”对我来说似乎是一个矛盾,但你是对的,我猜伪代码可以被认为是一种非正式的编程语言。 (对于“编程”的足够模糊的解释。)
    • 我听说过人们谈论正式的编程语言,所以我只是认为必须有一种叫做非正式的编程语言的东西。但我想不会。如前所述,伪代码可能是最接近的。谢谢
    • 在正式语言的世界里,word 表示任何有效的字符串。因此,正式语言word 是任何有效的statementexpression,可能包含空格和其他分隔符。
    • 据我了解,正式是一种编程风格,而不是一种语言。这是一种在数学上证明每一行的方法——基本上是自我验证的。例如您必须能够证明特定的代码行只会做它应该做的事情,而不管任何其他条件(内存错误、缓冲区溢出等)。非正式编程占绝大多数——这依赖于测试代码的功能。即如果它做它应该做的 - 它很好。
    【解决方案4】:

    形式语言是只考虑格式良好的语言。这意味着充分和必要条件是遵守其规则。 示例规则:

    例如。如果我们将十进制数的语言定义为 {x |没有前导零的有限数字集}。 (简单来说,小数就是一串数字。)

    所以如果包含上述规则的语言是正式的,它应该遵守给定的规则。

    但在实际使用中,如果语言将 001 视为十进制数,我们可以断定该编程语言不是正式的,因为它不完全符合它定义的规则集。

    通常语言解析器会检查这些规则。 因此,形式语言应该始终是格式良好的(严格遵循自己的规则)

    【讨论】:

      【解决方案5】:

      它不是一种“形式语言”,它是一种形式化的编程方法:Wikipedia。它不必是特定的语言,而是您编写规范和验证代码的方式。

      【讨论】:

        【解决方案6】:

        其他答案与计算机科学对形式编程语言的定义有关。然而,这个答案与根据社会(想要)科学对正式编程语言的定义有关。

        根据dictionary.com,“正式”的定义之一是being in accordance with the usual requirements, customs, etc.; conventional

        正式的编程语言是一种被谈论它的人广泛使用和接受的编程语言。因此,它是特定于域和会话的。也许更好的措辞是“流行”, 传统的”、“主流”或“被广泛接受的”编程语言。例如,在商业和工业中,这指的是SQLJavaC#C++PythonPHP

        非正式编程语言的示例有SPL(莎士比亚编程语言)、FORTRANCoffeeScript。说一种语言比另一种更传统,因此更正式,而不是说一种语言是正式的而另一种语言是非正式的更准确。 毕竟,Lisp 将是一种用于制作网站的非常非正式的编程语言,但是用于开发人工智能研究的一种非常正式的编程语言。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-03-14
          • 2014-06-07
          • 1970-01-01
          • 2022-12-10
          • 2011-03-20
          • 2018-08-27
          • 2019-06-04
          • 2011-04-01
          相关资源
          最近更新 更多