2013年11月15日星期五

如何猜出 Y combinator - 古霜卡比

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
如何猜出 Y combinator - 古霜卡比  阅读原文»

先约定几个记号:

  1. 定义用一个冒号加等号表示":=",
  2. 表达式全等用两个等号表示"==",
  3. 归约意义上的相等用一个等号表示"=","=="蕴涵"="。

由于lambda演算不能定义符号,所以像这样的递归定义是不能被求值的:

f := (lambda () (f))

如何在lambda验算中实现递归?从最简单的递归函数开始。希望能带来一些启发。

寻找 \(\Omega\)

首先,我们的目标是找出一个无限循环的lambda表达式。另外额外要求这个表达式最短。

一个lambda表达式只可能有三种形式:

  1. 符号(x, y, z等等),
  2. 函数(如(lambda (x) x)),
  3. 应用(英文application,即函数调用,如调用函数func,参数x写作:(func x))。

第1、2种形式又称为值(value),因为他们不能被归约了。一个无限循环的表达式只能是第3种形式:

(exp1 exp2)

考虑exp1。exp1是个函数,或者能被归约成函数的应用。如果exp1是应用,那么exp1要么会归约到一个函数,要么无限循环。如果exp1无限循环,就和我们的最短假设矛盾,所以exp1会归约到一个函数。如果exp1会归约到一个函数,那么和exp1是一个函数没什么区别。简单考虑,假设exp1是个函数:

exp1 := (lambda (x) body)

那么

(exp1 exp2)
== ((lambda (x) body) exp2)
= body[x <- exp2]

为了让表达式无限循环,我们希望:

(exp1 exp2) == body[x <- exp2]

所以body应该是个应用:

body := (subexp1 subexp2) <=> (exp1 exp2) == (subexp1[x <- exp2] subexp2[x <- exp2]) <=> exp1 == subexp1[x <- exp2] and exp2 == subexp2[x <- exp2]

从最后一个条件可以推出:

exp2 == subexp2[x <- exp2] <=> subexp2 == x

另外还能看出,表达式exp1中包含了一个和exp2相等的子表达式。满足这个条件的最简单的exp1就是和exp2相等的exp1。

exp1 == exp2
<=> subexp1[x <- exp2] == exp2
<=> subexp1 == x

综合几个条件:

exp1 == (lambda (x) body)
== (lambda (x) (subexp1 subexp2))
== (lambda (x) (x x))

exp2
== exp1
== (lambda (x) (x x))

于是我们要找的无限循环的表达式是:

((lambda (x) (x x)) (lambda (x) (x x)))

这个表达式就是lambda演算里的\(\Omega\)表达式。\(\Omega\)表达式循环的关键在于(f f)形式的表达式,即自己应用到自己。\(\Omega\)包含了三个(f f)形式的表达式。

寻找 Y combinator

一般来说,递归函数长这个样子:

target := (lambda args body[target])

body[target]的意思是一个包含target这个符号的表达式,args表示这是一个任意个数参数的函数。在这个表达式中,target是一个无约束的符号。一个包含无约束符号的表达式不能被求值。Lambda演算中约束一个符号的方法是用lambda关键字,为了让target变成约束符号,我们改写表达式:

p := (lambda (target)
(
lambda args body[target])) = (lambda (f) (lambda args body[f]))

为了避免混淆,上面将target改名成f(\(\alpha\)归约),target仍然表示我们想要的递归函数的表达式。target和p有如下关系:

(p target)
= (lambda args body[target])
= target

顺便一提,可以看出我们在寻找的target是p的一个不动点。

接下来考虑如何找target。记得寻找\(\Omega\)的启发吗?我们猜测target是一个(g g)形式的表达式:

target == (g g)
=>
(p target)
= target
<=> (p (g g)) = (g g)
<=> (g g) = (p (g g)) = ((lambda (x) (p (x x))) g)

根据最后一个条件可以看出:

g := (lambda (x) (p (x x)))
=>
target
== (g g)
== ((lambda对公司"精英人才战略"的思考 - I Am NoBody  阅读原文»

自入职一来,常常听到公司的同事、直接上级、高层领导等不断在强调——精英人才战略。经过这么多时间的观察、体验、思考,对公司“精英人才战略”在实施环节有一些自己的见解。以下是自己的个人见解,欢迎探讨。

公司情况说明

公司是一家人数约300人左右的一家提供网址导航服务的公司。公司的福利、待遇、文化等都不错,公司的人才价值观也很好。最近有投资人注资公司,投资人有盈利的预期,因此公司招聘更多的人员,做更多的事情,期望能够满足投资人的营收预期。

公司的企业文化是积极向上的,并且难得的是——企业文化不只存在与墙上、硬盘里,在日常工作过程中能够切实感受到公司文化。

总体上来说,公司还是很不错的。

精英人才战略

公司的精英人才战略是——选对人、用好人。与精英人才战略,紧密相关的是——执行力。公司认为精英人才能够产生巨大的价值,对人才很渴望。同时,公司也认为精英人才能够创造巨大的价值,精英人才的执行力是非常强的。

思考

从上面对公司精英人才战略的解释与说明来看,公司的精英人才战略,本质上没有什么问题,出发点也是正确的,也抓住了人才这个关键。可以说,葛优的那句“21世纪什么最重要?人才!”这句话,公司高层深深的领会,并且坚决贯彻执行。

到现在为止,公司的精英人才战略还一切正常,并且起到良好的作用。但是在具体执行、实施公司精英人才战略的过程中却有一些重要的不足。

一、选人大于用人

在公司提出精英人才战略的时候,其含义是选对人、用好人。选人的重要性不言而喻。选不对人就需要用很多时间去培养,更有甚者还会有培养了好久而没有成果的情况发生。人选进来之后,就进入用人环节。用人包含了解人员的优缺点,使用其长处,抑制其缺点,进行培养提升其能力。

对于用人的上述理念,公司领导、中层领导也都在讲,可是实际执行过程中却很不理想。中层在执行过程中对于引进人员的缺点的关注远远大于对其优点的关注、对于其引进人员的培养几乎没有。

此种情况下,只能寄希望与引进的人员正好能力很强,学习方法、欲望交大,抗压能力比较强,基本是靠人员自身来去适应这个环境。

公司对于用人的失策,导致本来能够维持平衡快速协调一致走路的两条腿,变成了一条腿特别粗、一条腿很瘦小的畸形。

二、不是人人都是精英

因为选人大于用人,公司对于人的渴求就更加急切。自己无法造血,所以只能渴望通过选人来输血。可是符合公司要求的精英人才(公司其实希望下达一个任务后,接受任务的人消失一段时间后,拿出完美的成果,中间有几次汇报就更好了)很少。这样的人能力强、薪资要求高、有自己的工作方法、管理理念,并不一定满足公司的这种要求。所以,很难找到满意的人才。

另外,虽然说公司文化、福利、待遇各方面不错,但是与大公司、外资企业是没法比的,同时对于执行力的畸形强调,导致工作压力很大,导致人才并不一定能够待的下去。

所以公司的精英人才战略执行较困难的一个原因在于——很难找到如此精英的人才。

三、执行不一致

300多人的公司,肯定会有不同的部门,不同的部门就有不同的领导,不同的领导就有不同的领导、管理风格。公司的某部门A对于公司的各种政策、特别是精英人才战略的落实,不但到位,而且有些越位。对于其他部门的人,虽然没有经常性的接触,但是在了解过程中发现,他们部门对于精英人才战略的执行不很到位,有时甚至是很不到位。此时部门A的员工会怎么想?!更令人诧异的是那个部门B的领导在公司高层那里比本门A的领导更加受器重。

总结

大家都知道航母是国之重器。其巨大作用与其巨大的体积是分不开的,正是因为其体积巨大,导致起能够携带很多的飞机,具有极大的攻击力。可以说,体积巨大是航母最重要的优点;但同时,体积巨大导致其很容易被发现,又被称为ha海上浮动的棺材,为了保护航母,不得不为其配上数量众多的各种护航、保养的舰船。一个航母边对就这样产生了。

由此可以看出,其优点很可能也是其致命的死穴!

公司对于精英人才战略的渴求与执行是其优势,同时也是其劣势,如果协调不当就可能产生较大的问题。

有人说过:每个大型组织都有成为其自身文化的牺牲品的可能。


本文链接:http://www.cnblogs.com/IAmNobody/p/3426520.html,转载请注明。

阅读更多内容

没有评论:

发表评论