DOCTYPE是一个神话!
一个web设计者挂了一个DOCTYPE标签到他的网页上,说,“这是标准的HTML”,这是一种很傲慢的举止。但他们不会知道。他们要说的只不过是这个网页应该是一个标准的HTML而已。他们所真正知道的只不过是他们已经在IE、Firefox,也许还有Opera和Safari上测试过,看起来正常而已。或者是,他们从一本书上把DOCTYPE标签拷出来,却并不知道这意味着什么。
在真实世界里,人们不是完美的,你不可能只用一个规范就建立一个标准——你必须有一个超级严格的参考实现,每个人都只对照这个参考实现去测试。要不然,你会得到17份不同的“标准”,或者一份也没有。
这就是 Jon Postel 在1981年引起的问题所在,那年他造了一个新词,健壮性原则:“严于律己,宽以待人”。他说要让协议牢靠地工作的最佳方法是,人人都非常非常小心的遵守规范,但同时对别人,如果他没有严格遵守规范,要极度宽容,只要你能体会出他的意思就行。
所以,从技术上说,要显示一段小字段落的方法是<p><small>, 但是很多人写成<small><p>,这从技术上来说是不对的,至于为什么,大多数web开发者也都不理解,而web浏览器原谅了这种写法,把文字变小,因为这显然是他们想要的。
现在,到处是充满了这些错误的网页,因为所有的老浏览器开发者们开发出了超级开明,友好,通融的浏览器,它们爱你,不在乎你是否犯了错误。这样就出现了大量的错误。Postel的“健壮性”原则并非真正可行。这个问题多年来都没人注意到。2001年,Marshall Rose最后 写道:
跟直觉恰恰相反,Postel的健壮性原则(“严于律己,宽以待人”)常常导致部署出现问题。为什么?当一个新的实现最初发布时,它可能会碰到一些现有实现的一个子集。如果那些实现遵从健壮性原则,那么新实现中的错误很可能不会被察觉。新的实现接着会碰到一些流传不是很广泛的部署。好些新的实现重复着这个过程。渐渐地,不是那么正确的实现跑进那些比最初的实现要少些宽容的实现里。读者该知道接下来会发生些什么。
Jon Postel 理应为他对互联网的发明所做的巨大贡献而骄傲,实在是没有理由为他那非著名的健壮性原则而责怪他。1981年还是史前时期。要是你能告诉Postel,会有9千万未受训的人(而不是工程师),去创建网站,他们会干很多乱七八糟的事情,而某种被误导的慈善,使得早期的浏览器开发者接受了这些错误,总会显示这些网页,他就会明白,这是个错误的原则。而实际上,web标准理想主义者是对的。创建web的正确的方法,本应该是有一个非常非常严格的标准,每一个浏览器都应该明确指出你所有的错误,web开发者如果不知道如何“严谨地提交”,就不要去写到处出现的网页,除非知道怎么做。
但话说回来,如果真是那样,web就不会像它现在这样起飞。也许,我们还会用着由AT&T运营的巨大Lotus Notes网络。
该怎样会怎样能怎样。谁会在意。都已经这样了。我们无法改变过去,只能去改变未来。见鬼,即使是未来,我们能改变的也没多少。
如果你是Internet Explorer 8.0团队里的一名实用主义者,你的脑皮层里应该深深地烙有 Raymond Chen的这些话。他写过一些Windows XP是如何无奈地去模拟老Windows版本里的一些bug行为的文章:
站在消费者的角度来看这个问题。你买了些软件,有X,有Y,还有Z。后来,你升级到Windows XP。你的电脑现在时不时死机。而软件Z根本用不了。你会告诉你朋友:“别升级到XP!经常死机。与软件Z也不兼容。”你会去调试你的系统以确定是软件X导致了死机,而软件Z用不了是因为它用了未公开的window消息吗?当然不会。你会去把XP退货了(你的X,Y,Z软件是几个月前买的,已经过了30天退货期了,你唯一可以退的是XP)。
你也在思考了吧,嗯? 让我们为这段话更新一下版本吧:
站在消费者的角度来看这个问题。你买了些软件,有X,有Y,还有Z。后来,你升级到Windows XPVista。你的电脑现在时不时死机。而软件Z根本用不了。你会告诉你朋友:“别升级到XPVista!经常死机。与软件Z也不兼容。”你会去调试你的系统以确定是软件X导致了死机,而软件Z用不了是因为它用了不安全的window消息吗?当然不会。你会去把XPVista退货了(你的X,Y,Z软件是几个月前买的,已经过了30天退货期了,你唯一可以退的是XPVista)。
微软内部理想主义者对实用主义者的胜利 ,我2004年就报道过了,直接解释了为什么Vista收到一片恶评,并且销售惨淡。
出处:JustinYoung's Blog
责任编辑:bluehearts
上一页 火星人的耳机 [4] 下一页 火星人的耳机 [6]
◎进入论坛网页制作、WEB标准化版块参加讨论,我还想发表评论。
|