HTML是不是编程语言? - css-tricks


人们认为HTML没有逻辑,或者,它不是图灵完备的,所以它不是一种编程语言。本文的目标不是证明 HTML 是或不是编程语言,而是证明用于声明它不是编程语言的三个主要论点是有缺陷或不正确的,从而从逻辑的角度使“HTML不是编程语言”的结论无效。
 
“HTML 是一种标记语言,而不是一种编程语言”
这句话本身听起来不错……但它是错误的:标记语言可以是编程语言。并非所有这些都是(大多数不是),但它们可以。如果我们画一个编程语言和标记语言的维恩图,它不会是两个独立的圆,而是两个稍微相交的圆。
使用变量操作、具有控制结构、循环等的标记语言也将是一种编程语言。它们不是相互排斥的概念。
TeXLaTeX是标记语言的例子,它们也被认为是编程语言。我们可以在网上找到示例,例如BASIC 解释器Mars Rover 控制器(在ICFP 2008 编程竞赛中获得评委奖)。
虽然某些标记语言可能被视为编程语言,但我并不是说 HTML 是其中之一。重点是原来的说法是错误的:标记语言 可以 是编程语言。因此,说 HTML 不是一种编程语言,因为它是一种标记语言,这是基于错误的陈述,无论您从该前提得出的任何结论都将是绝对错误的。
 
“HTML 没有逻辑”
这种说法要求我们澄清“逻辑”的含义,因为该定义可能会让您感到惊讶。
与图灵完备性(我们肯定会谈到)一样,提出这个论点的人似乎误解了它到底是什么。我让人们告诉我他们所说的“逻辑”是什么意思,并得到了一些有趣的答案,例如:
逻辑是一种合理的理由或思维方式。
如果我们正在寻找的是逻辑的字典定义,那就太好了。但我们谈论的是编程逻辑,而不仅仅是作为一个通用术语的逻辑。我也收到了类似的回答:
编程语言有变量、条件、循环等。HTML 不是编程语言,因为你不能使用变量或条件。它没有逻辑。
这很好,但也不正确。HTML 确实有变量——以属性的形式——并且有一些控制结构可以与这些变量/属性一起使用来确定显示的内容。
但是你如何控制这些变量呢?你需要 JavaScript!
又错了。有一些 HTML 元素具有内部控制逻辑,不需要 JavaScript 或 CSS 即可工作。我不是在谈论诸如或之类的东西