递归生活
无论是生活中还是工作中,我有个习惯:总结、反省。
高中教我们英语的是江冰老师,由于自身的原因,学到书本上的东西不算多,但江老师的一句话,这些年,我倒是没忘:人的一生,活到82岁才够在这世上活过30000天。 这句话,在之后的生活中,每每有荒废时光的时候,它就会蹦出来。我想这是我在高中英语课堂上学的最受益的一句。
我可以没学会一门语言,但不能不学会去寻找属于自己的一种生活艺术。
经常跟一些熟悉的或者陌生的朋友聊天,他们会说:我想干什么,但因为诸多原因,我不得不做着现在的工作。我很庆幸,我做着自己喜欢的工作。我想这也许是我最大的幸福,至少累的时候也是我充实的时候。
今天在看一个程序中函数类的时候,让我觉得我有必要通过这个函数来写写生活、压力以及信仰。
其实这个函数很简单,但正如有话所说:往往简单的事物中却包含着不简单的道理。
function mkdir_level($findpath,$mode = 0755){
if (is_dir($findpath) || @mkdir($findpath,$mode)) return true;
if (!mkdir_level(dirname($findpath),$mode)) return false;
return @mkdir($findpath,$mode);
}
对于写过代码的人,这段代码可能再简单不过了,也可能很不简单。因为之前在实现一个目录下递归创建目录时,你可能写过很长的一段代码来实现过这个功能,但这段可能是最精简的。去过新浪或者百度应聘的技术人员,应该都有可能碰见过这类的笔试题。确实,这个题太应该拿来考了。
之前我认为,这段代码太easy了,没什么可以看的。不就是一个递归方法来调用自身执行吗?但今天一仔细看,我看不懂了,因为我太执着于要一个结果,而在那死循环着。觉得这个函数有问题,明明就是没执行到mkdir创建目录的这一步。怎么可能递归创建目录。我查阅了一些资料,也是在宝哥的提醒下, 才明白一个不陌生的名词:内存。比如说:我想在C盘下面创建一个多层目录,这个目录路径是C:/AAA/BBB/CCC/DDD,实际情况是,C盘下面没有AAA这个目录或者说是文件夹,没有AAA这个目录,之后的BBB,CCC,DDD自然也是没有的,我们运用这个函数来创建C盘下面这个多层目录。代码本身就是一个很执着的想要结果的东西,它一上来就想创建DDD这个目录,如果直接用mkdir然后传入这个路径,就直接GAME OVER了, 因为他找不到CCC这个目标目录去建DDD这个目录。所以这个函数在执行mkdir之前就会判断我们当前要创建的层级目录是否已经存在如果不存在,我们就创建,如果创建失败,我们就使用dir_name这个函数剥去自己的一层变成C:/AAA/BBB/CCC再调用自己来执行判断是否存在,如此循环下去。其中在第一次递归的时候调用自己本身的时候,它第一次用自己的时候(注意我的用语:第一次递归调用本身和第一次用本身不是一个概念。), 其实它还没有执行完就被中止了(非终止),然后就紧接着再调用了自己一次,中止的第一次就会被保存到内存中,等待着有了自己想要的结果就会继续执行完自己,一切也就迎刃而解了。
只因为我想拿这个函数来说,是因为这与我们的生活太相似了。
我们有时候,都想着解决当前的一个结,而执意的去要一个结果,把这种执念摆在自己的心里来回反复的去跟自己要答案,然后只会让自己在折磨中疲倦了心情消逝了岁月风干了自己。这完全是没必要的代价,你想想吧:人的一生,活到82岁才够在这世上活过30000天。哪一天是你可以值得或者忍心去浪费的?
何况在这个毒奶粉、地沟油、瘦肉精、染色馒头等等泛滥的时代,谁有自信说我能活在82岁?
所以在我们生活的旅途中,我们需要一个“内存”。我们将现在我们解不开断不了放不下的事情放到内存里,随着岁月的流逝,我们走的路长了经历的多了看的远了,它们自然就在不解之中自解了。我们要有合理的压力,但不要有过度的压抑。我们把那些压抑我们的东西抛到内存中,等一些人一些事来解开,将那些可以承受的压力拿出来驱动自己的人生,这才是我们想要的生活。
其实更多的是想通过这个函数更多的来引申一下信仰,但信仰这个太深奥了,我一时不知从何表达。所以等哪天我有更好的方式来表达,我再来说一下这个名词。
我想,这些就是我的生活,我喜欢仔细的留意身边的小事,然后通过小事来总结一些自己的人生价值,反省出自己之前的不作为来达到改变自己的目的。
作为程序员的我们,我想对大家说的是:我们写的不仅仅是代码更是一种生活的感悟,我们的工作并不是机器式的敲着键盘而是有节奏的弹着钢琴,这就是我们程序员工作的艺术!