HTML是否被认为是一种编程语言?

210

我想这个问题已经很清楚了,但我想知道 HTML 是否算作一种编程语言(显然,"L" 代表语言)。

问这个问题的原因更加实际——我正在准备简历,不希望在列举 HTML 和 XML 等内容时看起来像个傻瓜,但是我也弄不清如何对它们进行分类。


34
或许你不应该称之为“编程语言”,而应该简单地称之为“语言”、“技术”、“经验”或“技能”。 - Gumbo
7
你好。我正在使用Java EE,并且在编程时涉及到XML,似乎... - whirlwin
4
不,编程语言应该是图灵完备的。HTML不是图灵完备的。 - Arunav Sanyal
2
HTML就像是自动钢琴中用来输入音符的打孔乐谱,而浏览器则是演奏这些音符的乐手。从某种意义上说,它是一种浏览器编程语言,即指示浏览器显示什么内容。如今许多编程语言都具有高级lambda构造,例如C#中的LINQ,它们告诉计算机要做什么而不是如何做。编程语言的发展趋势正在向更加声明性的方向发展,而Kotlin就是这一趋势的明显体现。 - aggaton
3
“谁告诉你的?‘to program’的英文定义是‘给出指令’。除非它被用作示例(例如循环和计算),否则任何定义都不会提及图灵完备性。‘图灵完备性’不是‘编程’的依赖项,过去也从未是,未来也不会是。你使用编程语言来发出指令。你不使用C++进行计算或循环,而是计算机执行这些操作。这就是为什么你要通过使用编程语言来发出指令。” - Cheesus Toast
显示剩余4条评论
15个回答

507
不,HTML不是一种编程语言。其中"M"代表“标记”。通常,编程语言允许您描述某种处理过程,而HTML则是一种添加文本上下文和结构的方法。
如果您想在简历中添加更多字母组合,请不要对它们进行分类。只需将它们放在一个名为“技术”或其他您喜欢的大堆中即可。请记住,您列出的任何内容都可能会成为问题的答案。
HTML非常普遍,我预计几乎所有技术人员都已经知道它(虽然不包括CSS等内容),因此您可以考虑不列出您曾经遇到过的每个首字母缩写词。我倾向于将列出太多东西的简历视为可疑的,因此我会问更多的问题来筛选出不应列出的内容。 :)
但是,如果您的HTML经验包括严肃的网页设计内容,包括Ajax、JavaScript等,那么您可以在“经验”部分谈论这些内容。

16
TeX是一种图灵完备语言,因此它被归类为编程语言或标记语言有些模糊。 :) - mipadi
9
显然,HTML5+CSS3也是图灵完备的:http://lemire.me/blog/archives/2011/03/08/breaking-news-htmlcss-is-turing-complete/ - Bite code
3
我曾将LaTeX列为一项技能,因为它在某些领域非常重要。 :) - brian d foy
7
@SarahofGaia,缩写词是指将字母读成一个单词的形式(例如NASA),而首字母缩写则是指每个字母都要念出来的形式(例如HTML)。这是一个微妙的区别,但却存在着。 - Jason
4
编程语言不需要是图灵完备的。像Idris这样的语言应该怎么称呼?另外,正如其他人指出的那样,HTML是一种特定领域的语言。每种标记语言也都是编程语言。它们只是声明性的而不是命令式的。但你仍然在编写文档的程序。 - bzim
显示剩余13条评论

80

是的,它是一种声明式编程语言。

在您的简历上列出与申请的工作相关的最重要的技能非常重要。如果您列出了ASP.NET,但没有列出HTML,即使这显而易见,仍有许多经理和/或人力资源专员会认为您不知道HTML,因为它没有被列出。我以前曾经遇到过这种情况。

更新 - 有些人说HTML不是一种编程语言,您可能不同意我的看法,但无论如何,在简历上它都是一种编程语言。您的简历会先被人力资源部门查看,再由招聘经理进行筛选。如果招聘经理表示您需要懂HTML,但在“编程语言”部分中没有列出,那么人力资源专员可能会忽略您的简历,认为您不知道它。

更新6-8-2012:任何告诉计算机要做什么的指令都是一种编程语言。因此,即使过了这么多年,我仍坚持我的答案。HTML是一种编程语言。而不是编程语言的东西将是XML。


19
如果“Hello World”是一个程序,那么HTML页面也是程序,因为它们只是更复杂的“Hello World”。因此,HTML确实是一种编程语言,因为它告诉计算机该做什么。我同意这个观点。 - freespace
22
不正确。即使是“Hello World”程序也有其逻辑性。只是因为你喜欢的IDE在幕后准备必要的程序结构,或者只需要几个关键字来打印输出,这并不代表其中没有逻辑。我同意Chris关于人力资源方面的看法。 - Ed S.
47
按照这个定义,几乎所有东西都可以被归为编程语言,这使得它成为一个几乎毫无用处的分类。 - Kaz Dragon
26
@freespace:那个论点毫无意义。本质上就像是说:狗有毛,猫也有毛,因此猫就是狗一样荒谬。 - James Curran
14
声明式的,是的。编程的,不是。你将如何在HTML中编写循环? - Thorbjørn Ravn Andersen
显示剩余33条评论

53

67
技术上来说,那就是 M 和 L :) - SpacePrez
11
我承认在技术上正确确实是最好的正确方式。 :) - Jonny Buchanan
这两者必须互相排斥吗? - General Grievance
@GeneralGrievance 不一定是互相排斥的,但标记语言和编程语言做不同的事情。例如,您可以拥有既包含标记又包含编程功能的计算机语言。 - TylerH

33

在某种程度上,Chris Pietschmann是正确的。SQL没有Turing complete(至少没有存储过程),但人们会将其列为一种语言,TeX是Turing完备的,但大多数人认为它是一种标记语言。

话虽如此:如果你只是申请工作,而不是争论形式逻辑,我会将它们全部列为技术。像.NET这样的东西不是语言,但也可能会被列出来。


8
“但人们会把它列为一种语言”,当然,作为查询语言,而不是编程语言。 - Andrej Istomin
@AndrejIstomin,抱歉我没有看到你说的是SQL而不是HTML。 - Kalle Richter
SQL是图灵完备的。https://dev59.com/DXNA5IYBdhLWcg3wmfEa#7580013 - Serge

21

'M'代表的是“Markup”(标记),它是一种标记语言而不是编程语言。有些人可能不同意这个说法,但我认为如果缺乏逻辑结构(条件分支、迭代等),它就不算是真正的编程语言。

至于简历,我建议将HTML和XML放在“技术”类别下的一个章节中。我通常会有这样一个章节,其中列出诸如版本控制软件、我所开发的操作系统、构建系统等内容。


3
Prolog没有循环。许多函数式编程语言必须采用递归。 - aggaton

20

不,HTML并不是一种编程语言。因为它被称之为“标记语言”。

如果你要说HTML是一种编程语言,那么你也可以认为像Word文档这样的东西也是一种基于ML(标记语言)的编程语言。

简而言之--HTML定义内容!


3
这个<b>加粗的文字</b>怎么能和这个加粗的文字相比呢?如果HTML不是编程语言,那好吧,但是处理HTML并不等同于处理Word文档。 - kazinix
4
Word是一种应用程序。富文本文件或Word生成的其他文件可以被视为领域特定语言,并且如果您了解RTF或任何其他复杂的标记语言(特别是一些旧的基于二进制的格式),那么您应该在简历中强调这一点。这些东西非常复杂。 - Matthew Whited
3
HTML是一种编程语言——虽然它很简单,但仍属于编程语言的范畴。就像之前提到的,在Word中你通常要手动设置段落或标题等。而在HTML中,你可以通过告诉/指示浏览器将某些内容设置为标题或段落(以及所有其他可用的指令)来“自动化”这个过程。编程可以非常简单,也可以非常复杂。并没有规定需要多么复杂才算是“编程”。它只需要使某些东西做某些事情即可... - Cheesus Toast

18

我认为HTML不完全是一种编程语言,而是其名称所表示的:一种标记语言。 我们不能只用纯HTML进行编程,但可以注明如何呈现内容。

但是如果你认为编程就是告诉计算机如何呈现内容的行为,那么它也被视为一种编程语言。


3
如果你认为编程就是告诉计算机如何呈现内容,那么它就是一种编程语言。这时候,人们可能也可以将所有事物都称为编程,因为这基本上就是因果关系的表现方式。 xD - user4490307
但是,HTML并没有具体说明如何呈现其内容。它只说明文本中的事物,呈现方式由解释它的东西决定。例如,考虑一个假想的目录浏览器。它以HTML作为输入,但仅显示标题。HTML并没有告诉它要这样做。其他东西做出了这个决定。 - brian d foy

17
在我上大学学习的高级编程语言课程中,我们有一个我认为相当不错的“编程语言”定义:编程语言是能表达所有可计算函数的任何(形式)语言,这意味着基于Church-Turing论题,编程语言包括所有图灵可计算的函数。
按照这个定义,HTML不是编程语言,即使是声明性的,它像其他人解释的那样,是一种标记语言。
但是审核你简历的人很可能不关心这样的正式区分。我建议按照其他人给出的好建议,在“技术”类型的部分中列出它。

2
这个定义并不是很好,因为C语言不是图灵完备的,而HTML5 + CSS3是,所以我只会说HTML不是“通用”编程语言,只是一种高度专业化的语言。 - Serge
5
C语言不是图灵完备的,但HTML5+CSS3是吗? - Michael Ekstrand
2
C语言可用的RAM受限于2 ** num_bits(size_t),这取决于标准和实现,可能会有一些漏洞存在,但是我们可以说C的图灵完备性是值得怀疑的。在stackoverflow上证明HMTL+CSS的完备性需要一定程度的人类参与,因此可能不是100%令人信服的。无论如何,从Powerpoint动画到音乐符号等高度不可能找到图灵完备的语言。https://www.gwern.net/Turing-complete - Serge
7
我认为将有限的内存作为考虑 C 语言(或任何其他编程语言)是否是图灵完备的一个有用的反驳观点是不正确的。任何实际实现的系统都会受限于有限的内存,包括 HTML5+CSS3 或 PowerPoint。 - Michael Ekstrand
2
我们谈论的是语言,而不是实际实现的系统(可观测宇宙中的原子/粒子数量可能是有限的)。 - Serge
2
这里有一个解释,说明为什么@Serge在这里是完全正确的。一定要查看评论中的美好讨论。我特别想强调D.W.的一条评论:“在同一句话中谈论‘实用性’和‘可计算性’是没有意义的。可计算性(和图灵完备性)不是关于它是否实用;它是关于数学上的真实性。你似乎想谈论“所有工程目的”,但这不是图灵完备性所关注的。” - Elliott

15

我认为在简历中加入HTML技能是有意义的。HTML知识是有价值的,它涉及到跨浏览器兼容性问题和需要遵循的标准,其中有很多需要了解。

我不会将HTML与C#等编程语言并列在“编程语言”下面,但是值得注意您的经验。


13

不,IT界存在一种对Web设计的偏见;但在这种情况下,“真正”的程序员还是很有优势的。

如果你做了很多Web设计工作,你可能已经用过JavaScript, 因此你可以将其列为“编程语言”;如果你想列出HTML,那么我同意建议将其列为“技术”。

但是,除非你的目标是那些只想勾选方框而不是给你找到好工作的代理人,否则仅列出你使用过的东西并不是很好看。最好列出你所参与的项目,并详细说明你在每个项目中使用的技术;这证明了你真正使用它们的经验,而不仅仅是知道一些流行语。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接