从技术代码到德性伦理学:Table或Div?——从铁道部订票网站说起

铁道部终于推出了网上订票系统,就这一点还是值得鼓励的。当然把网上订票的预售期提前两天这一做法值得商榷,这对于农民工等缺乏上网条件的弱势群体来说不太公平。

我已经在这个网站订了三次车票了(前两次是去冬至会议的来回),每次订票都遇到过这样那样的问题,在冬至会议完全还在车票淡季的时候也碰到了数次网络故障,显然这种故障并不完全是访客太多的缘故,网站本身的设计可能也存在问题。

当然我无法知道这个订票网站后台运行的机制究竟如何,我只能看到它前台的网页的显示效果。仅从这些网页来看,这个网站简直是粗糙拙劣到难以忍受的地步了。

首先看见顶部的硕大的Flash,我不知道为什么一个实用性的网站要摆上这么一个花里胡哨的Flash,而且不是为了Flash擅长的交互性,而就只是为了华丽的效果而使用一个Flash横幅。这或许是政府历来搞“形象工程”的惯性,任何一个政府工程,即便是有利百姓的实用工程,它首先也是一个形象工程。

这个小小的网页中也运用了大量图片链接,包括“购票”、“余票查询”等最重要的链接都是图片格式,而且也很花哨。如果去掉这些花哨的部分,只保留实用的功能的话,整个网页的大小至少可以减少三分之二。

更要命的是,这些图片链接的图片都没有设置alt属性,也就是说,如果图片没有显示,我们就根本不知道这些链接是什么。图片的title和alt属性可以使得在鼠标悬停时或图片未能加载时提示图片的意义,也是方便搜索引擎理解网站关键词和结构的重要环节。而在这个铁道部的网站上,这些似乎从未被考虑到。

被摆在网页正中间的一条“全文搜索”我从来没有搜到过任何东西,要么是出错,要么是空白。

这些问题暗示了网页设计者恐怕并不是立足于网站的实用性,而首先是从显示效果出发来制作网页的。然而,就网站的显示效果来看,仍然是非常糟糕,充满了各种化石级的设计元素,

不出所料,这个网页主要是基于table而不是div布局的。而在现在的程序员看来,div+CSS早已取代了table布局,甚至在网页中出现table标签都成了某种丢脸的事情。当然,也许完全拒绝table是太过极端了,不过从程序员的主流来看,尽量用div而不是table进行布局已经成为一种常识或行规了。

不过,中国所有的政府网站是例外,即便是最近新建立或新改版的政府网站或银行网站,许多仍坚持着过时的table布局,而且仍然以支持恶名昭著的、已经被微软放弃的IE6为主。当IE6在美国的市场份额已经跌至1%时,在中国仍然保持着四分之一以上的使用率——这一现象恐怕不仅是因为IE6与XP相捆绑而且中国盗版XP使用广泛的缘故,恐怕也和网络环境有关。还有那么多重要的网站仍然在坚持对IE6的兼容,甚至只兼容IE6,也难怪中国网民不愿意抛弃IE6了。(顺便说一句,新版的随轩博客不再支持IE6,如果感觉访问时有严重错乱,且有错误提示,请升级浏览器。)

但即便是IE6也早已支持div+CSS布局了,为什么铁道部的新网站仍然在使用table呢?也许最简单的解释就是他们根本就是请了个三流的程序员来做网站。不过也未必如此,毕竟以国家机关的待遇,再怎么人浮于事,也不至于找几个业余程序员来编写吧。关键在于,衡量程序员的能力并没有一个绝对客观的标准,程序员的能力好坏也得根据网页拥有者的要求来衡量。网页编写的成功与否取决于对网页意义的理解,而这种理解是多元的。

我们发现table布局和div布局类似于两种范式,就好比托勒密体系和哥白尼体系那样。我们知道哥白尼的“布局”方式很早就在科学界成为主流,但此时坚持托勒密体系的人未必毫无理由。一开始并没有关于二者优劣的客观标准,两种体系在实践上各有所长,决定胜负的东西其实是它们背后的某些形而上学倾向。“哥白尼布局”与一种更合乎时代潮流的思想气质相互配合,决定了它的胜利。

div布局当然有许多优势,但table也并非一无是处,导致div在程序员中占据主流的原因不仅是单纯效率上的,在不同的代码背后暗含着不同的思想。这类似于芬伯格所谓的“技术代码”概念,每一种技术在某些细枝末节之处的他择性往往暗含着不同的思想倾向和价值理念,因此现代性是“可选择的”,每一个细小的选择都具有不同的导引性,当我们在决定选择IE还是Chrome、选择iPhone还是Android、选择Windows还是Linux、选择table还是div时,引导着我们的选择并且将被我们的选择所引导的东西远不止是效率,而是德性(关于什么是“好”的理想)。

似乎说得有些玄乎了,让我们具体看一看table和div各自的优势。

参考了网上的各种说法,一般认为table的主要缺陷是:代码繁琐、可读性差;而div的优势是代码简明,而且网页的“结构”与“表现”相分离,便于维护。(讲解一下:按照Web标准,一个网页的元素可以分为三项:结构、表现和行为。“结构”指网页内容的框架,比如有哪些是标题,哪些是正文,哪些是表单,哪些是页眉页脚等等,以及各标题或段落之间的次序和层级关系如何;而“表现”指这些内容以怎样的样式呈现,字体和字号,左对齐还是右对齐,横着排还是竖着列等等;而“行为”则涉及到访客的操作活动:鼠标悬停之后如何变化,点击之后如何跳转等等。用我们更熟悉的话来说,也许可以换成:网页的质料(内容)、形式(外观)和动力(交互作用)这三个部分。如果这三部分各司其职,分头准备,那么网页的维护就会很方便,因为你可以在保持样式不变的情况下完全更新其内容,也可以在保持内容不变的情况下让网站的显示效果改头换面。不同的工作可以分别交给专人负责,这些工作相对独立,不需要安排一个独裁者统筹全局,后继者不需要全盘理解前人的架构就可以继续维护。这样网站就可以在内容、形式和编辑人员不断发生微调的情况下保持连续稳定的更新。而这方面同时就是table布局的最大缺陷所在。

table布局从功能上来说并不特别弱于div,CSS样式也可以运用于table之上。代码的繁琐并不简单地意味着这种布局方式是繁难的,恰恰相反,table布局在某种意义上来说远比用div布局简便快捷。因为div+CSS布局是需要程序员亲手“写”代码的,而table布局更适合于在Dreamwaver、FrontPage乃至Word中所见即所得地编辑。因此据说要实现相同的效果,通过div编写往往要比用table编写多花一倍以上的时间。

而且,div布局需要作很多细心的考虑,特别是在各浏览器之间实现兼容是一个令人痛苦的工作,而相比之下,table的排版十分精准,最容易实现一个整齐划一(当然同时是刻板的)的布局。

也就是说,如果要求是尽可能简捷和精确地排布好某一个网页,恐怕还是table优胜。但如果要进一步考虑网页完成之后的维护、继承和再利用等等因素,div才能够在效率上胜出。

网页的编写总是为了实现某个特定的功能,比如铁道部要求编一个网站来实现订票的功能,仅就达成这一目的的效率而言,div布局并不占优势,特别是在div+CSS刚刚起步的时候,是完全不能与成熟的table布局相比的。不过在程序员那里,编写网页的工作并不仅仅指向某个眼下需要实现的任务,程序员把自己的工作也看成某种带有艺术性的自由创作活动。也就是说,编写的工作不仅仅是由其实际的任务所衡量,而且还被赋予一定的内在意义——程序员都渴望自己的代码成为不朽,让自己的代码不仅仅只是实现这一次的使命,而且有可能代表着自己的荣耀而流传下去。因此程序员们即便在网页的显示效果一致的情况下,关心其代码的美观。

媒介的间隙中开辟着新的意义空间,正是在这些并不完完全全注目于眼下的目标,而是在媒介中稍加踟蹰的态度,揭开了一种特定的技术沿革路径。在这个意义上,div的特色除了上述的三项元素(质料、形式、动力)的分离之外,还要再加上一条,即“目的”的分离,编写网页的创作活动与编写此网页所要达成的目的相分离;网页的功利(功能、效率)与网页的善(美丑、好坏)相分离了,程序员的创作才拥有了自己的意义空间——功利≠美德,这一不等式是德性伦理学与功利主义伦理学之所以必定要划清界限的原则问题。

 

 

 

 

 

关于 古雴

胡翌霖,清华大学科学史系助理教授。本站文章在未注明转载的情况下均为我的原创文章。原则上允许任何媒体引用和转载,但必须注明作者并标注出处(原文链接),详情参考版权说明。本站为非营利性个人网站,欢迎比特币打赏:1YiLinDDwvBLT19CTUsNHdiQhXBENwURb

发表评论

电子邮件地址不会被公开。 必填项已用*标注