Perl 与动态网络的诞生

关于 Perl 在动态网络中所扮演角色的精彩故事,横跨新闻组和邮件列表、计算机科学实验室以及各大洲。
8 位读者喜欢这篇文章。
spider web

Internet Archive Book Images,由 Opensource.com 修改。CC BY-SA 4.0。

网络的早期历史通常被铭记为几个具有开创意义的事件:Tim Berners-Lee 在 Usenet 上宣布 WWW 项目的那一天,CERN 将该项目代码发布到公共领域的文档,当然还有 1993 年 1 月 NCSA Mosaic 浏览器的第一个版本。虽然这些个别时刻无疑至关重要,但这段时期远比这些更丰富,并揭示了技术发展并非一系列离散事件,而是一系列相互关联的故事。

其中一个故事是网络究竟是如何变得动态化的,也就是说,我们如何让 Web 服务器做更多的事情,而不仅仅是提供静态 HTML 文档。这是一个横跨 新闻组 和邮件列表、计算机科学实验室以及各大洲的故事——其焦点与其说是一个人,不如说是一种编程语言:Perl。

CGI 脚本和信息件

在 20 世纪 90 年代中后期,Perl 和动态网络几乎是同义词。作为一种相对容易学习的解释型语言,具有强大的文本处理功能,Perl 使编写脚本变得容易,可以将网站连接到数据库,处理用户发送的表单数据,当然还可以创建 90 年代网络那些标志性的图标,如访问计数器和留言簿。

这些网站功能以 CGI 脚本的形式出现,CGI 代表通用网关接口,由 Rob McCool 于 1993 年 11 月在 NCSA HTTPD 服务器中首次实现。CGI 旨在实现即插即用的功能,在几年之内,人们可以轻松找到用 Perl 编写的预制脚本的存档。一个臭名昭著的案例是 Matt 的脚本存档,这是一个流行的来源,但无意中携带了安全漏洞,并启发了 Perl 社区的成员创建了一个专业的替代方案,名为 Not Matt's Scripts

在业余和专业程序员使用 Perl 创建动态网站和应用程序的同时,Tim O'Reilly 创造了术语“信息件 (infoware)” 来描述 Web 和 Perl 如何成为计算行业变革浪潮的一部分。考虑到 Yahoo! 和 Amazon 的创新,O'Reilly 写道:“传统软件在大量软件中嵌入少量信息;信息件在大量信息中嵌入少量软件。” Perl 是完美的、小巧而强大的工具——瑞士军刀——为从大型 Web 目录到早期用户生成内容平台的各种信息媒体提供动力。

道路上的分岔口

尽管 Perl 与 CGI 的关系有充分的文献记录,但编程语言与动态网络兴起之间的联系更深。在 第一个网站(1990 年圣诞节前夕)出现到 McCool 在 1993 年开发 CGI 的短暂时期内,从表单到位图和表格——定义 20 世纪 90 年代及以后网络的大部分内容都悬而未决。尽管 Berners-Lee 在早期经常被咨询,但不同的人看到了网络的不同潜在用途,并将其推向了不同的方向。一方面,这导致了著名的争议,例如关于 HTML 应在多大程度上遵循 SGML 的问题,或者 是否要实现图像标签。另一方面,变化是一个缓慢的过程,没有任何直接的原因。后者最能描述动态网络是如何发展的。

从某种意义上说,第一个网关可以追溯到 1991 年和 1992 年,当时 Berners-Lee 和少数其他计算机科学家和超文本爱好者 编写了服务器,这些服务器连接到特定资源,例如特定的 CERN 应用程序、Oracle 数据库等通用应用程序以及 广域信息服务器 (WAIS)。(WAIS 是 20 世纪 80 年代后期 Web 的前身,由 Brewster Kahle 等人开发,Brewster Kahle 是一位数字图书馆员,也是 Internet Archive 的创始人。)通过这种方式,网关是为做一件事而设计的自定义 Web 服务器:与其他网络、数据库或应用程序连接。任何动态功能都意味着在不同的端口上运行另一个守护进程(例如,阅读 Berners-Lee 对 如何在网站上添加搜索功能 的描述)。Berners-Lee 打算将 Web 作为各种信息系统的通用接口,并鼓励单用途服务器的激增。他还 指出 Perl 是“一种功能强大(否则难以理解)的语言,可以用来拼凑”一个服务器。

然而,“网关”的另一种含义暗示的不是定制机器,而是一个脚本,一个低门槛的附加组件,不需要不同的服务器。第一个此类网关可以说是 Jim Davis 于 1992 年 11 月发布到 WWW-talk 邮件列表的 密歇根大学地理服务器的网关。Davis 的脚本是用 Perl 编写的,是一种原始的 Web API,可以根据格式化的用户查询从另一个服务器提取数据。Berners-Lee 回应 Davis 的请求,要求他和密歇根服务器的作者“达成某种安排”,因为“从网络角度来看”,只有一个服务器提供此信息更有意义,这突显了网关的这两种概念的差异。正如预期的那样,Web 的发明者 Berners-Lee 更喜欢有序的信息资源。这种即插即用的网关和从其他服务器提取数据的脚本意味着 Web 可能发生的潜在质变,扩展但也巧妙地改变了 Berners-Lee 最初的愿景。

回到 Perl HTTPD

在 Davis 的地理网关和通过 CGI 标准化这种低门槛 Web 脚本之间的一个重要步骤是 Perl HTTPD,这是一个完全用 Perl 编写的 Web 服务器,由印第安纳大学布鲁明顿分校的研究生 Marc Van Heyningen 于 1993 年初编写。在 Van Heyningen 列出的 设计原则 中,易于扩展性是其中之一——除了使用 Perl 意味着无需编译之外,该服务器还包括“在向代码添加新功能时重启服务器的功能,且零停机时间”,这使得添加新功能变得“微不足道”。

Perl HTTPD 与服务器应具有单一专用用途的想法形成对比。相反,它暗示了一种渐进式的、永久测试版的软件产品方法,这种方法最终将被视为 Web 工作中的常识。Van Heyningen 后来写道,他从头开始构建服务器的原因是 CERN 服务器没有简单的方法来创建“虚拟文档”(即动态生成的页面),并开玩笑说,做到这一点的最简单方法是使用“众神之语言”。他早期添加的脚本包括 Sun 的 man 页面的 Web 界面以及 Finger 网关(一种用于共享关于计算机系统或用户的信息的早期协议)。

尽管 Van Heyningen 使用的印第安纳大学服务器主要用于连接到现有信息资源,但 Van Heyningen 和他的同学也看到了个人出版的潜力。其 1993-1994 年间更受欢迎的页面之一 发布 了关于加拿大一桩著名法庭案件的文件、照片和新闻报道,而国家媒体对此案下了禁口令。

Perl HTTPD 不一定是为了持久而构建的。今天,Van Heyningen 记得它只是一个“拼凑的原型”。其最初的目的是向选择 Gopher 作为大学网络接口的高级职员证明 Web 的实用性。Van Heyningen 的代码论证包括以 其出版物的基于 Web 的可搜索索引 的形式,来迎合他的教授们的虚荣心。换句话说,服务器技术的一项关键创新是为了赢得一场争论而创建的,从这个意义上说,该代码完成了要求它做的一切。

尽管服务器具有临时性,但伴随 Perl HTTPD 的想法仍然存在。Van Heyningen 开始收到代码请求并在网上分享,并附带说明,如果想将服务器移植到其他系统,则需要了解一些 Perl(或认识会 Perl 的人)。不久之后,奥斯汀的程序员 Tony Sanders 创建了一个名为 Plexus 的可移植版本。Sanders 的 Web 服务器是一个成熟的产品,它巩固了 Perl HTTPD 所暗示的易于扩展性,同时添加了许多新功能,例如图像解码。Plexus 反过来 直接启发 了 Rob McCool 在 NCSA HTTPD 服务器上创建了一个用于脚本的“htbin”,以及此后不久实现的通用网关接口。

除了这种历史遗产之外,Perl HTTPD 还以更切实的形式保存下来——感谢精彩的 Internet Archive(Wayback Machine),您仍然可以 下载 tarball

未来的历史

尽管科技界都在谈论颠覆,但技术变革实际上是一个矛盾的过程。现有技术是思考新技术的基础。古老的编程形式启发了当今做事的新方法。像 Web 这样具有创新性的事物在很大程度上是旧技术的延伸——尤其是 Perl。

为了超越具有开创意义的事件的简单时间线,Web 历史学家或许可以从 Perl 中汲取灵感。部分挑战在于材料。必须完成的大部分工作涉及从可用的混乱数据中整理出结构,将邮件列表、存档网站以及成堆的书籍和杂志等各种来源粘合在一起。部分挑战在于概念——要看到 Web 历史远不止是新技术的发布日期,它包含个人记忆、人类情感和社会过程,以及协议和首次公开募股,而且它不是一个历史,而是许多历史。或者正如 Perl 的信条所说,“条条大路通罗马。”

这是 Opensource.com 的开放社区档案中的第一篇文章,这是一个新的社区策展的故事集,讲述开源技术、项目和人物的历史。请将您的故事想法发送至 open@opensource.com

标签
User profile image.
我是阿姆斯特丹大学(荷兰)的媒体研究副教授。我研究数字文化的历史。

5 条评论

有趣的阅读,写得很好的文章。期待阅读更多!

吹毛求疵地说,nms 项目只在几个星期内被称为“Not Matt's Scripts”。当他的一些朋友反对这个名字时,我们将其改为仅“nms”(官方上,它不代表任何东西)。

嗨 Dave,感谢指出。我认为看到历史联系是关键,但实际上名称更改为 NMS 更符合该项目的精神。

我喜欢这篇文章,因为我自己也参与了 cgi 的开发并创建了几个脚本。
这在我获得 mca 学位后一直是我的主要领域。
然而,在印度,培训不足,但人才众多,资金较少。
mca 的收入要少得多,本应更多,而且在找到顶级工作方面存在资格障碍。

Perl 确实为动态网络增添了新的视野!
喜欢这篇文章
谢谢

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.