星期四, 十一月 23, 2006

最近值得推荐的两篇文章《Map Reduce - the Free Lunch is not over?》以及《函数式编程另类指南》

MapReduce

分布是Web应用的必然发展方向,当你的网站用户数量在10万内,你可以不懂什么叫分布,而当你的网站用户数量超过百万数量级,你不可能不懂什么叫做分布。

Google 的使命是整合全球信息,使人人皆可访问并从中受益。所以Google比一般网站更早遭遇了只有分布才能存储的数据,这导致了Google File System的诞生。紧接着他们遇到的问题是怎么才能让公司所有的程序员都学会些分布计算的程序,因为他们用Google File System存储的海量数据分析起来需要的运算量也是惊人的。这就催生了MapReduce技术,通过把海量数据集的常见操作抽象为Map和Reduce两种集合操作,大大简化了程序员编写分布计算程序的难度。

很早以前我翻译了Wiki上的MapReduce文档,可是很多人说还是看不懂。现在好了,孟岩写了一篇分析深入浅出的文章,把这个东西讲解得很清晰。请看《Map Reduce - the Free Lunch is not over?

函数式编程

MapReduce论文中,没有忘记提及历史悠久的函数式编程给Google的天才们带来的启示:“我们的灵感来自lisp和其他函数式编程语言中的古老的映射和化简操作”( "Our abstraction is inspired by the map and reduce primitives present in Lisp and many other functional languages.")

由于中国教育的实用主义倾向,很多从业多年的程序员都有可能对函数式编程一无所知。当然这也跟整个计算机史的一些偶然和必然事件相关,这里就不赘述了。

或者我们可以说,函数式编程的思想更接近于推理、抽象等等人类思维逻辑的方式,而图灵机(那个牛比的无限纸带模型,想想自动织布机,其实就是那东西)更接近一个物理可实现的计算模型。

我们现行的计算机的原理就来自于图灵机,所以过程式的语言跟机器语言有比较简单的对应关系。而函数式语言在现行计算机上面的实现,实际上是一个计算模型的转换。这造成了函数式语言相对过程语言的效率低下,这也就限制了函数式语言在微型机上面的应用。

然而,随着微机平台运算能力的发展,特别是多核等技术的出现。如何提高微型机上应用程序的并行能力等等需求出现了。

有趣的地方正在于此,不管是Web平台还是客户端应用程序开发,趋势都是一样的并行!!!

这正是我认为函数式编程将越来越热的原因,至于函数式编程为什么有更好的并行特性,以及历史和特点等等的信息,还是去看《函数式编程另类指南》吧。这么好的文章,我无论如何是写不出来的。

标签: , , ,



星期三, 十一月 15, 2006

[广告]雅虎寻找搜索竞价的福尔摩斯--竞价防作弊分析工程师

昨天跟车东还有一班雅虎搜索的高手们见了个面,聊了聊,他们正在努力与竞价广告中的作弊者作斗争,需要福尔摩斯的加盟,如何,你有兴趣么?

-------------

(现在是广告时间)

如果你对海量数据有较强的分析处理能力,能够透过数据发现一些潜在的问题;
如果你有超强的逻辑推理能力,能够敏锐的寻找到支持你论据的特征值,还原案发现场
如果你对 SEO 或者点击器有一定的了解,做过这方面的探索研究或者是实践;
如果你曾经是一名站长,厌倦了江湖争斗,希望成为网络秩序的捍卫者...

那么你就是我们最合适的人选,我们诚邀你加盟我们(雅虎中国)的竞价防作弊Team,还我们的客户一个明亮纯洁的广告投放空间。

如果你不具备以上的条件,只要你有一颗正直的心,同时有希望成长为一个经验丰富的网络安全卫士的决心和勇气。当你具备以下技能后,你仍然可以加入我们的队伍。

1. 1 年以上工作经验。
2. 半年以上 Linux 使用经验。
3. 开发语言:Perl/PHP/Shell,熟练掌握其中至少1种。
4. 了解 HTML/JavaCcript 网站制作技术,具有网站制作、开发经验。
5. 有过海量(百万以上)数据统计、分析经验更佳。
6. 有一定的沟通能力,具有协同工作经验。

来吧!惩恶扬善,维护世界和平的重任就落在你的肩上了!

此时此刻,非你莫属!
感兴趣的朋友给车东发电子邮件吧:

标签: ,