﻿<?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>C++博客-NOTHING IS IMPOSSIBLE!</title><link>http://www.cppblog.com/colenming/</link><description>A race against time......</description><language>zh-cn</language><lastBuildDate>Sun, 12 Apr 2026 18:05:24 GMT</lastBuildDate><pubDate>Sun, 12 Apr 2026 18:05:24 GMT</pubDate><ttl>60</ttl><item><title>变态的C语言程序【转】</title><link>http://www.cppblog.com/colenming/archive/2009/06/01/86478.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Mon, 01 Jun 2009 15:18:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2009/06/01/86478.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/86478.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2009/06/01/86478.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/86478.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/86478.html</trackback:ping><description><![CDATA[<p><br>主要是是像大家展示了一些C语言的变态玩法。也向大家展示了一下程序是可以写得让人看不懂的，在那篇文章中，可以看到很多人的留言，很多人都觉得很好玩，是的，那本来是用来供朋友们&#8220;消遣作乐&#8221;，供娱乐娱东而已，不必太过认真。 </p>
<p>&nbsp;</p>
<p>不过，通过这种极端的写法，大家可以看到源代码都可以写得那么复杂难懂的。大家也许在赞叹之余一笑了之，而我则希望，大家能够在娱乐以后认真思考一下，你不要以为咱们自己不会把代码搞得那么复杂，只不过没有像那6个Hello World一样那么极端，不过，说句老实话，咱们每个程序都有把清晰的程序搞得一团混乱的潜能，只不过程度不一样罢了，我并不是在这里危言耸听，大家好自为之。 </p>
<p>&nbsp;</p>
<p>下面是一个Step by Step的教程，教你如何把一个清晰的代码变得复杂难懂的。当然，这只是一个&#8220;简明教程&#8221;了。还是那句话——&#8220;本文仅供朋友们&#8220;消遣作乐&#8221;，如果你要觉得有意思的话，顶个贴。如果你觉得没什么意思的话，一笑了之。仅供娱乐而已，不必太过认真。&#8221; </p>
<p>正常程序<br>下面是一个找出素数的程序： </p>
<p>void primes(int cap)<br>{<br>&nbsp;&nbsp;&nbsp; int i, j, composite;</p>
<p>&nbsp;&nbsp;&nbsp; for(i = 2; i &lt; cap; ++i) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; composite = 0;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(j = 2; j * j &lt; i; ++j) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; composite += !(i % j);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!composite){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\t", i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>int main()<br>{<br>&nbsp;&nbsp;&nbsp; primes(100);<br>}<br>下面我们来看看如何把上面这段代码搞得复杂难懂。 </p>
<p>第一步、把for变成while<br>通常来说，for循坏要以while循坏简单一些，上面的程序有二重for循环，我们不但要把其变成while循环，而且还要把二重循环的变成一重的循环，然后使用大量的if-else语句来判断。 </p>
<p>void primes(int cap) <br>{ <br>&nbsp;&nbsp;&nbsp; int i, j, composite, t = 0;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; while(t &lt; cap * cap) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i = t / cap;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j = t++ % cap;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i &lt;= 1);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(!j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; composite = j;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(j == i &amp;&amp; !composite)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; printf("%d\t",i);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else if(j &gt; 1 &amp;&amp; j &lt; i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; composite += !(i % j);&nbsp; <br>&nbsp;&nbsp;&nbsp; }<br>}</p>
<p>int main() <br>{<br>&nbsp;&nbsp;&nbsp; primes(100);<br>}<br>第二步，把循坏变成递归<br>递归在某些时候是可以把代码变得简单，但大多数的情况下是把代码变得复杂，而且很没有效率。下面是把上面的while循环变成了递归。变成了递归后，函数的参数都变成3个了。 </p>
<p>void primes(int cap, int t, int composite) <br>{<br>&nbsp;&nbsp;&nbsp; int i,j;<br>&nbsp;&nbsp;&nbsp; i = t / cap;<br>&nbsp;&nbsp;&nbsp; j = t % cap;<br>&nbsp;&nbsp;&nbsp; if(i &lt;= 1)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primes(cap,t+1,composite);<br>&nbsp;&nbsp;&nbsp; else if(!j)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primes(cap,t+1,j);<br>&nbsp;&nbsp;&nbsp; else if(j == i &amp;&amp; !composite)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (printf("%d\t",i), primes(cap,t+1,composite));<br>&nbsp;&nbsp;&nbsp; else if(j &gt; 1 &amp;&amp; j &lt; i)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primes(cap,t+1, composite + !(i % j));<br>&nbsp;&nbsp;&nbsp; else if(t &lt; cap * cap)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; primes(cap,t+1,composite);<br>}<br>&nbsp;<br>int main() <br>{<br>&nbsp;&nbsp;&nbsp; primes(100,0,0);<br>}<br>第三步，弄乱代码结构/使用没有含义的变量名<br>关于如何弄乱代码结构，其中一个小技巧是，使用&#8220;？&#8221;表达式代替if-else语句。 </p>
<p>void primes(int m, int t, int c) <br>{<br>&nbsp;&nbsp;&nbsp; int i,j;<br>&nbsp;&nbsp;&nbsp; i = t / m;<br>&nbsp;&nbsp;&nbsp; j = t % m;<br>&nbsp;&nbsp;&nbsp; (i &lt;= 1) ? primes(m,t+1,c) : (!j) ? primes(m,t+1,j) : (j == i &amp;&amp; !c) ? <br>&nbsp;&nbsp;&nbsp; (printf("%d\t",i), primes(m,t+1,c)) : (j &gt; 1 &amp;&amp; j &lt; i) ? <br>&nbsp;&nbsp;&nbsp; primes(m,t+1,c + !(i % j)) : (t &lt; m * m) ? primes(m,t+1,c) : 0;<br>}<br>&nbsp;<br>int main() <br>{<br>&nbsp;&nbsp;&nbsp; primes(100,0,0);<br>}<br>第四步，取消临时变量<br>临时变量一般用来保存反复使用的一个表达式的值。使用大量重复的表达式来取消这些临时变量的也可以让代码复杂起来。 </p>
<p>void primes(int m, int t, int c) <br>{<br>&nbsp; ((t / m) &lt;= 1) ? primes(m,t+1,c) : !(t % m) ? primes(m,t+1, t % m) : <br>&nbsp; ((t % m)==(t / m) &amp;&amp; !c) ? (printf("%d\t",(t / m)), primes(m,t+1,c)) : <br>&nbsp; ((t % m)&gt; 1 &amp;&amp; (t % m) &lt; (t / m)) ? primes(m,t+1,c + !((t / m) % (t % m))) : <br>&nbsp; (t &lt; m * m) ? primes(m,t+1,c) : 0;<br>}</p>
<p>&nbsp;<br>int main() <br>{<br>&nbsp;&nbsp;&nbsp; primes(100,0,0);<br>}<br>第五步，继续弄乱变量名<br>我们知道，下划线是合法的变量名，所以，我们不妨用__，___，____来代替m，t，c。函数名也可以使用下划线来代替。让我们来看看求素数的函数能变成什么。 </p>
<p>void _(int __, int ___, int ____) <br>{<br>&nbsp;&nbsp;&nbsp; ((___ / __) &lt;= 1) ? _(__,___+1,____) : !(___ % __) ? _(__,___+1,___ % __) : <br>&nbsp;&nbsp;&nbsp; ((___ % __)==(___ / __) &amp;&amp; !____) ? (printf("%d\t",(___ / __)), <br>&nbsp;&nbsp;&nbsp; _(__,___+1,____)) : ((___ % __) &gt; 1 &amp;&amp; (___ % __) &lt; (___ / __)) ? <br>&nbsp;&nbsp;&nbsp; _(__,___+1,____ + !((___ / __) % (___ % __))) : (___ &lt; __ * __) ? <br>&nbsp;&nbsp;&nbsp; _(__,___+1,____) : 0;<br>} </p>
<p>int main() <br>{<br>&nbsp;&nbsp;&nbsp; _(100,0,0);<br>}<br>第六步，移除常量<br>在上面的程序中，还有一些常量，你可以通过增加一个宏定义，或是增加一个函数的形参来取代这一常量。 </p>
<p>void _(int __, int ___, int ____, int _____) <br>{<br>&nbsp;&nbsp;&nbsp; ((___ / __) &lt;= _____) ? _(__,___+_____,____,_____) : !(___ % __) ? _(__,___+_____,___ % __, _____) : <br>&nbsp;&nbsp;&nbsp; ((___ % __)==(___ / __) &amp;&amp; !____) ? (printf("%d\t",(___ / __)), <br>&nbsp;&nbsp;&nbsp; _(__,___+_____,____,_____)) : ((___ % __) &gt; _____ &amp;&amp; (___ % __) &lt; (___ / __)) ? <br>&nbsp;&nbsp;&nbsp; _(__,___+_____,____,_____ + !((___ / __) % (___ % __))) : (___ &lt; __ * __) ? <br>&nbsp;&nbsp;&nbsp; _(__,___+_____,____,_____) : 0;<br>} <br>&nbsp;<br>int main() {<br>&nbsp;&nbsp;&nbsp; _(100,0,0,1); <br>}<br>程序到这里应该差不多了。还是那句话——&#8220;每一个程序员都有把源代码弄复杂的潜质&#8221;，大家好自为之。</p>
<p><br>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/haoel/archive/2009/05/30/4225974.aspx">http://blog.csdn.net/haoel/archive/2009/05/30/4225974.aspx</a></p>
<img src ="http://www.cppblog.com/colenming/aggbug/86478.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2009-06-01 23:18 <a href="http://www.cppblog.com/colenming/archive/2009/06/01/86478.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>惹恼程序员的十件事【转】</title><link>http://www.cppblog.com/colenming/archive/2009/05/26/85788.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 26 May 2009 05:39:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2009/05/26/85788.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/85788.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2009/05/26/85788.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/85788.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/85788.html</trackback:ping><description><![CDATA[<div class=blogstory>
<div class=blogstory>
<p>程序员是一个比较特殊的群体，他们因为长期和电脑打交道所养成的性格和脾气也是比较相近的。当然，既然是人，当然是会有性格的，也是会有脾气的。下面，让我来看看十件能把程序惹毛了的事情。一方面我们可以看看程序员的共性，另一方面我们也可以看看程序员的缺点。无论怎么样，我都希望他们对你的日常工作都是一种帮助。</p>
<p><strong>第十位 程序注释</strong></p>
<p>程序注释本来是一些比较好的习惯，当程序员老手带新手的时候，总是会告诉新手，一定要写程序注释。于是，新手们当然会听从老手的吩咐。只不过，他们可能对程序注释有些误解，于是，我们经常在程序中看到一些如下的注释：</p>
<p style="PADDING-LEFT: 30px">r = n/2;&nbsp; <span style="COLOR: #008000">//r是n的一半</span></p>
<p style="PADDING-LEFT: 30px"><span style="COLOR: #008000">//循环，仅当r- n/r不大于t</span><br>while ((r-n/r) &lt;=t){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#8230; &#8230;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; r = 0.5 * (r-n/r); <span style="COLOR: #008000">// 设置r变量<br></span>}</p>
<p>每当看到这样的注释——只注释是什么，而不注释为什么，相信你一定会被惹火，这是谁写的程序注释啊？不找来骂一顿看来是不会解气了。程序注释应该是告诉别人你的意图和想法，而不是告诉别人程序的语法，这是为了程序的易读性和可维护性，这样的为了注释而注释的注释，分明不是在注释，而是在挑衅，惹毛别人当然毋庸置疑。</p>
<p>&nbsp;</p>
<p><strong>第九位 打断</strong></p>
<p>正当程序沉浸于编程算法的思考，或是灵感突现正在书写程序的时候，但却遭到别人的打断，那是一件非常痛苦的事情，如果被持续打断，那可能会让人一下子就烦躁起来。打断别人的人在这种情况下是非常不礼貌的。被打断的人就像函数调用一下，当其返回时，需要重新恢复断点时的现场，当然，人不是电脑，恢复现场通常是一个很痛苦的过程，极端的情况下可能需要从头开始寻找思绪，然后一点一点地回到断点。</p>
<p>因此，我看到一些程序员在需要安静不被打扰的时候，要么会选择去一个没人找得到的地方，要么会在自己的桌子上方高挂一个条幅以示众人——&#8220;本人正执行内核程序，无法中断，请勿骚扰，谢谢！&#8221;，可能正在沉浸于工作的程序被打断是多么大的开销。自然，被打断所惹毛了的人也不在少数了。</p>
<p>&nbsp;</p>
<p><strong>第八位&nbsp; 需求变化</strong></p>
<p>这个事情估计不用多说了。只要是是程序员，面对需求变化的时候可能总是很无奈的。一次两次可能还要吧接受，但也顶不住经常变啊。据说敏捷开发中有一套方法论可以让程序员们享受需求的变化，不知道是真是假。不过，今天让你做一个书桌，没有让你把书桌改成餐桌，后天让你把餐桌改成双人床，大后天让你把床改成小木屋，然后把小木屋再改成高楼大厦。哎，是人都会被惹毛了的。那些人只用30分钟的会议就可以作出任何决定，但后面那几十个程序员需要搭上几百个小时的辛苦工作。如果是我，可能我也需要神兽草泥马帮助解解气了。</p>
<p>不过，这也正说明了，程序员并不懂得怎么和用户沟通，而用户也不懂得和程序员沟通，如果一个项目没有一个中间人（如：PM）在其中协调的话，那么整个项目可能就是&#8220;鸡同鸭讲&#8221;，用户和程序员都会被对方所惹毛了。如果要例举几个用户被惹毛的事情，估计程序员的那种一根筋的只从技术实现上思考问题的方法应该也能排进前5名。</p>
<p>&nbsp;</p>
<p><strong>第七位&nbsp; 经理不懂技术</strong></p>
<p>外行领导内行的事例还少吗？领导一句话，无论对不对，都是对的，我们必需照做，那怕是多么愚蠢多么错误的决定，我们也得照做。程序员其实并不怕经理不懂技术，最怕的就是不懂技术的经理装着很懂技术。最可气的是，当你据理力争的挑站领导权威的时候，领导还把你视为异类。哎，想起这样的领导别说是骂人了，打人的冲动都有了。</p>
<p>其实，经理只不过是一个团队的支持者，他应该帮助团队，为团队排忧解难。而不是对团队发号施令。其实管理真的很简单，如果懂的话，就帮着做，如果不懂的话，就相信下属，放手让下属做。最怕的就是又不懂技术，还不信任下属的经理了。哎，这真是程序员的痛啊。</p>
<p>&nbsp;</p>
<p><strong>第六位 用户文档</strong></p>
<p>用户文档本来不应该那么的令人害怕。这些文档记录了一切和我们所开发的软件有关的一些话题。因为我们并不知道我们所面对的用户的电脑操作基础是什么样的，所以，在写下这样的文档的时候，我们必需假设这个用户什么也不懂。于是，需要用最清楚，最漂亮的语言写下一个最丰富的文档。那怕一个拷贝粘贴的操作，可能我们都要分成五、六步来完成，那怕是一个配置IP地址的操作，我们也要从开始菜单开始一步一步的描述。对于程序员来说，他们在开发过程中几乎天天都在使用自己开发的软件，到最后，可能都有得有点吐了，但还得从最简单的部份写这些文档，当然容易令他们烦燥，让程序员来完成这样的文档可能效果会非常不好。所以，对于这样的用户文档，应该由专门的人来完成和维护。</p>
<p>&nbsp;</p>
<p><strong>第五位&nbsp; 没有文档</strong></p>
<p>正如上一条所说的，程序员本来就不喜欢写文档，而因为技术人员的表达能力和写作能力一般都不是太好，所以，文档写的也很烂。看看开源社会的文档可能就知道了。但是，我们可爱的程序员另一方面最生气的却是因为没有文档。当然，让面说是的用户的文档，这里我们说的是开发方面的文档，比如设计文档，功能规格，维护文档等等。不过，基本上都是一样的。反正，一方面，我们的程序员不喜欢写文档，另一方面，我们的程序又会被抱怨没有文档，文档太少，或者文档看不懂。呵呵。原来在抱怨方面也有递归啊。据说，敏捷开发可以降低程序开发中的文档，据说他们可以把代码写得跟文档和示图似的，不知道是真是假。不过，我听过太多太多的程序员抱怨没文档太少，文档太差了，这个方面要怪还是怪程序员自己。</p>
<p>&nbsp;</p>
<p><strong>第四位 部署环境</strong></p>
<p>虽然，程序员们开发的是软件，但是我们并不知道我们的程序会被部署或安装在什么样的环境下，比如，网络上的不同，RAID上的不同，BIOS上的不同，操作系统的不同（WinXP和Win2003），有没有杀毒软件，和其它程序是否兼容，系统中有流氓软件或病毒等等。当然，只要你的软件出现错误，无论是你的程序的问题，还是环境的问题，反正都是你的问题，你都得全部解决。所以，程序员们并不是简单地在编程，很多时候，还要当好一个不错系统管理员。每当最后确认问题的原因是环境问题的时候，可能程序员都是会心生怨气。</p>
<p>&nbsp;</p>
<p><strong>第三位 问题报告</strong></p>
<p>&#8220;我的软件不工作了&#8221;，&#8220;程序出错了&#8221;，每当我们听到这样的问题报告的时候，程序员总是感到很痛苦，因为这样的问题报告等于什么也没有说，但还要程序员去处理这种错误。没有明确的问题描述，没有说明如果重现问题，在感觉上，当然会显得有点被人质问的感觉，甚至，在某些时候还掺杂着看不起，训斥的语气，当然，程序员基本上都是很有个性的，都是软硬不吃的主儿，所以，每当有这样的语气报告问题的时候，他们一般也会把话给顶回去，当然，后面自己然发生一些不愉快的事情。所以，咱们还是需要一个客服部门来帮助我们的程序员和用户做好沟通。</p>
<p>&nbsp;</p>
<p><strong>第二位 程序员自己</strong></p>
<p>惹毛程序员的可能还是程序员自己，程序员是&#8220;相轻&#8221;的，他们基本上都是持才傲物的，总是觉得自己才是最牛的，在程序员间，他们几乎每天都要吵架，而且一吵就吵得脸红脖子粗。在他们之间，他们总是被自己惹毛。</p>
<ul>
    <li>技术上的不同见解。比如Linux和Win，VC++和VB，Vi和Emacus，Java和C++，PHP和Ruby等等，等等。什么都要吵。
    <li>老手对新手的轻视。总是有一些程序员看不起另一些程序员，说话间都带着一种傲慢和训斥。当新手去问问题的时候，老手们总是爱搭不理。
    <li>在技术上不给对方留面子。不知道为什么，程序员总是不给对方留面子，每当听到有人错误理解某个技术的时候，他们总是喜欢当众大声指证，用别人的&#8220;错误&#8221;来表明自己的&#8220;博学&#8221;，并证明他人的&#8220;无知&#8221;。
    <li>喜好鄙视。他们喜好鄙视，其实，这个世界上没有一件事是完美的，有好就有不好，要挑毛病太容易了。程序员们特别喜欢鄙视别人，无论是什么的东西，他们总是喜欢看人短而不看人长。经常挂在他们嘴上的口头禅是&#8220;太差&#8221;、&#8220;不行&#8221;等等。 </li>
</ul>
<p>程序员，长期和电脑打交道，编写出的代码电脑总是认真的运行，长期养成了程序员们目空一切的性格，却不知，这个世界上很多东西并不是能像电脑一样，只要我们输入正确的指令它就正确地运行这么简单。程序员，什么时候才能变成成熟起来&#8230;&#8230;</p>
<p>&nbsp;</p>
<p><strong>第一位 程序员的代码</strong></p>
<p>无论你当时觉得自己的设计和写的代码如何的漂亮和经典，过上一段时间后，再回头看看，你必然会觉得自己的愚蠢。当然，当你需要去维护他人的代码的时候，你一定要在一边维护中一边臭骂别人的代码。是否你还记得当初怎么怎么牛气地和别人讨论自己的设计和自己的代码如何如何完美的？可是，用不了两年，一刚从学校毕业的学生在维护你的代码的过程当中就可以对你的代码指指点点，你的颜面完全扫地。呵呵。当然，也有的人始终觉得自己的设计和代码就是最好的，不过这是用一种比较静止的眼光来看问题。编程这个世界变化总是很快的的，很多事情，只有当我们做过，我们才熟悉他，熟悉了后才知道什么是更好的方法，这是循序渐进的。所以，当你对事情越来越熟悉的时候，再回头看自己以前做的设计和代码的时候，必然会觉得自己的肤浅和愚蠢，当然看别人的设计和代码时，可能也会开始骂人了。</p>
</div>
<p class="right articalinfo">&nbsp;</p>
</div>
<img src ="http://www.cppblog.com/colenming/aggbug/85788.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2009-05-26 13:39 <a href="http://www.cppblog.com/colenming/archive/2009/05/26/85788.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>程序员漫画</title><link>http://www.cppblog.com/colenming/archive/2009/05/26/85787.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 26 May 2009 05:37:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2009/05/26/85787.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/85787.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2009/05/26/85787.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/85787.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/85787.html</trackback:ping><description><![CDATA[程序员漫画
<div class=blogstory>
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>
<p>1. 妈妈搞破坏</p>
<p>&nbsp;</p>
<p><a href="http://xkcd.com/327/"><img height=205 alt="" src="http://imgs.xkcd.com/comics/exploits_of_a_mom.png" width=666></a></p>
<p>&nbsp;</p>
<p>2. 给我做份三明治。看懂的举手</p>
<p>&nbsp;</p>
<p><a href="http://xkcd.com/149/"><img height=299 alt="" src="http://imgs.xkcd.com/comics/sandwich.png" width=360></a></p>
<p>&nbsp;</p>
<p>3. 代码还在编译呢</p>
<p>&nbsp;</p>
<p><a onclick="pageTracker._trackPageview('/outbound/article/http://xkcd.com/303/');" href="http://xkcd.com/303/"><img alt=Compiling src="http://imgs.xkcd.com/comics/compiling.png"></a></p>
<p>&nbsp;</p>
<p>4. 软件需求</p>
<p><a href="http://e1.simplecdn.net/slashw/dilbertsoftwarerequirements.jpg"><img height=544 alt="" src="http://e1.simplecdn.net/slashw/dilbertsoftwarerequirements.jpg" width=750></a></p>
</div>
<img src ="http://www.cppblog.com/colenming/aggbug/85787.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2009-05-26 13:37 <a href="http://www.cppblog.com/colenming/archive/2009/05/26/85787.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用计算机语言的爱情表白【转】 程序员的幽默</title><link>http://www.cppblog.com/colenming/archive/2009/03/10/76119.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 10 Mar 2009 07:41:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2009/03/10/76119.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/76119.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2009/03/10/76119.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/76119.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/76119.html</trackback:ping><description><![CDATA[<strong style="FONT-SIZE: 14pt; FONT-FAMILY: 方正姚体"><span style="COLOR: red">用计算机语言的爱情表白 <br>我能抽象出整个世界．．． <br>但是我不能抽象出你．．． <br>因为你在我心中是那么的具体．．． <br>所以我的世界并不完整．．． <br>我可以重载甚至覆盖这个世界里的任何一种方法．．． <br>但是我却不能重载对你的思念．．． <br>也许命中注定了 你在我的世界里永远的烙上了静态的属性．．． <br>而我不慎调用了爱你这个方法．．． <br>当我义无返顾的把自己作为参数传进这个方法时．．． <br>我才发现爱上你是一个死循环．．． <br>它不停的返回对你的思念压入我心里的堆栈．．． <br>在这无尽的黑夜中．．． <br>我的内存里已经再也装不下别人．．． <br>我不停的向系统申请空间．．． <br>但却捕获一个异常－－－我爱的人不爱我．．． <br>为了解决这个异常．．． <br>我愿意虚拟出最后一点内存．．． <br>把所有我能实现的方法地址压入堆栈．．． <br>并且在栈尾压入最后一个方法－－－将字符串＂我爱你，你爱我吗？＂传递给你．．． <br>如果返回值为真－－我将用尽一生去爱你．．． <br>否则－－我将释放掉所有系资源．</span> </strong>
<img src ="http://www.cppblog.com/colenming/aggbug/76119.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2009-03-10 15:41 <a href="http://www.cppblog.com/colenming/archive/2009/03/10/76119.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>高手与菜鸟，思想与技术 </title><link>http://www.cppblog.com/colenming/archive/2008/09/13/61760.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Sat, 13 Sep 2008 10:59:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2008/09/13/61760.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/61760.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2008/09/13/61760.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/61760.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/61760.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/colenming/archive/2008/09/13/61760.html'>阅读全文</a><img src ="http://www.cppblog.com/colenming/aggbug/61760.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2008-09-13 18:59 <a href="http://www.cppblog.com/colenming/archive/2008/09/13/61760.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>the method of IT study [转]</title><link>http://www.cppblog.com/colenming/archive/2008/09/13/61759.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Sat, 13 Sep 2008 10:55:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2008/09/13/61759.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/61759.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2008/09/13/61759.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/61759.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/61759.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/colenming/archive/2008/09/13/61759.html'>阅读全文</a><img src ="http://www.cppblog.com/colenming/aggbug/61759.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2008-09-13 18:55 <a href="http://www.cppblog.com/colenming/archive/2008/09/13/61759.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Starting from scratch ,All from scratch, All from now on......</title><link>http://www.cppblog.com/colenming/archive/2008/08/13/58671.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 12 Aug 2008 17:26:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2008/08/13/58671.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/58671.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2008/08/13/58671.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/58671.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/58671.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/colenming/archive/2008/08/13/58671.html'>阅读全文</a><img src ="http://www.cppblog.com/colenming/aggbug/58671.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2008-08-13 01:26 <a href="http://www.cppblog.com/colenming/archive/2008/08/13/58671.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>内核的忙碌生活 转载</title><link>http://www.cppblog.com/colenming/archive/2008/04/08/46558.html</link><dc:creator>colen</dc:creator><author>colen</author><pubDate>Tue, 08 Apr 2008 13:53:00 GMT</pubDate><guid>http://www.cppblog.com/colenming/archive/2008/04/08/46558.html</guid><wfw:comment>http://www.cppblog.com/colenming/comments/46558.html</wfw:comment><comments>http://www.cppblog.com/colenming/archive/2008/04/08/46558.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/colenming/comments/commentRss/46558.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/colenming/services/trackbacks/46558.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;&nbsp;<a href='http://www.cppblog.com/colenming/archive/2008/04/08/46558.html'>阅读全文</a><img src ="http://www.cppblog.com/colenming/aggbug/46558.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/colenming/" target="_blank">colen</a> 2008-04-08 21:53 <a href="http://www.cppblog.com/colenming/archive/2008/04/08/46558.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>