it-swarm.cn

为什么HTML和CSS不是编程语言很重要?

这里的例子:

如果我对构建Web应用程序感兴趣,应该知道哪些语言?

是的,我了解HTML和CSS并不完整。是的,我知道它们是说明性语言,而不是命令性语言。但是,为什么人们在问有关这些语言的问题时总是总是被这个学问(可能是显而易见的)事实所吸引呢?

160
Robert Harvey

真的有什么区别?

编程语言和这些其他语言之间的真正而重要的区别是:

HTML和CSS描述表示,而编程语言描述表示功能

我打算说明为什么这种区别很重要,但是在这个问题上的脚有时会放错地方。

真实的故事

我曾经花了几个月的时间使用“适当的”编程语言来开发复杂的绩效管理系统。它自动化了从其他各种系统收集数据的过程,对该数据执行了各种操作,然后将结果显示在一个简单的表中。

上线之后,一位高级经理看到了为类似业务编写的工具,并询问我们是否可以用他们的替代产品代替我编写的内容。此外,他为我花了数周的时间开发解决方案而感到沮丧,因为这个新应用程序在几天之内就被编写出来了。

进一步的调查显示,经理的首选选项是所有陈述都没有实质内容:有很多颜色,图标和图形,但它们后面有绝对没有逻辑。所有数据必须手动收集和处理。尽管界面漂亮,但该应用程序实际上是无用的。

我很高兴地说,有问题的经理被说服了,我的方法可以满足他的实际业务需求。

演讲的重要性

通常暗示HTML,CSS等方面的技能在某种程度上不如“真实”编程语言中的技能。 这是一个严重的错误。

在我的故事中,高级经理认为设计对他来说非常很重要,以至于他最初准备忽略对它有利的功能。现在,如果这是一起孤立的事件,我可能建议经理只是愚蠢的。但事实并非如此。我一次又一次地遇到了那些对华丽的图形和精致的小部件印象深刻的用户,但是对原始功能和我的技术成就印象深刻的用户。我认为这里有几课要学习:

  • 人们根据他们了解的标准评估软件。他们通常理解好看和丑陋之间的区别,但很少欣赏技术上的细微差别。
  • 人们被外表迷住了。这可能不是一件好事,但这是我们必须忍受的现实。
  • 外观会影响人们对软件的感觉。人们对软件的感觉对他们而言很重要。确实,人们有时更喜欢使他们feel优秀的软件,而不是功能上优越的软件。确实,使用感觉良好的工具可能比使用技术上优越的工具更有效率。在这个程度上,我们的用户并没有被愚弄。他们实际上是在做出明智和周到的选择。
  • 作为程序员,我们在关注功能时经常忽略表示的作用。在某种程度上,这是正确的。但是,重要的是要认识到,我们的工作还有另一个方面对客户很重要。

因此,面向表示的语言(HTML,CSS)很重要。可以有效使用这些工具的人所增加的价值不应被低估。

真实编程语言的重要性

正如OP所指出的,“真正的”编程语言是图灵完备的。作为一个适当的悲伤怪胎,我发现这令人着迷。这意味着,对于以T-C语言编写的any程序,可以用any other T-C语言编写功能上等效的程序。当然,这并不是说所有语言都是相同的。他们每个人都有自己的长处和短处,这使他们或多或少地适合某些任务。但是,除了I/O,这意味着所有程序都可以用所有真正的编程语言编写。

(顺便说一句,重要的是T-C。声明式与命令式在这里是一条红线。例如,SQL是声明式的,但由于它是T-C,因此也是一种适当的编程语言。)

当然,对于诸如HTML或CSS这样的标记语言,情况并非如此。实际上,存在这些语言无法解决的全部问题。在哪里我可以用一种真正的编程语言(包括布局引擎)来编程我想要的任何东西,而使用非T-C语言则无法实现相同的目的。

正如我的故事中强调的那样,HTML及其类似内容用于产生演示文稿。实际的编程语言用于产生功能。

为什么程序员对此感到痴迷?

  1. 程序员花费大量时间,精力和金钱来发展自己的技能。人们自然会珍视他们投资的事物(“您的心就是您的金钱所在”)。
  2. 与UI设计人员获得的快速结果相比,程序员经常感到需要证明产生结果所花费的时间是合理的。为此,他们需要在两组实际do之间进行区分。
  3. 因为雇主需要将合适的人选用于合适的工作。除非我们弄清(通常是技术上的)差异,否则经理很容易打错电话。
  4. 如上所述,因为存在实数基本数的差异。

总是适合做书呆子吗?

面对程序员,让我们面对现实我们是天生的痴迷者。它与领土。当非程序员无法理解我们的工作时,我们很多人都被烧死了,这无济于事。

但是,(老实说,这违背了我的自然本能),我认为我们不需要在人们碰到任何微小区别时就叫他们出来

这里重要的是上下文透视

有人告诉我,从生物学家的角度来看,西红柿是一种水果。但是,当我在超市购买它们时,我会在蔬菜中寻找它们。为什么?因为在特定情况下技术区别无关紧要。此外,它们的用处将实际上是阻碍的实用性:例如,如果我足够傻,可以在水果沙拉中加入西红柿。

计算机语言也是如此。有时,编程语言和其他语言确实很重要之间存在差异。但是,通常,将它们全部融合在一起时,我们所有人都能很好地进行有效沟通。对于由OP链接的问题,真的没关系哪些语言是真正的编程语言,哪些不是。指出区别并没有以任何方式推动讨论。值得庆幸的是,除了增加一点噪音(并成为进行有趣讨论的刺激!)之外,由OP链接的学步鞋也没有什么意义。但是,在最糟糕的情况下,修脚术会激起消极的感觉并破坏人际关系……至少根据我的妻子所说。
:-)

如何在程序员中处理学究

我的一位传教士朋友曾经发表过一次布道,题为:

这山值得死吗?

他指的是将军们对哪些战役值得进行战略评估的将军:这些收益值得付出代价吗?

  • 进行这种区分真的值得中断讨论流程吗?
  • 我的学步法是出于傲慢感还是过去的伤害?
  • 我的评论是否重视别人以及我自己的技能?

当然,有时候需要加以区别。我的目标是,当我做出贡献时,它将为我们的集体努力增加价值。

毕竟,这是每个real程序员的工作。

300
Kramii

告诉土木或机械工程师您学习过“软件工程”,他们会告诉您“软件工程”不是real Engineering。

告诉F-16飞行员您为了娱乐而乘坐塞斯纳斯,他会告诉您您不是真实飞行员。

告诉医生你是脊医,他会告诉你...好吧,我们不要去那里:-)

我认为主要是人们不喜欢伪装者或不真正“有价值”的人渗透到他们的职业中。

现在,公平地说,很明显,HTML和CSS不是编程语言。它们不再是.docx格式是一种编程语言的编程语言,并且如果您只知道HTML和CSS肯定不准确,就声称您是一名程序员。但是我认为答复中的某些强烈含义可以归因于我上面所说的内容。

另外,在您链接的问题中,提问者将HTML和CSS称为“语言”,而不是“编程语言”。 HTML是一种标记语言,而CSS也是一种语言(不过,我不知道您将CSS称为哪种“语言”?),所以我认为将他称为“语言”有点不公平。 “ ...

117
Dean Harding

对我而言,这并不重要。

但是我认为对于HTML,CSS,XML等和Real Programming Languages™之间的区别,就像是木材和作为建筑材料的Paint之间的区别一样。您不能像使用木材一样使用Paint进行build事情,同样,您也不能像使用RPL那样使用HTML program

不过,对于某些对话,我同意你的看法,这可能是无关紧要的,因此令人讨厌而且令人讨厌。

9
Eric King

这可能不是“重要的”区别,因为可以说某些网站的html/css部分和编程部分所做的工作一样多。

但这的显着区别,因为任何人都不知道这意味着什么,因此在进行Web开发的团队中没有位置。

如果设计师认为HTML是编程语言,那就让他继续使用Adobe工具进行设计,并进行与打印相关的设计。但不要相信他会对网络应用说什么。

如果开发人员以为他的语言是图灵完备的,所以认为他高于设计师,就不要指望他与设计师合作良好,否则不要指望代码完成后可以“美化”。

6
Javier

这对某些人来说很重要,因为表面上都不是火箭科学,但是由于它们在您实际关心的通常5到数十种不同的环境中以不同的方式实施,因此围绕它们存在大量奥秘。这种不可预测性和对工艺的关注使一定数量的技术专业人士感到恐惧,他们被无法量化的风险吓到了,甚至在获得学位后绝对不知道要学什么,因此更加恐惧。

如果有人问我知道什么语言,然后我把CSS扔了出去,他们说“但这不是一种REAL语言”,我会问他们如何处理div在IE 5, IE 6-8和IE9 +。然后我们可以继续讨论圆角,alpha透明度问题,所有这些荒谬的表格即布局参数背后的REAL罪魁祸首,这些争论才刚刚开始变得不相关,并且还有许多主题超级编码器,他大概会说一种语言,并声称自己由于十年前被迫上大学的课程而几乎没有功能素养。

它们肯定是“语言”。我不会称它们为“编程语言”。我很乐于描述用这些语言“编码”编写的过程。

但是,就我而言,任何能够熟练掌握CSS的人都具有chtzpa和工作道德,可以成为一名优秀的程序员,已经具有一些面向对象的思维背景,并且毫无疑问已经学会了思考他如何现在的写作可能会影响他未来25个项目的工作。

5
Erik Reppen

当您说“声明性的,不是命令性的”时,您就将它击中了头。标记(无论是HTML,CSS还是其他任何东西)都可以描述事物。编程的全部重点是do事物。

使用标记所需的技能与编程所需的技能完全不同。

通过编写标记解决的问题类型与通过编程解决的问题类型完全不同。

5
HedgeMage

编程语言是一个不太精确的术语,因为它是从业者和非专业人士都使用的通用术语。从业者对该词的含义有些微妙的含义,而外行人士通常没有。通常,他们的定义是,如果它包含我不立即理解的有趣的单词/语法,而程序员使用它,那么它一定是一种编程语言。并非完全偏离标准,但我们可以同意它是不精确的。

声明性,命令性和图灵完备之类的词是更精确的术语,具有非常特定的含义。当您问诸如HTML/CSS为什么不是编程语言之类的问题时,您是在要求对编程语言的真正定义进行更精确的定义。我们不是在ped脚,而是试图回答您的问题。当即使您谷歌搜索它们很难理解它们的含义时,它们是最好的术语吗?依靠。您想要简短还是长久的答案。 :-)

编程人员通常认为编程语言可以完全完成,但这意味着什么?这意味着该语言可以描述行为或做事方式。我们正式称其为逻辑。 HTML/CSS可以描述在右上角有一个按钮,或者有一个包含4列5行的表格,前两行是黄色,而下一行是绿色文本,表格中的每个单元格都有5像素内容周围的空白。

HTML/CSS不能做的是表达单击按钮时发生的行为或逻辑。它不能说当我单击该按钮时从该表中获取值并将其加起来,然后将该值写入表底部的新行中。描述行为大致等同于“翻车完成”,而不会过于学究。

更准确地说,图灵完备意味着您可以自己实现语言。那意味着我可以编写一个采用字符串的javascript的javascript程序,并且可以执行它(而不使用eval()函数)。实际上,我可以编写一个javascript程序,该程序可以采用用任何Turing完整语言编写的程序并对其进行评估。那就是图灵完成的意义。所有可以转换的语言在可以表达哪些程序方面都是等效的。如果您考虑一下,这将是非常惊人的启示。

3
chubbsondubs

HTML和CSS不是编程语言。克服它。

但是:JavaScript是一种编程语言。机器是浏览器。 PHP是一种编程语言。计算机是服务器中的虚拟计算机。

因此,如果仅使用HTML和CSS,则无需进行任何编程(尽管您可能正在做一些工程)。

但是,如果您使用的是JavaScript,PHP或其他脚本语言。您正在编程。

至于REAL编程语言。如果您在一台机器上(真实的或虚拟的)运行。并且正在使用您自己的算法来告诉机器执行操作。然后,您正在使用REAL编程语言。

3
Ricardo Santos

这是我的两分钱。 HTML和CSS显然不是编程语言。因此,当我在某人的简历上的“编程语言”下看到HTML或CSS时,这只是告诉我该人不知道他在说什么。

除此之外,不,这并不重要。

顺便说一句,程序员通常倾向于学究。这只是工作本身。

1
Dima

我认为可以归结为这一点-HTML和CSS虽然很复杂,需要一些技巧,但它们是表示语言,最适合作为生成报告的格式。因此,只能执行这些操作的人员不被视为编码人员。请记住,一些编码器的计算时间已经足够长,以至于记住普通的文字处理器比HTML花费更多的命令语法来设置文本样式。

有人称其为“真实”语言是指以某种方式处理数据以生成报告的语言。或者可以用来编写游戏的东西。内外都知道HTML和CSS是一项宝贵的技能,但要与前端的JS知识和后端的Java,PHP,Perl,Ruby,Python,C/C++或C#知识相结合就可以了。

相反,只知道其中一种“真实”语言却没有任何Web前端技术的人正在极大地限制了自己作为编码器的灵活性。

0
Danny Staple

没关系。这也与定义有关。什么是编程语言?有些意味着它必须是图灵完备的。其他人则具有其他定义,这些定义使HTML成为一种编程语言。 (在您的示例中,它们甚至没有被称为编程语言,而只是被称为语言)。

我的建议:试着忽略那些指出这些毫无意义甚至在很多方面甚至是错误主张的人。这只是语法纳粹主义的一种变体。从任何有意义的意义上讲,将HTML称为编程语言都是正确的。

0
Lennart Regebro

逻辑上的“左脑”或创造性的“右脑”鸽洞/刻板印象准确地描述了许多人的技能。以我的经验,“ HTML/CSS是一种编程语言”更多地是关于擅长HTML/CSS的人是否也可以擅长其他编程任务。

在过去的13年中,与我一起从事Web开发工作的大多数Web设计师都能够创建有效的HTML和CSS,但无法应对更为苛刻的编程挑战(除了最简单的裁剪和-粘贴的JavaScript)。大多数热衷于编程的程序员和数据库设计人员对可视化表示的关注都不够,无法很好地使用HTML/CSS或一般的表示。大多数人实际上拒绝尝试。

HTML和CSS需要一些编程技能:实验,解决问题,仔细测试,对继承的理解...但是它们至少需要相等的数量设计技能:对颜色,线条,间距,平衡的敏感度-可以构成一幅好照片的大多数相同的视觉构图技能。

由于HTML/CSS是一种布局或表示语言,因此它位于数据流程图的末尾。没有其他代码位于其下游。 HTML和CSS并未使用某人为设计良好的API,服务或数据库架构所需的更高级别的设计技能。通常不需要模块化任何与HTML或CSS相关的东西,或者,如果有的话,图形设计者不可以这样做。很少出现 功能由HTML/CSS组成 。下拉菜单可能是最常见的例外,但是可以通过在网上剪切和粘贴配方而不是通过设计代码来完成。

对于程序员来说,具有一些视觉设计或布局技能,或者使设计师具有一些编程技能,这是不寻常的,但并非不可能。这些人在Web团队中特别有价值,因为他们有助于弥合我们大多数人之间的鸿沟。但是它们通常受制于成见,对于“真正的程序员”来说,不可能做HTML/CSS,反之亦然。但是,与同一位程序员成为一个体面的水手,画家,厨师或在业余时间练习其他技能相比,这种技能组合并非没有可能。

正如其他人所说的,这种区别在招聘时最受关注。由于具有跨界人才的人很少,因此大多数工作职位必须针对一种或另一种技能。如果程序员在“ Programming Languages”(编程语言)下列出HTML/CSS,它会发出危险信号,表明他们无法完成一般的编程任务,或者他们的编程定义很狭窄。也许他们可以,这只是一个问题。如果设计人员列出了HTML/CSS,则您肯定希望查看他们的产品组合,以了解他们具有创造所需视觉效果的艺术能力。

HTML/CSS可能会一再被视为不是真正的编程语言,因为它比丢弃无法跨越他们所代表的半球鸿沟的人更安全,更能为社会所接受。当然,有些人可能没有这种抑制作用。我实际上和一位经理一起工作,他经常说:“他写了[在这里插入部门主干功能]?我以为他只是做HTML的?”

好问题!

0
GlenPeterson