设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

有人负责,才有质量:写给在集市中迷失的一代

2012-8-23 14:45| 发布者: 红黑魂| 查看: 3615| 评论: 1|来自: 图灵社区

摘要: 原文:A Generation Lost in the Bazaar(发表于 ACM Queue vol. 10, no. 8, 2012)作者:保尔-亨宁·凯普(Poul-Henning Kamp) 翻译:@李松峰13年前,新兴的草根开源软件运动如火如荼,而Eric Raymond的《大教堂 ...

1980年代出现过很多不同的Unix实现:Cray-1s及其24位指针、Amdahl UTS主机Unix、来自微机制造商的大量的SysV+BSD混搭、Data General等公司开发的准Unix“垫片”,甚至连油漆厂Mark Williams都有纯粹的Unix克隆Coherent。

当时的configure脚本是手写的,用于检测当前系统是BSD还是SysV风格的Unix,然后根据检测结果把一个或另一个Makefile(有时候还带一个.h文件)复制到指定位置。后来,这个configure脚本的神通越来越大,而且不折不扣地印证了彼得定律。我们没有看到Unix采用标准做法来消除对该脚本的依赖,反倒是有人写了一个叫autoconf的程序,用来自动生成configure脚本。

今天,Unix/Posix一脉的操作系统,就连IBM的z/OS主机版,都跟1980年代那些完全一样;libtool这个configure脚本中的31 085行代码仍然还要检测<sys/stat.h><stdlib.h>是否存在,即便是没有这两个文件的Unix变体,在既没有足够内存执行libtool,也没有足够硬盘保存其16MB源代码的情况下。

为什么会这样呢?

由于尚不知晓的原因,autoconf是用晦涩的M4宏语言写的,因而实际的测试代码如下:

## Whether `make' supports order-only prerequisites.
AC_CACHE_CHECK([whether ${MAKE-make} supports order-only prerequisites],
  [lt_cv_make_order_only],
  [mkdir conftest.dir
   cd conftest.dir
   touch b
   touch a
cat >confmk << 'END'
a: b | c
a b c:
       touch $[]@
END
  touch c
  if ${MAKE-make} -s -q -f confmk >/dev/null 2>&1; then
    lt_cv_make_order_only=yes
  else
    lt_cv_make_order_only=no
  fi
  cd ..
  rm -rf conftest.dir
])
if test $lt_cv_make_order_only = yes; then
  ORDER='|'
else
  ORDER=''
fi
AC_SUBST([ORDER])

毋庸讳言,这超出了大多数程序员的承受能力。即便有人有这个能力,但给autoconf指定输入文件都是用复制粘贴的,所以那些涵盖前述“标准测试”的标准宏代码日益膨胀也就很难被发现,而这些宏都是为了处理20年前并不存在的兼容性问题。

我一直不明白:为什么针对我系统里根本没有的Fortan编译器,但libtool的配置探针仍然有不少于26个名字,而且还要再执行26个测试,检测这些根本不存在的Fortran编译器分别支不支持-g选项。也许这就是原因所在。

这是由Raymond在其书中称颂的集市模式导致的悲哀的现实:一坨脓包似的权宜代码,被一群盲目的根本不知IT架构为何物的所谓IT“专业人士” 永无休止地复制着,粘贴着。这事儿放在今天你也许很难相信,但就是在这令人无比尴尬的混沌之下,沉睡着美轮美奂的Unix大教堂的遗迹,而Unix恰恰是 以设计简约、功能实用、执行优雅而著称于世的。(世间荣耀就此消失……)

Brooks提出了很多有见地的观点,其中一个就是所谓质量,只有在某人对它负责时才有意义,而这个“某人”只能是一个人,不能是几个人——二重奏除外。我有点奇怪,为什么Brooks不把Unix作为他这个观点的论据,因为我们可以精确地指出Unix开始走向碎片化的时间点:1990年代初,AT&T抛弃Unix,将其商业化,抢走其架构师的那一刻。

最近几年,不止一个人像Brooks一样得出相同的结论。有些人企图粉饰太平,假装正经,还有人通过制定技术标准的形式来达到类似立法的目的,希冀 着在集市中引入秩序和结构。到目前为止,他们的努力全部以失败告终,因为在集市中迷失的这一代.COM神奇小子,从来就没有见过大教堂,也不可能知道你为 什么需要大教堂,更不用说去想象教堂是个什么样子了。这么挖苦别人,其实我心里也很难过。真的,那些最需要看看《设计原本》的人,可能会发现这本书完全无 法理解。但对于那些怀疑过构建一个Web浏览器居然要使用M4宏来配置autoconf,要写shell脚本,要检测26种Fortran编译器,而且又觉得这怎么说都有点南辕北辙的人,Brooks也谨慎地指出了方向:还有更好的方式。

作者简介:Poul-Henning Kamp (phk@FreeBSD.org) ,26年的计算机程序员,个人网站http://bikeshed.org。他编写的软件以底层构建块的形式被开源和商业产品广泛采用。他最近正在做的项目叫Varnish HTTP加速器,用来加快Facebook这样大访问量网站的响应速度。

(译文完)


酷毙
1

雷人
2

鲜花

鸡蛋

漂亮

刚表态过的朋友 (3 人)

  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部