<?xml version="1.0" encoding="gb2312"?>
<rss version="2.0">
<channel>
<title><![CDATA[RedCastle]]></title>
        <image>
        <title>http://hi.baidu.com</title>
        <link>http://hi.baidu.com</link>
        <url>http://img.baidu.com/img/logo-hi.gif</url>
        </image>
<description><![CDATA[泡泡雪言]]></description>
<link>http://hi.baidu.com/redcastle</link>
<language>zh-cn</language>
<generator>www.baidu.com</generator>
<ttl>5</ttl>


<item>
        <title><![CDATA[宝贝，你是我的键盘啊]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/445745a9d6f973f61e17a299.html]]></link>
        <description><![CDATA[
		
		<p>我一直想知道，到底什么是一个程序员最大的关怀？这可能要问问程序员每天接触最多的东西是什么？那该是键盘了。就像每个男人都不喜欢带套做爱，每个程序员都拥有一款自己喜欢的键盘，那样才能在每日的工作里得到最大的快感。编程工作跟做爱一样，都是在取悦别人，只有自己在这个过程中得到乐趣才是最重要的，才能让你知道自己还是活着的。那么，给程序员最大的关怀，就是，给他样子最酷手感最好的键盘。</p>
<p><br>
还记得有次跟廖去逛笔记本，他说键盘好才是王道，一定要有好的手感。一个个试过去，都觉得不爽。最后找到某台本（牌子我不方便说），闭上眼，手放在上面来来回回运动起来，感觉非常不错。廖的样子帅呆了，就像初夜一样，哈哈。所以，什么能跟一个程序员一辈子？CPU？显卡？都是扯淡，参数年年升级，第一次跟我的586早就不知道去哪了。其他设备都是情妇，每次新鲜出现在你面前，都能让你兴奋不已，但玩不了几年又有新的更美丽的出来就要换了。只有顺手的键盘（和鼠标），才能让你的心稳定下来，键盘是编程灵感的开始，也是编程灵感的终结。我相信，大多数优秀的程序员都跟凯文米特尼克差不多，只要触碰到键盘，心中的比特就开始跳动。就连我这个不入流的编程玩家，手放在键盘上，心里才踏实。有手感才有灵感。至于，手中无剑，心中也无剑的最高境界，不能说不可能，但对于我们来讲，只是一个美好的愿望了。</p>
<p><br>
听过高级音响设备的人是无法再忍受差劲的设备，也就不能享受低价的乐趣了。我想，对于键盘也是一样，还好我没有用过顶级的键盘，还能忍受自己的这款杂牌货。我一直不喜欢笔记本的键盘，按键太薄，弹性不好，一点感觉都没有，就像一个胸部平平的女人，怎么能让你产生性趣。还有就是太紧凑，一点都施展不开。原来实验室里CX大牛的键盘感觉很好，特别是那个空格键，不知道是怎么被他调教出来的，简直是极品，好像会跟你拇指一起动一样，连声音都那么诱人，无敌了。后来实验室调机子，他还念念不忘，把那个键盘找了回来。看来，好键盘不一定要名牌，调教一样重要。</p>
<p><br>
因为换了环境，要装一台电脑了，现在的CPU的概念越来越炫了，这是让人心动不已，可惜&ldquo;爱妻&rdquo;(i7)，&ldquo;爱我&rdquo;(i5)，太贵了，爱不起啊。一个游戏流的朋友选键盘，我也跟着凑凑热闹。他有明确的定位，游戏键盘。可是我要什么呢？游戏键盘是不是太花哨了啊。对于程序员来说，低调才是最酷的，低调实用，又有顶级大师代言，那一定是不二之选。于是我在网上发现了这个HHKB pro。感觉跟公司那几台绿字黑屏的古董机的键盘很像，实在是酷毙了！但是这个&ldquo;古董&rdquo;还是爱不起啊。品味是钱烧出来的。</p>
<p><br>
虽然说砖头折凳都能杀人，为啥一定要烧钱买宝剑呢？江湖不是打打杀杀，醉心于终极武学，体验巅峰感觉，那才是江湖的道理。你想想，如果你站在华山之巅，威风凛凛，而自己手里是一块破碎的砖头，就算观众不说什么，你自己感觉是不是也不爽呢？而一把宝剑在手，你至少可以装酷一把：宝剑啊宝剑，我苦练几十年年，没想到陪我到最后的只有你啊！也许资格老点的程序员真能体会到这种感觉。</p>
<p> </p>
<p>如果一个程序员对心爱的人说，宝贝，你是我的键盘啊。那是属于程序员的最美的爱情表达。</p>
<p>MM：我是你的什么？</p>
<p>程序员：你是我的键盘啊！</p>
<p>MM：啊？原来我只是键盘啊！</p>
<p>程序员：这样，我就可以一辈子抚摸你美丽的脸庞了。</p>
<p>。。。。。。</p> <a href="http://hi.baidu.com/redcastle/blog/item/445745a9d6f973f61e17a299.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%D2%E2%CA%B6%C1%F7">意识流</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/445745a9d6f973f61e17a299.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-19  22:24</pubDate>
        <category><![CDATA[意识流]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/445745a9d6f973f61e17a299.html</guid>
</item>

<item>
        <title><![CDATA[一叶知秋，有时候，只言片语就能抛砖引玉]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/c568dcb43a559e798bd4b2b2.html]]></link>
        <description><![CDATA[
		
		<p>ps：以下文字都是[只言片语]，可能没有任何联系，但有意思。</p>
<p>1.科学带给人类相互残杀的工具，而宗教带来的是杀人的动机。</p>
<p>2.有位生物系的学生对他女朋友痴迷鲜花非常不理解：&ldquo;为什么一定要在过节的时候让我送你一簇植物的生殖器你才开心呢？&rdquo;</p>
<p>3.一位程序员好奇竟然有人半夜闹钟起来偷菜：&ldquo;那么费劲改动人家数据库里的一个值，有意思吗？&rdquo;</p>
<p>4.无心拈花惹草，只想一览巅峰风景。</p>
<p>5.Life is not measured by the number of breaths we take but by the places and moments that take our breadth away.</p>
<p>6.床上你同样卖力，那笑声让你自己都感到陌生。</p> <a href="http://hi.baidu.com/redcastle/blog/item/c568dcb43a559e798bd4b2b2.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%D2%E2%CA%B6%C1%F7">意识流</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/c568dcb43a559e798bd4b2b2.html#comment">查看评论</a>]]></description>
        <pubDate>2009-11-15  14:54</pubDate>
        <category><![CDATA[意识流]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/c568dcb43a559e798bd4b2b2.html</guid>
</item>

<item>
        <title><![CDATA[樱]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/fa36ad18b4971a0f35fa41b3.html]]></link>
        <description><![CDATA[
		
		<p align="center">《樱》</p>
<p align="center">词：有森聡美</p>
<p align="center">选择了柔软且温暖的地方 <br>
没有发现在人们笑容的背后的眼泪 <br>
一生就这么自欺欺人的过来了 <br>
我想回头看度过的每一日</p>
<p align="center">为了生存下去 樱花撒落也没看见 <br>
连花开的梦 也不知道 <br>
何时才能迎来新鲜的日子 <br>
用我的一生 去探索</p>
<p align="center">向着冰冷与猛烈的风 <br>
不闭上眼睛 努力地向目的地前进 <br>
想要变得更坚强 哪怕一点点也好 <br>
每当流泪的时候 温柔也习以为常</p>
<p align="center">樱花飞舞 多少梦想开花 <br>
不断抬头仰望 淡红色的樱花 <br>
何时才能迎来新鲜的日子 <br>
用我的一生 散发出光芒</p>
<p align="center">为了生存下去 樱花撒落也没看见 <br>
连花开的梦 也不知道 <br>
何时才能迎来新鲜的日子 <br>
用我的一生 去探索</p>
<p align="center"><br>
樱花飞舞 多少梦想开花 <br>
不断抬头仰望 淡红色的樱花 <br>
何时才能迎来新鲜的日子 <br>
用我的一生 散发出光芒</p> <a href="http://hi.baidu.com/redcastle/blog/item/fa36ad18b4971a0f35fa41b3.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/fa36ad18b4971a0f35fa41b3.html#comment">查看评论</a>]]></description>
        <pubDate>2009-05-24  21:15</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/fa36ad18b4971a0f35fa41b3.html</guid>
</item>

<item>
        <title><![CDATA[[一句话技巧]如何解压.gz文件]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/a21ddff90a65e351252df20f.html]]></link>
        <description><![CDATA[
		
		<p>gzip -d xxx.tar.gz|tar xvpf - -C target_dir</p>
<p>解释：gzip -d 解压.gz文件，tar -xf解压.tar文件</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%D2%BB%BE%E4%BB%B0%BC%BC%C7%C9">一句话技巧</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/a21ddff90a65e351252df20f.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-24  09:03</pubDate>
        <category><![CDATA[一句话技巧]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/a21ddff90a65e351252df20f.html</guid>
</item>

<item>
        <title><![CDATA[［一句话技巧］在ubuntu下显示隐藏文件]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/f05d7ef07a35d4cb7931aa7b.html]]></link>
        <description><![CDATA[
		
		在ubuntu的File Browser里，按Ctrl+H可以显示隐藏文件和文件夹。 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%D2%BB%BE%E4%BB%B0%BC%BC%C7%C9">一句话技巧</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/f05d7ef07a35d4cb7931aa7b.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-20  15:55</pubDate>
        <category><![CDATA[一句话技巧]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/f05d7ef07a35d4cb7931aa7b.html</guid>
</item>

<item>
        <title><![CDATA[我的博客，大家的意见]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/400e81011f7fe0de267fb574.html]]></link>
        <description><![CDATA[
		
		<p>很久不写文章了，主要是最近忙着一些事情，阅读多了，笔记也厚了，但是触动心灵的心得少了。</p>
<p>作者以后的生活也会发生不小的变化，博客内容也该做出些调整，希望光顾的朋友给点意见，为了出现更好的文章，闪出更多的火花！</p>
<p>我的博客，大家的意见！</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%C4%AC%C8%CF%B7%D6%C0%E0">默认分类</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/400e81011f7fe0de267fb574.html#comment">查看评论</a>]]></description>
        <pubDate>2009-04-12  16:30</pubDate>
        <category><![CDATA[默认分类]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/400e81011f7fe0de267fb574.html</guid>
</item>

<item>
        <title><![CDATA[Google Music升级了]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/c8d5993d743f9608baa1679a.html]]></link>
        <description><![CDATA[
		
		<p>google music是一个试听/下载正版mp3的网站，今天登上后发现升级了，添加了一个很有潜质的功能：泡泡挑歌（<a href="http://www.google.cn/music/songscreener">http://www.google.cn/music/songscreener</a>）。</p>
<p>通过调节<font size="5">节奏</font>、<font size="5">声调</font>、<font size="5">音色</font>、<font size="5">年代</font>、<font size="5">歌手</font>、<font size="5">流派</font>、<font size="5">语言</font>等属性来自动挑选。一个很不错的尝试，此功能必火！</p> 
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%CD%E6%CB%A3">玩耍</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/c8d5993d743f9608baa1679a.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-29  22:37</pubDate>
        <category><![CDATA[玩耍]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/c8d5993d743f9608baa1679a.html</guid>
</item>

<item>
        <title><![CDATA[[转]10分钟LaTeX入门]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/c789053b6658e3e214cecb6c.html]]></link>
        <description><![CDATA[
		
		<em>1 安装CTEX中文套件<br>
<br>
1.1 初始安装<br>
下载ctex中文套件(www.ctex.org).<br>
安装ctex中文套件,自定义安装到D盘.<br>
升级ghostscript.<br>
升级gsview,在options-&gt;easy configure下选择升级的ghostscript.<br>
升级winedt,直接覆盖安装.<br>
MiKTEX使用升级向导升级.<br>
<br>
1.2 升级添加宏包<br>
已编译的,有.sty或.cls文件的,只需把文件放在localtexmf\tex\LaTeX\下的某个目录下,然后再刷新系统的文件名数据库就可以使用了.teTeX和fpTeX使用texhash命令.<br>
或者把这些宏包和TEX源文件放在同一目录下,不用刷新文件名数据库,但只有同一个目录下的文件可以使用这些宏包.<br>
如果使用的是宏包的源文件.先读readme文件,对.ins文件运行LaTeX命令生成.sty文件,对.dtx文件运行LaTeX命令生成帮助文档.<br>
<br>
2 软件配置<br>
<br>
2.1 winedt<br>
<br>
2.1.1 缺省定义gsview工具按钮有可能无法使用.需要在注册表更改psfile下面的shell-&gt;open-&gt;command键值.<br>
2.1.2 运行WinEdt目录下的宏可以添加metapost工具.<br>
2.1.3 右键点击WinEdt状态栏,确认show custom info a已选取.点击对应的状态栏可以激活--src选项,这个是使用dvi search的必要条件.<br>
<br>
3 新手入门<br>
<br>
3.1 参考资料<br>
[lshort中文版],[ctex-faq],薛定宇著[LaTeX科学文件处理软件入门].<br>
清泉编制文档模板.<br>
<br>
3.2 测试LaTeX<br>
<br>
3.2.1 英文例子<br>
\documentclass{article}<br>
\begin{document}<br>
This is a test file.<br>
\end{document}<br>
这个例子需要保存为.tex后缀的文件,然后用LaTeX编译,生成的DVI文件可以用DVI浏览器进行查看.<br>
或者用dvips转换成PostScript文件.假设文件名是test.ctx.生成PostScript 文件的完整编译过程是:<br>
LaTeX test<br>
dvips test<br>
<br>
3.3 编写TEX文档的编辑器<br>
windows下使用winedt,或者是UltraEdit,Editplus.<br>
linux下使用vi,Emacs.<br>
<br>
4 中文处理<br>
<br>
4.1 CJK还是CCT<br>
推荐使用CJK处理中文.<br>
CJK比CCT的优越之处有以下几点:<br>
1. 字体定义采用LaTeX NFSS标准,生成的DVI文件不必像CCT那样需要用patchdvi处理后才能预览和打印.而且一般GB编码的文件也不必进行预处理就可直接用LaTeX命令进行编译.<br>
2. 可使用多种TrueType字体和Type1字体,生成的PDF文件更清楚,漂亮.<br>
3. 能同时在文章中使用多种编码的文字,如中文简体繁体日文韩文等.<br>
当然,CCT在一些细节上,如字体可用中文字号,字距,段首缩进等更符合中文的习惯.而CJK就没有针对中文习惯指定特殊的排版标准.<br>
<br>
4.2 CJK的例子<br>
\documentclass{article}<br>
\usepackage{CJK}<br>
\begin{document}<br>
\begin{CJK*}{GBK}{kai}<br>
这是中文楷体字。<br>
\end{CJK*}<br>
\end{document}<br>
<br>
4.3 CJK和CJK*<br>
不建议使用CJK模式.<br>
CJK*模式自动忽略中文字符间的所有空格.加空格的方法是在空格前面加上\ 字符.实际上CJK*模式忽略中文字符后面的空格,因此中文后面如果接着英文,必须加上保护的空格\ 或者~ 符号,否则可能造成断行错误.<br>
<br>
4.4 中英文混排时正确分行<br>
首先,英文标点符号后要留空格,这是英文的习惯,否则TEX无法断句.<br>
其次,要用空格隔开中英文字符,TEX才能正确分行.<br>
CJK宏包重新定义了符号~的意义.~的原始定义是不可断行的空格,CJK将其重定义成一个比较合适的弹性距离,大约相当于四分之一个汉字宽度,用于分隔中英文字符.我们通过使用命令<br>
\CJKtilde<br>
来实现~的重定义.如果要恢复原始定义,可以用命令<br>
\standardtilde<br>
注意:在CJK*模式下中文字符后面的空格会被忽略,因此中文字符后面必须加上保护的空格\ 或者~符号来隔开英文字符.<br>
<br>
4.5 生成支持中文拷贝粘贴的PDF文件<br>
生成可以拷贝粘贴中文的PDF文件目前只有dvipdfmx(原名dvipdfm-cjk)可以做到,它必须配置成直接使用中文TrueType字库.<br>
<br>
4.6 CJK中使用的字库<br>
可以使用矢量字库如Type1或是TrueType字库,也可以使用点阵字库如pk字库.<br>
在CJK中可以使用Type1字库和TrueType字库,都能产生很好效果的输出,但有许多细微的差别,输出结果取决于所用的工具.<br>
1. 使用dvips生成PostScript 文件<br>
dvips可以直接使用Type1字库,生成的PostScript文件中包含了字符的矢量描述,具有很好的缩放效果.<br>
dvips不能直接使用TrueType字库,因此必须通过ttf2pk生成中间的pk字库,这是一种点阵字库,所以生成的PostScript文件在效果较差.<br>
2. 使用dvipdfm生成PDF文件和dvips类似,可以直接使用Type1字库或者通过ttf2pk间接使用TrueType字库.<br>
3. 使用pdfLaTeX生成PDF文件可以直接使用两种字库,因此都可以产生效果很好的输出.<br>
4. 使用dvipdfmx生成PDF文件可以直接使用两种字库,因此都可以产生效果很好的输出.而且直接使用TrueType字库时生成的PDF文件是唯一能支持对中文内容进行正常拷贝粘贴的.(推荐使用)<br>
<br>
5 帮助文档<br>
<br>
5.1 宏包文档<br>
TEX系统安装时候带的LaTeX宏包,都可以在TEX 的安装目录下的<br>
texmf\doc\LaTeX<br>
找到<br>
<br>
5.2 参考书<br>
LaTeX: A Document Preparation System<br>
LaTeX for Word Processor Users<br>
lshort (The Not So Short Introduction to LaTeX2e)<br>
A Gentle Introduction to TEX<br>
LaTeX2插图指南<br>
LaTeX2e for class and package writers<br>
The TeX Book<br>
LaTeX Manual<br>
<br>
5.3 查询LaTeX命令和参数的缺省定义<br>
首先你可以直接搜索相应的LaTeX宏包以及同一目录下的其他文件.如果你有宏包的源文件(.dtx) 的话,搜索源文件会更方便些.而且源文件中会有详细的说明.对于这些源文件,可以直接用LaTeX 编译,产生说明文档.LaTeX宏包的源文件一般放在texmf\source\LaTeX\目录下.<br>
例如LaTeX标准文档类的源文件就是texmf\source\LaTeX\base\classes.dtx<br>
如果这些文件里都找不到定义,则有可能在LaTeX内核中定义.你可以搜索texmf\source\LaTeX\base\目录下的其他.dtx文件,所有的LaTeX内核定义都在那里了.<br>
如果还没有的话,那就可能是TEX 的基本命令或者定义了,查询Donald E. Knuth的The TEXbook,CTEX FTP上可以下载该书的源文件.<br>
<br>
5.4 在ctex论坛http://bbs.ctex.org查找资料<br>
<br>
6 排版<br>
查阅参考资料.<br>
<br>
7 LaTeX辅助工具<br>
使用辅助工具可以方便LaTeX的编写工作.<br>
<br>
公式编辑器:<br>
TeXaide<br>
这个是MathType的TeX专用版本.它的使用方法和Word中的公式编辑器一样.<br>
</em><a href="http://www.dessci.com/en/products/texaide/" target="_blank"><em>http://www.dessci.com/en/products/texaide/</em></a><br>
<br>
<em>图形工具:<br>
metagraf<br>
可以生成MetaPost格式图型的制图工具.<br>
</em><a href="http://w3.mecanica.upm.es/metapost/metagraf.php" target="_blank"><em>http://w3.mecanica.upm.es/metapost/metagraf.php</em></a><br>
<em>ImageMagick<br>
多功能图形工具,可以转换图片格式把其他格式转存成eps格式.<br>
</em><a href="http://www.imagemagick.org/" target="_blank"><em>http://www.imagemagick.org/</em></a><br>
<br>
<em>制表工具:<br>
tablas<br>
用图形界面制表,再把表格转换成LaTeX编码.<br>
</em><a href="http://www.informatica.us.es/~calvo/latex.html" target="_blank"><em>http://www.informatica.us.es/~calvo/latex.html</em></a><br> <a href="http://hi.baidu.com/redcastle/blog/item/c789053b6658e3e214cecb6c.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%CD%E6%CB%A3">玩耍</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/c789053b6658e3e214cecb6c.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-17  23:02</pubDate>
        <category><![CDATA[玩耍]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/c789053b6658e3e214cecb6c.html</guid>
</item>

<item>
        <title><![CDATA[[转]可计算理论简介]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/d63fd22a12d01e93033bf69b.html]]></link>
        <description><![CDATA[
		
		<p><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在60年代的中国，如果一个大学生不懂工农业常识，例如混淆了韭菜麦子，可能会受到讥笑。本来，闻道有先后，树业有专工。要求一个领域的人理解另一个领域的知识是有些过分。在今天，如果一个计算机科学的硕士或博士不知道什么是不可判定问题，什么是停机问题，为什么停机问题不可解，什么是NP=?P问题，也有可能会受到讥笑。因为这些问题对于计算机科学而言，太基本、太重要了，它们都属于一门称为可计算理论的学科。是计算机科学研究人员应具备的修养型知识。</em></p>
<p><br>
<em>&nbsp;&nbsp;&nbsp;&nbsp; 可计算理论是关于计算机械本身的数学理论。20世纪前，计算机械总是&rdquo;算计&rdquo;别的对象，很少&rdquo;算计&rdquo;自己。20世纪 30年代，为了要解决一个基础问题，即是否有存在不可判定问题，数理逻辑 学家提出了几种不同的（后来证明是彼此等价的）关于算法的定义，从而建立了可计算性理论。<br>
科学家令计算机械 自己&rdquo;算计&rdquo;自己，奇迹出现了。图灵用对角线方法，把图灵机自己编码，搅进其自己的计算对象中，证明了停机问题不可解。在一定程度上说明了计算机（程序）的能力有限性。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 30年代前期，K.哥德尔和S.C.克林尼等人创立了递归函数论， 将数论函数的算法可计算性描述为递归性。30年代中期， A.M.图灵和E.L.波斯特彼此独立地提出了理想计算机的 概念，将问题的算法可解性描述为在具有严格定义的理想计算机上的可解性。30年代发展起来的算法理论，对 在40年代后期出现的存储程序型计算机的设计思想是有影响的。图灵提出的理想计算机（称为图灵机）中的一 种通用机就是存储程序型的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 可计算理论主要内容有：自动机论与形式语言理论;程序理论(包括程序正确性证明、程 序验证等);形式语义学；算法分析和计算复杂性理 论。自动机理论和形式语言理论是50年 代发展起来的。前者的历史还可以上溯到30年代，因为图灵机就是一类自动机(无限自动机)。50年代以来一些 学者开始考虑与现实的计算机更相似的理想计算机，J. 诺伊曼在50年代初提出了有自繁殖功能的计算机的概念。</em></p>
<p><em>王浩在50年代中期提出了一种图灵机的变种，这是一种 比原来的图灵机更接近现实机器的机器。他还提出一种 存储带上的内容不能清除的机器，并证明这种机器是与图灵机等价的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 60年代前期，又有人提出具有随机存取 存储器的计算机（简称RAM）以及多带图灵机等。 形式语言理论 导源于数理语言学中的乔姆斯基理 论。在这种理论中,形式语言分为四种:①0型语言；②1 型语言;③2型语言;④3型语言。相应地存在着0型、1型、 2 型、3型四种形式文法。1型语言又名上下文有关语言， 2型语言又名上下文无关语言，3型语言又名正则语言。其中2型语言最受人注意。60年代中期,还发现了这四类 语言与四类自动机之间的对应关系（见表形式语言与自 动机的关系） 在上表中，左边所列的语言恰好是右边与之对应的自动机所能识别的语言（见形式语言理论）。 程序设计理论 包括程序正确性证明和程序验证， 它的一些基本概念和方法是40年代后期诺伊曼和图灵等 人提出的。诺伊曼等在一篇论文中提出借助于证明来验证程序正确性的方法。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; J.T.施瓦兹和 M.戴维斯70年代后期提出了一种他们称之为&quot;正确程序 技术&quot;的软件技术。这种方法是先选定成千种基本程序模块，并借助已知的各种验证方法（包括程序正确性证 明）来保证这些基本程序的正确性。然后再提出一组能 保持正确性的程序组合规则。这样，就可以通过不断的 组合，生成各种各样的程序。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 有人指出，程序正确性证明技术所发展出来的&quot;循 环不变式&quot;，即一个程序中的某一循环的入口或出口点 上所附的谓词，有些文献中称作&quot;归纳断言&quot;，可以用来供程序研究用。也就是说，不像过去那样，对一个给 定的程序找出其若干个循环不变式，然后借助这些不变 式来证明这个程序的正确性；而是在编制这个程序之前， 根据对这一程序的要求，找出若干个循环不变式，然后根据这些不变式来生成这个程序。 自动程序设计的概念也是从40年代提出的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 1969年又有人独立地提出了这一想法。 程序语言的形式语法的研究，从50年代中期起有了较大的发展。而形式语义的研究自60年代以来虽有不少 研究工作者从事这方面的工作，提出几种不同的语义理 论，主要是操作语义学、指称语义学或称数学语义学、 公理语义学和代数语义学，但仍没有一种公认在软件技术中够用的形式语义学，因而需要提出一种更适于用到 实际计算中的新的语义学。 在程序正确性证明和形式语义学中应用的程序逻辑， 是60年代末发展起来的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 这是谓词逻辑的一种扩充。原来的谓词逻辑中是没有时间概念的，所考虑的推理关系 是在同一时间里的关系。程序是一种过程，一个程序的 输入谓词与输出谓词之间的逻辑关系就不是同一时间里 的关系。因此，在有关程序性质的推理中，原来的谓词逻辑不够用，需要有一种新的逻辑。 60年代末，E.恩格勒等人创立了算法逻辑。C.A.R. 霍尔也创立了一种程序逻辑。这种逻辑是在原来的逻辑上增加一个程序算子而得到的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 算法分析和计算复杂性理论 关于算法的复杂性的 研究。关于这一领域的名称曾有争论。一般认为，各类具体算法的复杂性的研究称作算法分析，而一般算法复 杂性的研究称作计算复杂性理论。计算复杂性理论原是 可计算理论的一支，是以各种可计算函数(即递归函数) 的计算复杂性（在早期称作&quot;计算难度&quot;）为其研究对象的。可计算性分为理论可计算性和实际可计算性两种。 作为可计算性理论一支的计算复杂性理论，是以前者的 复杂程度为其研究对象的；而作为计算机科学一个领域 的复杂性理论，则是以后者的复杂程度为其研究对象的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 这一分支的基本问题是要弄清楚实际可计算函数类的结构和一些性质。实际可计算性是一个直观的概念。 如何对这一概念进行精确的描述，是一个并不容易的问 题。60年代中期以来，有关的研究工作者一般是以计算时间多项式有界的函数作为实际可计算的函数。这实际 上是一个论题，而不是一个可以在数学中加以证明或否 证的命题。有人指出，在有关的多项式次数较高时，很难说是实际可计算的。</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 另一个带根本性的问题是：确定性机器与非确定性机器的解题能力的比较问题。人们早已知道，确定性图 灵机与非确定性图灵机的解题能力是相等的。因为非确 定性机器虽比确定性机器效率高，而如果计算时间没有 限制，则确定性机器总可以用穷举的方法来模拟非确定性机器。因此，二者的解题能力是一样的。但在计算时 间多项式有界时，二者的解题能力是否相等，这就是有 名的P=? NP问题。 关于计算和算法（包括程序）的研究，对串行计算的性质研究较多，而对并行计算性质的研究则还很不够 （特别是对异步的并行计算更是如此）。因此，关于并 行计算的研究很可能将成为计算机理论的研究重点。 　　　　　　　　　　　　　　　</em></p>
<p><em>&nbsp;&nbsp;&nbsp;&nbsp; 对于一个判定问题，如果能够编出一个程序,以域 中任意元素作为输入，当相应的个别问题的解答是肯定 的时候, 的执行将终止并输出&quot;是&quot;,否则 的执行不 终止，就称该判定问题为半可判定的。可判定的问题总是半可判定的。集合是递归可枚举集的充分必要条件为 对应的判定问题是半可判定的。 图灵在1936年证明，图灵机的停机问题是不可判定 的，即不存在一个图灵机能够判定任意图灵机对于任意输入是否停机。图灵机的停机问题是半可判定的。图灵 机的停机问题是很重要的，由它可以推出计算机科学、 数学、逻辑学中的许多问题是不可判定的。</em></p> <a href="http://hi.baidu.com/redcastle/blog/item/d63fd22a12d01e93033bf69b.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%CD%E6%CB%A3">玩耍</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/d63fd22a12d01e93033bf69b.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-17  22:47</pubDate>
        <category><![CDATA[玩耍]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/d63fd22a12d01e93033bf69b.html</guid>
</item>

<item>
        <title><![CDATA[尾递归（tail-recursive）]]></title>
        <link><![CDATA[http://hi.baidu.com/redcastle/blog/item/941bcf3dd65811cf9f3d62d6.html]]></link>
        <description><![CDATA[
		
		尾递归（tail-recursive）<br>
在进行函数调用时，如果函数体中的最后一个语句都是对系统中其他函数的调用，这个函数调用就是<br>
尾递归的。欲说明尾递归，必须说明尾调用（tail-call）。例如下面的函数调用：<br>
1 p()<br>
2 {<br>
3&nbsp;&nbsp; ...<br>
4&nbsp;&nbsp; q();<br>
5&nbsp;&nbsp; ...<br>
6 }<br>
7 <br>
8 q()<br>
9 {<br>
10&nbsp;&nbsp; ...<br>
11&nbsp;&nbsp; r();<br>
12&nbsp;&nbsp; s();<br>
13 }<br>
在执行函数p的某个时候，函数q被调用。q中最后去调用s，当s返回的时候，将值返回给q，但是q原封<br>
不动地将该值返回给p。这里q中最后对s的调用就称为尾调用。<br>
在传统的栈机制计算机（stack machine）中，尾调用可以编译成直接跳转到s的代码处，而不用将返回<br>
地址压入栈中，因为s返回的地方就是q要返回的地址。程序执行到这里的时候，栈中的返回地址本来就<br>
是对的。故s的调用结束不需要返回到q中，而是直接返回到p函数体中对q调用的地方就可以了。<br>
如果函数的所有可能执行路径都以尾调用结束，就说明该函数是尾递归的。<br>
这一点是很重要的，尾递归函数可以在循环结构（loop）中被调用而不消耗栈空间。这种函数通常称为<br>
&ldquo;迭代函数&rdquo;（iterative function）。<br>
许多函数既可以用迭代风格来编写，也可以用非迭代（递归）风格来编写。例如求阶乘的函数，我们先<br>
来写出它的非迭代递归式：<br>
 factorial (0) -&gt; 1;<br>
 factorial (N) -&gt; N * factorial(N-1).<br>
在函数体factorial (N)分支中，最后是对一个表达式求值，而不是对一个函数的调用，所以他不是尾<br>
调用，那么该函数自然就不是尾递归了。<br>
现在写出它的迭代式，这里要引入一个辅助函数：<br>
 factorial (N) -&gt; factorial_1 (N,1).<br>
 factorial_1 (0,X) -&gt; X;<br>
 factorial_1 (N,X) -&gt; factorial_1 (N-1,N*X).<br>
显然这是一个尾递归式。<br>
许多非尾递归的函数可以通过引入一个辅助函数，增加一个额外参数（聚集器）的方法改写成尾递归的。<br>
在函数式编程语言中，不单单是为了优化系统执行的目的，有时候函数必须要写成迭代式才能执行。例<br>
如在无限循环结构中，直接递归，不单单是栈区会溢出，而且语义也难以满足。这也许是栈机制计算机<br>
的不足之处。我们知道，在可计算理论中，可计算函数与递归函数是等价的，并且函数式编程在语义上<br>
更加严谨。 <a href="http://hi.baidu.com/redcastle/blog/item/941bcf3dd65811cf9f3d62d6.html">阅读全文</a>
		
		<br/><b>类别：</b><a href="http://hi.baidu.com/redcastle/blog/category/%CD%E6%CB%A3">玩耍</a>&nbsp;<a href="http://hi.baidu.com/redcastle/blog/item/941bcf3dd65811cf9f3d62d6.html#comment">查看评论</a>]]></description>
        <pubDate>2009-03-17  20:56</pubDate>
        <category><![CDATA[玩耍]]></category>
        <author><![CDATA[pop3836]]></author>
		<guid>http://hi.baidu.com/redcastle/blog/item/941bcf3dd65811cf9f3d62d6.html</guid>
</item>


</channel>
</rss>