📄 pr02.html
字号:
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>前言</title><link rel="stylesheet" href="html.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.69.1"><link rel="start" href="index.html" title="Java网络程序员看Continuation"><link rel="up" href="index.html" title="Java网络程序员看Continuation"><link rel="prev" href="pr01.html" title="版权声明"><link rel="next" href="ch01.html" title="Chapter 1. CPS与网络程序流程控制"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">前言</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr></table><hr></div><div class="preface" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="d0e22"></a>前言</h2></div></div></div><p>Continuation是functional programming language里的一个重要概念,不过在我们这些Java程序员眼里看来,它可能简直跟黑色魔法一样。事实上,自60年代MIT的Steve Russell(顺便提一下,此人也写了世界上第一个电脑游戏)提出这个概念以来,continuation就几乎从未在实际程序中得到广泛应用,continuation的专家也大多是研究functional语言compiler优化技术的一些“科学怪人”。</p><p>不过这种状况可能很快就会彻底改变,越来越多的网络应用程序的程序员可能都将成为continuation高手。或许您会认为我对continuation的预测过于乐观,但是即使您不用continuation,把它与web结合的优雅对于热衷探索的人本身也是一种极大的享受。而后者这正是我写这篇文章的主要原因。</p><p>现在的网络应用程序有什么问题?网络应用程序,这个名字本身就充满了矛盾。WWW的根基http是一个stateless的协议,它的强处在于显示含有超链接的页面,而不是写程序。若不是netscape后来在网景浏览器中加入了cookie,在http基础上写“程序”根本就不可能。在“正统”的网络设计中,我们应该用pop3和smtp收发email,用ftp传输文件,用nntp看论坛,如此等等。这些协议都是stateful的,而且它们都是针对特定的一类应用程序所写的,这使得它们在概念和实现上都可以非常简洁。可是现在,所有这些事往往都是用http完成的。</p><p>不仅如此,网络应用程序还在变得越来越复杂,这促使我们不断地寻找新的办法简化网络应用程序实现上和概念上的复杂度。从需要程序员自己处理http协议的CGI,到提供了对session等支持但仍然以页面为核心的PHP等脚本语言,到重新引入桌面程序的component概念的tapestry,到现在还未获得广泛应用的Java Web Start等Rich Internet Application技术,可以说网络应用程序技术的发展史就是一个长期不断的试图纠正http协议先天设计缺陷的过程。</p><p>近些年来新的网络程序框架可以说令人目不暇接。以Java为例,EJB,struts,Spring,tapestry,JSF,portlet,一个个名字来来去去,可惜的是,我们还远远没有找到编写网络应用程序的最佳模式。不过总的来说,以上框架有一个共同点,那就是从网络架构角度来看,它们都是在应用层上为下层协议打上一个又一个补丁。与之相比,continuation提出了问题的另一个解法,它深入语言底层,在compiler和virtual machine的帮助下把无状态的http变得容易使用。</p><p>这片文章将会带您进入continuation的世界。在这里您会看到不熟悉的概念,奇怪的语言,古老的开发环境。我希望对于您来说,这就像是去非洲某个被人遗忘的角落探险一样新奇有趣。</p><p>本文中的全部代码在gcc 3.3,Java 1.4.2,Ruby 1.8.3,Squeak 3.8.9,Seaside 2.5和rife 1.3.1下运行通过。本文中并没有用到上述软件任何最新或者不稳定的功能,所以您在其他较老或较新版本下运行应该也能通过。如果您有任何疑问,请电邮作者:liuchangjohn AT gmail DOT com。</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pr01.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">版权声明 </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 1. CPS与网络程序流程控制</td></tr></table></div></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -