程序的形式,应该仅仅反映它所要解决的问题。

阮一峰翻译的《lisp为什么这么先进》最后一段话非常有感触。

程序的形式,应该仅仅反映它所要解决的问题。代码中其他任何外加的形式,都是一个信号,(至少对我来说)表明我对问题的抽象还不够深。

我是这样来理解的,假如我想在一堆数据里检索某一个字符是否存在。

应该怎么写呢?

if(search(string,text)==ture)

print "yes"

else

print "no"

可是马上问题升级了,这个对象在内存中吗?

假如在磁盘的文件系统中,我是否应该先fopen一下。

可是这一堆数据我分开存放了,不是存放在一个文件中。

再假如,我是在一个数据中心,这一堆数据,其实是放在不同的机器上。

这些机器使用不同的处理器,不同的操作系统。fuucck。

我该怎么办?用网络通信吗(感谢网络其实已经屏蔽了相当多的东西。)?把数据复制过来,然后检索,还是远程过程调用,指示这台机器进行检索,然后将结果返回。

假如你最后解决问题了,你会发现代码会越来越庞大,而这些庞大的代码其实在做无关的事情,这些代码没有直接反映我想要解决的问题,仅仅是搭建了我想要解决问题所不得不搭建的平台。

但是mapreduce解决了这一切,有了mapreduce架构,你仍然可以写只和问题相关的代码。

数据放在一个分布式文件系统中,job将启动不同的task来做这件事情,它控制任务的自动负载均衡。

程序的形式,应该仅仅反映它所要解决的问题。代码中其他任何外加的形式,都是一个信号,(至少对我来说)表明我对问题的抽象还不够深。

太对了。

posted @ 2013-08-29 15:59  李可以  阅读(277)  评论(0)    收藏  举报