﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-庄周梦蝶，孰蝶是我，我是孰蝶？一梦至今，蝶我已难分</title><link>http://www.blogjava.net/killme2008/</link><description /><language>zh-cn</language><lastBuildDate>Sun, 18 May 2008 00:29:19 GMT</lastBuildDate><pubDate>Sun, 18 May 2008 00:29:19 GMT</pubDate><ttl>60</ttl><item><title>转发一则QQ消息</title><link>http://www.blogjava.net/killme2008/archive/2008/05/14/200503.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Wed, 14 May 2008 14:13:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/05/14/200503.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/200503.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/05/14/200503.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/200503.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/200503.html</trackback:ping><description><![CDATA[群里收到的消息，过去从来不转发这样的消息，可这条消息我必须得占用大家一点时间，也许能帮上忙。<br />
<br />
有人求救(代转)<br />
<br />
为什么现在电视上不播报江油地震受损失的情况，我老婆现在7个月的身孕，没有食物和水，，今天上午联系了一次，已经饿的不行了。。。<br />
&nbsp;&nbsp;&nbsp; 急需求救。。。现在也没有救援队伍去江油，，电视上一次江油的灾情也没有报，，<br />
&nbsp;&nbsp;&nbsp; 我也是军人，我们部队现在待命准备去四川汶川救灾，我愿意贡献自己全部的力量去救灾区的老乡。。。<br />
&nbsp;&nbsp;&nbsp; 可是我老婆确没有人救。。。。我马上就要出发了，也许很难联系她，，，，虽然无论怎样我会尽全力去抢汶川救灾区老乡，，，可是希望在江油的老乡也能跟她带点吃的，哪怕一瓶矿泉水也行，，，求求老乡了，，，她现在在马路湾中国电信的门口公路上的一辆货车上。。。叫王琢，，是老师，，求各位老乡帮忙，，，<br />
一个去汶川救灾的军人的恳求<br />
知道江油肯定没有人能见到这个帖子，希望在外的人们能联系上江油的同胞们帮<br />
帮忙发下，谢谢了就1分钟 <br /><img src ="http://www.blogjava.net/killme2008/aggbug/200503.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-05-14 22:13 <a href="http://www.blogjava.net/killme2008/archive/2008/05/14/200503.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>sicp3.5.2、3.5.3节部分习题尝试解答</title><link>http://www.blogjava.net/killme2008/archive/2008/05/13/200312.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Tue, 13 May 2008 15:52:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/05/13/200312.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/200312.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/05/13/200312.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/200312.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/200312.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 本节主要讲述无穷流。<br />
3.53，显然<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;s&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;(add</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;s&nbsp;s)))</span></div>
定义是2的n次方组成的无穷数列，2,4,8,16,32...<br />
<br />
3.54，定义阶乘组成的无穷序列：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;(mul</span><span style="color: #000000;">-</span><span style="color: #000000;">streams&nbsp;s1&nbsp;s2)<br />
&nbsp;&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">map&nbsp;</span><span style="color: #000000;">*</span><span style="color: #000000;">&nbsp;s1&nbsp;s2))<br />
(define&nbsp;factorials&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;(mul</span><span style="color: #000000;">-</span><span style="color: #000000;">streams&nbsp;factorials&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">cdr&nbsp;integers))))</span></div>
<br />
3.55解答，比较有趣，也是不难的题目，列出来找出规律就成了，就是将(stream-car s)加到生成的序列中的每个元素上，通过stream-map，最后的结果就是每个元素都是前n个元素累积的结果，我的解答：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;(partial</span><span style="color: #000000;">-</span><span style="color: #000000;">sums&nbsp;s)<br />
&nbsp;&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">car&nbsp;s)&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">map&nbsp;(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">(x)&nbsp;(</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;x&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">car&nbsp;s)))&nbsp;(partial</span><span style="color: #000000;">-</span><span style="color: #000000;">sums&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">cdr&nbsp;s)))))</span></div>
<br />
3.56，有了merge就好办了，根据条件合并起3种情况来就好：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define S (cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;(merge&nbsp;(scale</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;s&nbsp;</span><span style="color: #000000;">2</span><span style="color: #000000;">)&nbsp;(merge&nbsp;(scale</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;s&nbsp;</span><span style="color: #000000;">3</span><span style="color: #000000;">)&nbsp;(scale</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;s&nbsp;</span><span style="color: #000000;">5</span><span style="color: #000000;">)))))</span></div>
<br />
3.57,略过<br />
<br />
3.58，观察到，num每次都与radix相乘并且radix保持不变，那么radix可以认为是一个基数，den也保持不变作为除数，那么这个序列就是以radix为基数对den求整数商的序列，不明白num为什么每次要变换成余数？这个序列有啥特别的用途呢？未解。<br />
<pre>(expand 1 7 10)<br />
=&gt; 1 4 2 8 5 7 1 4 2 8<br />
<br />
(expand 3 8 10)<br />
=&gt; 3 7 5 0 0 0 0 0 0 0</pre>
3.59解答：<br />
a)只要将序列通过前面定义的mul-streams与整数的倒数序列相乘：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;(integrate</span><span style="color: #000000;">-</span><span style="color: #000000;">series&nbsp;s)<br />
&nbsp;&nbsp;(mul</span><span style="color: #000000;">-</span><span style="color: #000000;">streams (stream</span><span style="color: #000000;">-</span><span style="color: #000000;">map&nbsp;(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">(x)&nbsp;(</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;x))&nbsp;integers)&nbsp;s))</span></div>
<br />
b)照着定义来了，cons的级数注意使用scale-stream乘以-1：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define sine</span><span style="color: #000000;">-</span><span style="color: #000000;">series<br />
&nbsp;&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;0&nbsp;(integrate</span><span style="color: #000000;">-</span><span style="color: #000000;">series&nbsp;cosine</span><span style="color: #000000;">-</span><span style="color: #000000;">series)))<br />
<br />
(define cosine</span><span style="color: #000000;">-</span><span style="color: #000000;">series<br />
&nbsp;&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;(scale</span><span style="color: #000000;">-</span><span style="color: #000000;">stream<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integrate</span><span style="color: #000000;">-</span><span style="color: #000000;">series&nbsp;sine</span><span style="color: #000000;">-</span><span style="color: #000000;">series)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">)))</span></div>
<br />
3.64解答：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">limit&nbsp;s&nbsp;tolerance)<br />
&nbsp;&nbsp;(define&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">limit</span><span style="color: #000000;">-</span><span style="color: #000000;">iter&nbsp;stream&nbsp;current)<br />
&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;((</span><span style="color: #0000ff;">or</span><span style="color: #000000;">&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">null?&nbsp;stream)&nbsp;(null?&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">car&nbsp;stream)))&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">f)</span><span style="color: #008000;"><br />
</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;((next&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">car&nbsp;stream)))<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;(</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">&nbsp;(abs&nbsp;(</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;next&nbsp;current))&nbsp;tolerance)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;next<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">limit</span><span style="color: #000000;">-</span><span style="color: #000000;">iter&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">cdr&nbsp;stream)&nbsp;next))))))<br />
&nbsp;&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">limit</span><span style="color: #000000;">-</span><span style="color: #000000;">iter&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">cdr&nbsp;s)&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">car&nbsp;s)))</span></div>
<br />
习题3.65：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">(define&nbsp;(ln</span><span style="color: #000000;">-</span><span style="color: #000000;">summands&nbsp;n)<br />
&nbsp;&nbsp;(cons</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;(</span><span style="color: #000000;">/</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">1.0</span><span style="color: #000000;">&nbsp;n)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(stream</span><span style="color: #000000;">-</span><span style="color: #000000;">map&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">&nbsp;(ln</span><span style="color: #000000;">-</span><span style="color: #000000;">summands&nbsp;(</span><span style="color: #000000;">+</span><span style="color: #000000;">&nbsp;n&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)))))<br />
(define&nbsp;ln</span><span style="color: #000000;">-</span><span style="color: #000000;">stream&nbsp;(partial</span><span style="color: #000000;">-</span><span style="color: #000000;">sums&nbsp;(ln</span><span style="color: #000000;">-</span><span style="color: #000000;">summands&nbsp;</span><span style="color: #000000;">1</span><span style="color: #000000;">)))<br />
(define&nbsp;ln</span><span style="color: #000000;">-</span><span style="color: #000000;">stream2&nbsp;(euler</span><span style="color: #000000;">-</span><span style="color: #000000;">transform&nbsp;ln</span><span style="color: #000000;">-</span><span style="color: #000000;">stream))<br />
(define&nbsp;ln</span><span style="color: #000000;">-</span><span style="color: #000000;">stream3&nbsp;(accelerated</span><span style="color: #000000;">-</span><span style="color: #000000;">sequence&nbsp;euler</span><span style="color: #000000;">-</span><span style="color: #000000;">transform&nbsp;ln</span><span style="color: #000000;">-</span><span style="color: #000000;">stream))</span></div>
经过欧拉变换加速过的级数收敛的很快，测测就知道<br /><img src ="http://www.blogjava.net/killme2008/aggbug/200312.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-05-13 23:52 <a href="http://www.blogjava.net/killme2008/archive/2008/05/13/200312.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>《lua 5.0的实现》一文已经有完整翻译</title><link>http://www.blogjava.net/killme2008/archive/2008/05/09/199619.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Fri, 09 May 2008 15:44:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/05/09/199619.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/199619.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/05/09/199619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/199619.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/199619.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 在云风的blog上看到，已经有人做了完整的翻译。在<a href="http://www.codingnow.com/2000/download/The%20Implementation%20of%20Lua5.0.pdf">这里</a>下载。那天arbow还在问我，最后两部分怎么不翻了，今天晚上看见这blog才又想起这么回事，看了下过去的翻译，原来也翻到第7部分虚拟机咯，不过既然已经有了不错的中文版了，就不献丑了。我的兴趣转移的太快，前两周还在读cindy、mina源码，研究nio，现在又对AOP产生了兴趣，特意学了caesarj语言，这东西对习惯了Ruby的我，实在是有点郁闷；在目前的jvm指令架构里，折腾open class、mixin，还是不那么自然，不过作为AspectJ的扩展，还是有学习的价值的。自己有过想法，每年学一门新语言，caesarj算不上，那么python如何？其实我在学在用咯。不过python没有带来更大的惊喜，python中规中矩，感觉类似动态语言中的java，没有像刚接触scheme带来的眼前一亮，而我是需要新鲜感的人，也许传说中的很难理解的haskell是我的下一个学习对象。<br /><img src ="http://www.blogjava.net/killme2008/aggbug/199619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-05-09 23:44 <a href="http://www.blogjava.net/killme2008/archive/2008/05/09/199619.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Ruby中实现stream</title><link>http://www.blogjava.net/killme2008/archive/2008/05/08/199367.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Thu, 08 May 2008 14:32:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/05/08/199367.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/199367.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/05/08/199367.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/199367.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/199367.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 流是通过延时求值实现的，Ruby中实现stream也是可以做到，可惜就是没有尾递归优化。按照sicp，首要的是两个函数：delay和force：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;mem_proc(exp)<br />
&nbsp;&nbsp;alread_run</span><span style="color: #000000;">=</span><span style="color: #000000;">false<br />
&nbsp;&nbsp;result</span><span style="color: #000000;">=</span><span style="color: #000000;">false<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;!alread_run<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result</span><span style="color: #000000;">=</span><span style="color: #000000;">exp.call<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;alread_run</span><span style="color: #000000;">=</span><span style="color: #000000;">true<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;result<br />
&nbsp;&nbsp;&nbsp;&nbsp;end<br />
&nbsp;&nbsp;}<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;force(delayed_object)<br />
&nbsp;&nbsp;delayed_object.call<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;delay(exp)<br />
&nbsp;&nbsp;mem_proc(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">{exp})<br />
end</span></div>
&nbsp;&nbsp;&nbsp; delay函数返回延时对象，就是对于未来某个时间求值表达式的承诺；force函数以延时对象为参数，进行相应的求值工作，这里的mem_proc用于记忆已经求值过的表达式。定义stream的constructor和selector函数：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;cons_stream(a,b)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;a,delay(b)<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_car(s)<br />
&nbsp;&nbsp;s[0]<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_cdr(s)<br />
&nbsp;&nbsp;force(s[</span><span style="color: #000000;">1</span><span style="color: #000000;">])<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_null?(s)<br />
&nbsp;&nbsp;s.nil?&nbsp;</span><span style="color: #0000ff;">or</span><span style="color: #000000;">&nbsp;s</span><span style="color: #000000;">==</span><span style="color: #000000;">[]<br />
end</span></div>
&nbsp;&nbsp;&nbsp; 用Ruby中的数组充当&#8220;粘合剂&#8221;，stream_car直接返回第一个元素，而stream_cdr需要用force求值表达式，履行承诺。另外，将空数组[]作为the-empty-stream。再定义几个高阶函数，map和foreach，其他如filter与此类似：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_enumerate_interval(low,high)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;low</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">high<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;[]<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;cons_stream(low,stream_enumerate_interval(low.succ,high))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;end<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_ref(s,n)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;n</span><span style="color: #000000;">==</span><span style="color: #000000;">0<br />
&nbsp;&nbsp;&nbsp;&nbsp;stream_car(s)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;stream_ref(stream_cdr(s),(n</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;end<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_map(proc,s)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;stream_null?(s)<br />
&nbsp;&nbsp;&nbsp;&nbsp;[]<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;cons_stream(proc.call(stream_car(s)),stream_map(proc,(stream_cdr(s))))&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;end<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_for_each(proc,s)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;stream_null?(s)<br />
&nbsp;&nbsp;&nbsp;&nbsp;:done<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;proc.call(stream_car(s))<br />
&nbsp;&nbsp;&nbsp;&nbsp;stream_for_each(proc,stream_cdr(s))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;end<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;display_stream(s)<br />
&nbsp;&nbsp;stream_for_each(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">{</span><span style="color: #000000;">|</span><span style="color: #000000;">item</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;puts&nbsp;item},s)<br />
end<br />
</span><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;stream_filter(pred,s)<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;stream_null?(s)<br />
&nbsp;&nbsp;&nbsp;&nbsp;[]<br />
&nbsp;&nbsp;elsif&nbsp;pred.call(stream_car(s))<br />
&nbsp;&nbsp;&nbsp;&nbsp;cons_stream(stream_car(s),stream_filter(pred,stream_cdr(s)))<br />
&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;"><br />
&nbsp;&nbsp;&nbsp;&nbsp;stream_filter(pred,stream_cdr(s))&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;end<br />
end</span></div>
<br />
&nbsp;&nbsp;&nbsp; 最后，看下例子：<br />
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #000000;">puts&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">s:</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
s</span><span style="color: #000000;">=</span><span style="color: #000000;">stream_enumerate_interval(</span><span style="color: #000000;">1</span><span style="color: #000000;">,</span><span style="color: #000000;">5</span><span style="color: #000000;">)<br />
display_stream(s)<br />
puts&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">odd_s:</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
odd_s</span><span style="color: #000000;">=</span><span style="color: #000000;">stream_filter(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">{</span><span style="color: #000000;">|</span><span style="color: #000000;">x</span><span style="color: #000000;">|</span><span style="color: #000000;">&nbsp;x</span><span style="color: #000000;">%</span><span style="color: #000000;">2</span><span style="color: #000000;">==</span><span style="color: #000000;">1</span><span style="color: #000000;">},s)<br />
display_stream(odd_s)<br />
puts&nbsp;</span><span style="color: #800000;">"</span><span style="color: #800000;">ss:</span><span style="color: #800000;">"</span><span style="color: #000000;"><br />
ss</span><span style="color: #000000;">=</span><span style="color: #000000;">stream_map(</span><span style="color: #0000ff;">lambda</span><span style="color: #000000;">{</span><span style="color: #000000;">|</span><span style="color: #000000;">x</span><span style="color: #000000;">|</span><span style="color: #000000;">x</span><span style="color: #000000;">*</span><span style="color: #000000;">x},s)<br />
display_stream(ss)</span></div>
<br />
<br />
<br /><img src ="http://www.blogjava.net/killme2008/aggbug/199367.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-05-08 22:32 <a href="http://www.blogjava.net/killme2008/archive/2008/05/08/199367.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用Rope来高效处理长字符串</title><link>http://www.blogjava.net/killme2008/archive/2008/05/05/198532.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Mon, 05 May 2008 10:41:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/05/05/198532.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/198532.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/05/05/198532.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/198532.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/198532.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 前段时间看了这篇文章《<a href="http://www.ibm.com/developerworks/cn/java/j-ropes/index.html">Ropes：理论与实践</a>》。这两天为了提高工作中某个系统对外接口的效率，才认真学习了一番。本质上Ropes是将字符串表示为一棵二叉树，特别适用于长字符串的处理，貌似c++ STL库中也有这么个实现。具体实现和原理还是看这篇<a href="http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol25/issue12/spe986.pdf">paper</a>。《<a href="http://www.ibm.com/developerworks/cn/java/j-ropes/index.html">Ropes：理论与实践</a>》一文中给出的测试数据相当惊人，Ropes比之String和StringBuffer在append,insert,delete等操作上的效率都有一个数量级以上的差距。跑下作者给出的测试程序，其实在测试的字符串不是很长的情况下，这个差距并没有那么大，这也从侧面说明了Rope的应用范围：即只有在大量修改大型字符串的应用程序中才能看到明显的性能提升。那么是否可以用Rope替代StringBuffer做append生成字符串（比如我要的生成xml)。作者也说啦：<br />
&nbsp; &#8220;由于 <code>Rope</code> 的附加性能通常比 <code>StringBuffer</code> 好，这时使用 rope
是否有意义呢？答案还是否。不论何时将输入的数据组合在一起形成格式化输出时，最漂亮最有效的方法是使用模板引擎（例如 StringTemplate
或 FreeMarker）。这种方法不仅能干净地将表示标记与代码分开，而且模板只进行一次编译（通常编译为 JVM
字节码），以后可以重用，从而使它们拥有极佳的性能特征。&#8221;<br />
<br />
&nbsp;&nbsp;&nbsp; 我用Rope for java替代了StringBuffer做XML生成，效率提升在5%-30%左右，xml字符串不是很长，这个提升显然有限，也带来了不必要的复杂度。因此最后还是用Velocity模板引擎来生成XML，测试的结果效率并没有多少改善，但是显然更容易维护和开发了。回到Rope的话题，我用Ruby实现了个版本，Rubyforge上有一个Rope的实现，但是看了源码，与paper所述算法有点差异，因此照着Rope for java也实现了一个<a href="http://code.google.com/p/rope4r/">Rope4r</a>。测试的结果证明在长字符串的累积操作上，Rope4r的append比之String的+=性能可以快上3倍左右，而如果采用String的&lt;&lt;操作，不是immutable的，当然是最快了；比较郁闷的是slice和insert操作都比String的慢上几倍，因为Ruby的String、Array的内建对象都是直接用c写成并做了优化的，我猜测原因在这。<br />
<br />
<br /><img src ="http://www.blogjava.net/killme2008/aggbug/198532.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-05-05 18:41 <a href="http://www.blogjava.net/killme2008/archive/2008/05/05/198532.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>说说迭代中的需求变更（更正）</title><link>http://www.blogjava.net/killme2008/archive/2008/04/28/196940.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Mon, 28 Apr 2008 13:04:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/04/28/196940.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/196940.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/04/28/196940.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/196940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/196940.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 我们现在做的项目是典型的小型项目，整个组也就4、5个人，一个迭代周期基本在两周左右。尽管没有明确有&#8220;迭代&#8221;这么说法，却是以业务人员的策划案做分期实现。这个分期，按我的理解其实就是迭代。最近发现的一个问题是，在迭代开始后，业务人员却没有办法保证需求在这个迭代周期完成前的稳定性，甚至在各个模块集成之前，大家就提出N多意见，并且这些意见很多时候都是前后矛盾的。特别是在客户端的开发上，显然，客户端UI和操作习惯方面是最多变的地方。可怜我们公司唯一的MM程序员快陷入变更频繁的泥潭了，改过去改回来是家常便饭。其实也是她过于老实，要我来说，你们要改，可以，但是我要向业务人员确认，他是我唯一的变更来源，你们有什么需求向他反应，他来收集和甄别。在《敏捷软件开发》中说到，迭代开始后，客户就同意不再更改当次迭代中的素材的定义和优先级别，可惜这一点貌似很难做到了，业务人员经常屈从于管理层或者其他小组意见的压力。在我看来，在当次迭代完成前的所有建议或者说需求，都可以收集起来，由业务人员负责收集、甄别和决定，放入下一个迭代版本的开发，因为我们的迭代周期一般也在两周左右，这个周期足够辨别这些需求的合理性和响应需求的及时性，而不是像现在这样大家七嘴八舌地提意见，技术人员疲于奔命，乃至于发脾气（入夏真是脾气坏的季节）；系统各部分迟迟无法进行集成测试，造成新的修改意见没有做完，预定的迭代版本的更无法按时完成的局面。<br /><img src ="http://www.blogjava.net/killme2008/aggbug/196940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-04-28 21:04 <a href="http://www.blogjava.net/killme2008/archive/2008/04/28/196940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一段妙文</title><link>http://www.blogjava.net/killme2008/archive/2008/04/28/196883.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Mon, 28 Apr 2008 09:33:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/04/28/196883.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/196883.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/04/28/196883.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/196883.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/196883.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 山僧昔在双径归堂，未及一月，忽于睡中疑著万法归一，一归河处？自此疑情顿发，废寝忘食，东西不辨，昼夜不开，开单展钵，屙屎放尿，至于一动一静，一语一
默，总只是个一归何处，更无丝毫异念，了不可得。正如钉钉胶粘，摇撼不动，虽在稠人广众之中，如无一人相似。从朝至暮，从暮至朝，澄澄湛湛，卓卓巍巍，纯
清绝点，一会万年，境寂人忘，如痴如兀，不觉至第六日，随众在三塔讽经次，抬头看见五祖演和尚真，蓦然触发日前仰山老和尚问拖死尸句子，直得虚空粉碎，大
地平沈，物我两忘，如镜照境，百丈野狐，狗子佛性，青州布衫，女子出定语，从头密举验之，无不了了。般若妙用，信不诬矣。（见《古尊宿语录》）<br />
<br />
&nbsp;&nbsp;&nbsp; 想来王阳明龙场悟道的感觉也不过如此。王阳明的心学归结就是&#8220;致良知&#8221;三个字，不说&#8220;致&#8221;，仅&#8220;良知&#8221;二字就是何等宝贵？看看安徽阜阳儿童们的命运，这个接二连三发生诡异事件的地方，当地的公仆们可有&#8220;良知&#8221;在心中？我们保留了文化传统，却抛弃了传统文化。<br /><img src ="http://www.blogjava.net/killme2008/aggbug/196883.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-04-28 17:33 <a href="http://www.blogjava.net/killme2008/archive/2008/04/28/196883.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>热烈庆祝偶的blog广告位售出</title><link>http://www.blogjava.net/killme2008/archive/2008/04/23/194940.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Wed, 23 Apr 2008 01:38:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/04/23/194940.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/194940.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/04/23/194940.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/194940.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/194940.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 在blogjava和javaeye上的两个blog的顶部广告都售出了，热烈庆祝：）<img src="/CuteSoft_Client/CuteEditor/images/emsmiled.gif" alt="" align="absmiddle" border="0" /><img src="/CuteSoft_Client/CuteEditor/images/emsmiled.gif" alt="" align="absmiddle" border="0" /> 准备啥时候去绑定个支付宝，把我的一块五毛钱取出来，刚好够买两个包子<img src="/CuteSoft_Client/CuteEditor/images/emsmiled.gif" alt="" align="absmiddle" border="0" /> 。还是阿里妈妈好，来的实在，google广告的1.2美元这辈子看来是指望不上了，人民币还在持续升值中......<img src ="http://www.blogjava.net/killme2008/aggbug/194940.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-04-23 09:38 <a href="http://www.blogjava.net/killme2008/archive/2008/04/23/194940.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一切为了跨平台</title><link>http://www.blogjava.net/killme2008/archive/2008/04/22/194849.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Tue, 22 Apr 2008 10:12:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/04/22/194849.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/194849.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/04/22/194849.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/194849.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/194849.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 推荐两篇blog：<br />
<a href="http://blog.csdn.net/haoel/archive/2008/03/27/2224055.aspx">《java NIO 类库selector机制解析（上）》</a><br />
<a href="http://blog.csdn.net/haoel/archive/2008/03/27/2224069.aspx">《java NIO 类库selector机制解析（下）》</a><br />
<br />
&nbsp;&nbsp;&nbsp; 有一个奇怪的现象引出的话题，为了<font size="3"><font face="Times New Roman">Selector.wakeup功能做到跨平台，</font></font><font size="3"><span style="font-family: 宋体;" lang="ZH-CN">每个</span><font face="Times New Roman">Selector.open()</font><span style="font-family: 宋体;" lang="ZH-CN">时，在</span><font face="Times New Roman">Windows</font><span style="font-family: 宋体;" lang="ZH-CN">会建立一对自己和自己的</span><font face="Times New Roman">loopback</font><span style="font-family: 宋体;" lang="ZH-CN">的</span><font face="Times New Roman">TCP</font><span style="font-family: 宋体;" lang="ZH-CN">连接；在</span><font face="Times New Roman">Linux</font><span style="font-family: 宋体;" lang="ZH-CN">上会开一对</span><font face="Times New Roman">pipe</font><span style="font-family: 宋体;" lang="ZH-CN">（</span><font face="Times New Roman">pipe</font><span style="font-family: 宋体;" lang="ZH-CN">在</span><font face="Times New Roman">Linux</font><span style="font-family: 宋体;" lang="ZH-CN">下一般都是成对打开）。</span></font>java为了跨平台真是无所不用其极，此中冷暖谁知啊。<br />
<br /><img src ="http://www.blogjava.net/killme2008/aggbug/194849.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-04-22 18:12 <a href="http://www.blogjava.net/killme2008/archive/2008/04/22/194849.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>17岁少年杀人事件</title><link>http://www.blogjava.net/killme2008/archive/2008/04/19/194170.html</link><dc:creator>dennis</dc:creator><author>dennis</author><pubDate>Sat, 19 Apr 2008 04:48:00 GMT</pubDate><guid>http://www.blogjava.net/killme2008/archive/2008/04/19/194170.html</guid><wfw:comment>http://www.blogjava.net/killme2008/comments/194170.html</wfw:comment><comments>http://www.blogjava.net/killme2008/archive/2008/04/19/194170.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/killme2008/comments/commentRss/194170.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/killme2008/services/trackbacks/194170.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp; 17日的南方周末的一篇报道《17岁的残酷青春》，让我心神不宁，甚至昨日晚上做了噩梦。我很奇怪，每次看报纸，看到不正常的事总是愤愤地发表一番评论，乃至于老婆认为我有毛病：）。原文在<a href="http://www.nanfangdaily.com.cn/southnews/zmzg/200804170099.asp">这里</a><br />
&nbsp;&nbsp;&nbsp; 想的最多的是一个词，不停的在脑海中打转——异化。是什么样的原因让一个17岁的少年做出如此残忍的事情？对自己爱慕的同班同学下手，并冷静地分尸抛尸。是什么样的因素让他的情感异化到这样的地步？不热爱生命，不尊重生命。如果不热爱自己的生命，那是不可能尊重生命的。仅仅是网游的问题吗？这样的总结是不是太苍白了。文章的最后，记者听到少年们说他们大多数都有心理问题，就问是什么问题呢？&#8220;他和其他几名&#8220;90后&#8221;学生互相看了看，一脸茫然&#8221;。茫然是正常的，茫然和郁闷也是我中学时代最常用的字眼，认为全世界没有人理解自己，其实问题在于我没有想去理解这个世界，理解身边的人，特别是父母。可是再怎么茫然，不应该也不至于做出如此残忍的事情，对生命的漠视到如此程度，有没有想过？那可是一条鲜活的生命啊！作为人的情感是怎么异化到这样的程度？其实从文中也可以看出蛛丝马迹：长期与父母分离，家庭充斥着&#8220;吵架&#8221;、&#8220;离家出走&#8221;，沉迷于网络，喜欢血腥读物和影视作品，个性上的孤僻和冲动，对学校生活的厌恶......而根本的原因在哪？我不知道答案，社会问题？电影分级什么时候出来？网吧禁止未成年人入内什么时候真正做到过？留守孩子的心理问题谁有关注过？教育问题？填鸭式的、应试为目的的教育什么时候能真正改革？我们时候才能真正地以培养&#8220;<strong>人</strong>&#8221;、培养合格的公民作为我们的教育目标？这一连串的问题可以继续追问下去，却不知道答案什么时候会存在。<br />
&nbsp;&nbsp;&nbsp; 我现在还不敢再去看一遍《
牯岭街少年杀人事件》，我昨天还在想，伟大的电影总是不敢看第二遍，看这样的电影的时候，感觉灵魂在煎熬。<br />
&nbsp;&nbsp;&nbsp; 最后，请热爱生活。<img src ="http://www.blogjava.net/killme2008/aggbug/194170.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/killme2008/" target="_blank">dennis</a> 2008-04-19 12:48 <a href="http://www.blogjava.net/killme2008/archive/2008/04/19/194170.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>