我的编程朋友总是告诉我HTML是一种标记语言,而C ++是一种编程语言。当我问他们有什么区别时,他们从不给我一个合理的答案。
是什么可以使C ++成为一种编程语言,而HTML却没有呢?
我的编程朋友总是告诉我HTML是一种标记语言,而C ++是一种编程语言。当我问他们有什么区别时,他们从不给我一个合理的答案。
是什么可以使C ++成为一种编程语言,而HTML却没有呢?
Answers:
编程语言是一种旨在将指令传递给计算机的符号。按照这个定义,C ++和HTML都是编程语言,就像约瑟夫·马里·贾奎德(Joseph Marie Jacquard)在1801年用来对织机进行编程一样。
然而,随着用于构造和/或描述数据的语言的激增,编程语言的定义转移到仅包括能够表达算法的语言。这是当今更常见的定义,不包括HTML或XML之类的语言。
当前定义的核心是图灵完整性的概念。大多数编程语言都是图灵完备的,图灵完备性经常被引用为将编程语言与任何其他计算机语言区分开的一个重要特征。作为一般经验法则已经足够了,但并不完全准确:
根据上下文,您可以选择所需的任何定义。
编辑:
进一步知道,一种语言的实现方式不会赋予语言本身特性,例如:语言的规范可能会定义图灵完整的语言,有人可能会随意地实施图灵完整性。但是,这种实现不尽人意的实现并不意味着该语言本身也不是完全实现的(而是可能意味着实现不符合要求)。语言的详细信息和语言的特定实现的详细信息应视为独立的事物,这就是为什么调用解释或编译的语言不准确的原因。
短语“当我看到时便知道”是一个口语表达,尽管类别是主观的或缺乏明确定义的参数,但说话者试图对可观察的事实或事件进行分类。美国最高法院大法官波特·斯图尔特(Potter Stewart)曾用该词组来描述他在雅各布利斯(Jacobellis)诉俄亥俄州(Ohio)(1964)中的淫秽行为的门槛测试。
像淫秽一样,我想我们一看到一种编程语言就知道了。显然,OP确实如此,因为您已经判断C ++是一种编程语言,而HTML却不是。
那么追求正式定义的目标到底是什么?Yannis已经给出了一个简短的清单,说明为什么最流行的定义(图灵完整性)存在缺陷:它导致了分类,无视“当我看到它时就知道”测试。
我把它给你,任何定义,你可以拿出会导致一些语言,我们都觉得是不是 “程序设计”语言将被归类为如此; 或某些我们都认为是 “编程”的语言将被归类为不是。
为什么不随便吃呢?我使用一种简单的启发式方法:一种编程语言是一种语言,据我认为并根据我的观察,其主要目的是编写程序。不标记内容。不转换XML。编写通用程序。我宁愿只在看到它时就知道它,而不是尝试确定正式的定义,而且我认为尝试这样的定义不会带来任何真正的价值。
HTML是一种声明性语言。它本身并没有做很多事情,它只是描述了文档及其内容(使用具有语义含义的标签)。
另一方面,C ++会执行某些操作。它确实定义了函数和类,但同时也描述了这些函数应如何协同工作,如何以有意义的方式将它们的输入和输出联系在一起以及应用程序应如何整体运行。