2009年4月28日星期二

KissPhone:可让你品尝香吻的电话


热恋中的男女来一个法式亲吻绝对可以表现出两人之间的甜蜜爱情,但是当二人分隔两地时只有通过电话以及虚拟的吻声来表达心中的思念之情。为了弥补这个遗憾 一位名为Georges Koussouros的法国发明家设计出了一款名为“KissPhone”的电话,据说通过这款电话你将可以品尝到电话另一头恋人那充满热情的一吻。

KissPhone被设计成了一对巨大的嘴唇,可以用于测量你嘴部的压力、亲吻时的速度、温度以及嘴部吸吮的力量,这些数据都可以通过另一头的“KissPhone”重新还原出来,从而让另一头的恋人以物理的方式享受心爱之人充满激情的法式热吻。

KissPhone:可让你品尝香吻的电话

呵呵~终于有人去实现这个创意了~

Posted via web from timnew's posterous

大庆市反腐倡廉宣传教育网-关于组织纪检监察系统网评员对陈绍基王华元接受组织调查的消息进行跟帖的通知


关于组织纪检监察系统网评员对陈绍基王华元接受组织调查的消息进行跟帖的通知

各网评员:

新华网于2009416日下午发布“广东省政协主席陈绍基、浙江省纪委书记王华元涉嫌严重违纪,目前正接受组织调查”的消息。为做好舆论引导工作,根据中央纪委宣教室、省纪委宣教室的统一部署安排,现提出如下要求。

1、各纪检监察系统网评员对陈、王二人正接受组织调查的消息进行跟帖,重点是在新华网、人民网等中央重点新闻网站和新浪、搜狐、网易、腾迅等商业网站上关于此消息和其他相关报道的文章后面进行反复跟帖,有效引导网上舆论。

2、引导方向重点有以下几点:一是中央反腐决心大、力度大;二是不论是谁只要违纪违法都要一查到底,党纪国法面前人人平等;三是对陈、王二人既不抹杀以前的功绩,也不放过违纪行为,功是功、过是过;四是要防止曾经被他们查处过的腐败分子借机翻案;五是反腐无禁区,对纪检系统的领导干部违纪照样查处,更加彰显中央反腐决心;六是中央、省委及时发布消息是对网络民意的重视,等等。

3、对本地网站转载此消息及相关新闻报道的,要做好舆论引导工作,做到守土有责。

4、只组织上帖跟帖,不组织开展评论。

5、要及时选择精华帖报省纪委宣教室

6427前各网评员汇总报送全部跟帖,并标明跟帖数量。

 

 

 

                           市纪委宣教室

                         2009421

真壮观~这种东西都往网站上放~

Posted via web from timnew's posterous

2009年4月27日星期一

pearlher:西门子受贿案中牵涉的那个中方人员是谁?


日前,全国媒体同时收到来自中宣部的禁令,禁止所有媒体提到西门子公司行贿的中方人员。《北京日报》评论部主任告诉相关媒体记者,无论是中宣部还是新闻办,都没有禁止对西门子在中国行贿的丑闻进行报道,可唯独不许报道中方涉案人员。

西门子全球腐败案牵涉到了中国。美国司法部文件披露,西门子“行贿门”事件涉及在华3家子公司,分别是西门子中国输变电集团(下称“西门子PTD”)、西门子交通(下称“西门子TS”)和西门子医疗集团。涉及中国电力、交通、医疗市场的一些官员。

2007年秋,西门子中国有限公司总裁理查德-霍斯曼在上海对记者表示,公司内部进行的调查显示,西门子公司在中国的经营存在一些「不适当的商业行为」,西门子公司不能容忍这种行为。过去一年里,公司已经解雇了20名与这些「不适当行为」有关的雇员。

2008年12月17日,上海第一财经日报报导,美国司法部文件披露,西门子中国公司在中国大陆涉嫌行贿,涉及金钱约20亿美元。

中国是西门子公司的第三大市场,仅次于德国和美国,但在行贿额方面,中国是西门子公司的第一大市场。西门子中国有限公司在中国设立了70个分公司,另设60个地区性机构,共有雇员4万3千多名。仅3年,西门子在中国的市场份额从3.5%提高到6%,截止到2007年6月底的前9个月,西门子公司在中国市场的销售额比去年同期增长了10%。总额接近600亿欧元。

目前,在美国和德国的压力下,西门子已经向各国提交了受贿人员的名单,这一名单也同时呈送给了中国政府。然而,就在中国政府得到这一名单后,却如临大敌。

美国哥伦比亚特区地方法院公布的诉讼书显示,2002至2007年间,西门子TS支付了约2200万美元,给设在香港的商业谘询公司和相关机构,并且透过这些机构对中国官员行贿,以得到总额逾10亿美元的7个地铁列车和讯号设备项目。涉案的包括西门子交通(TRANSPORTATIONS SYSTEM,简称“西门子TS”),中国方面涉案人是江泽民的儿子
 
诉讼书同时显示,2002至2003年间,西门子PTD透过支付约2500万美元给商业谘询公司,用以行贿+++等中国官员。涉案的西门子中国输变电集团(简称西门子PTD)得到了华南地区两个总价值约为8.38亿美元的电力高压传输线项目。

此外,2003至2007年间,西门子医疗集团支付了约1440万美元的贿款,向5家中国国有医院行贿,以获得2.95亿美元的医疗设备订单,支付方法是设立一个基金,让中国医生进行豪华旅游。

附江绵康简历: 1957年出生,籍贯江苏,生于上海,上海第二工业大学,曾在西门子工作过,上海市建设和管理委员会巡视员,上海城市发展信息研究中心主任

世界上没有不透风的墙~即使这个墙被关于了Great这个词也不行~
这样的消息能封锁多久呢~

Posted via web from timnew's posterous

搞屁: 恐怖的红色高棉


【 阿波罗新闻网2009-04-15讯】 作者:辛声

经历过"文革"的我们这代人,恐怕都不会忘记红色高棉这四个字。上世纪它掀起的那场疾风暴雨般的"高棉革命",誓言要在最短的时间中消灭一切差别,建成共产主义的人间天堂,曾让多少邻国年轻的"共产主义接班人"热血沸腾,心驰神往!不难想像,因为有这样的经历,几十年后,当我们走进柬埔寨S21大屠杀纪念馆,第一次了解到"高棉革命"的暴虐真相时,会陷于怎样的震惊和震撼!

纪念馆里保存的许多死难者照片让人过目难忘。我印象最深的是一位中年妇女,她是当地学校的校长,红色高棉最深恶痛绝的就是她这样的知识份子,于是,她与她的婴儿被同时处死。死前,她还被实施了残忍的"活体取脑"――
从头顶和脑后钻孔,在未死前取出脑浆,供医药使用。据说活人的脑浆属于"大补"。在即将钻取她的脑浆时,照片上的这位知识女性神情平静,但脸颊上滴流的的泪珠却清晰可见。这样的泪珠有谁见过能忘记?

刚刚过去的3月 31日,在经历了多年的拖延以及程序问题障碍后,由联合国发起成立的柬埔寨战争罪法庭终于对当年执掌S21(第21号安全监狱的简称)的红色高棉头目康克由进行了第二次反人类罪审判。66岁的康克由被控反人类罪、战争罪和虐待和残杀人民等多项罪名,他在法庭上承认对S21监狱的17000名受害者负有责任,表示为"所有罪行表达悔疚"。他说:"我知道我对柬埔寨人民,特别是妇女和小孩犯下的罪行,都是不可饶恕的重罪"。

康克由的受审和公开认罪,将红色高棉30年前的罪恶再次拉回到人们的视线中。由红色高棉领导的"高棉革命"尽管昙花一现,却是二十世纪世界共产主义运动的一个极端典型,为我们认清共产主义的本质提供了一个不可多得的标本。那么,以暴虐血腥著称的"高棉革命"究竟给后人留下了何种启示呢?

一.

1960 年9 月30 日,在金边火车站的一间破旧房屋里,信奉共产主义的柬埔寨劳动党(即红色高棉)宣告成立。不久,以五十年代留法归来的波尔布特、英萨利、宋成、乔森潘等人为首的"留法派"成为红色高棉的领导核心。上世纪七十中期,红色高棉利用抗美救国战争的机遇,通过农村包围城市,成功地夺取了柬埔寨的政权。

掌权后的红色高棉自认为承担了在一场世界范围内不断加速的共产主义革命中最后冲刺的任务,马不停蹄地在柬埔寨发起了一场被其称为"前无古人"的"高棉革命
",试图在最短的时间内用暴力对原有的社会进行彻底改造。不过,极具讽刺意味的是,尽管这场所谓的革命一直自称也自以为其目地是为了实现社会正义的美好理想,"一举建成共产主义",但它带给柬埔寨的却是一场前所未有的灾难,在短短几年中竟把这个信奉佛教的古老国家变成了一座名副其实的人间地狱!

红色高棉当政后的柬埔寨,不但经济萧条,民不聊生,而且生灵涂炭,血流成河,社会的不平等不仅没被消灭,反而更加尖锐了。

红色高棉公开把柬埔寨人口划分成享有不同权利的两部份。在掌握政权后,它把原来生活在其控制下的乡村农民称为"旧人
"或"根据地人",意为他们已经参加了"
革命",而那些由城里遣散下乡的称为"新人"或"4月17日人",意为在红色高棉进城后被接收的人。这两者原则上享有不同的政治待遇和生活配给,前者还负责对后者的改造和监督。

除了根据城市和乡村来划分人口外,另一种分类是把人口分为"充分权利者"和"候选者"(意为权利不完整者)。后来又从这两个类型中进一步分出亚类型。"一级完全权利者"是亲友中过去没有人为朗诺政权工作只有为"革命"服务的;"二级完全权利者"是亲友中既有参加"
革命"又有人在朗诺政权那里的;此外还有"三级完全权利者"。而"候选者"也划为两等,第一类是有亲友为朗诺政权服务,但多数是一般人,有些间接为"革命
"服务过;第二类是完全没有亲友为"革命"做过事的。

尽管红色高棉声称革命的目地是为了实现社会正义,但在实际中却通过对社会阶级结构的这种人为组合和划分,恢复了南亚社会的种姓制度。"公民"并非人与生俱来的权利,而成为社会中一个特殊的等级,同时通过把各种异己份子或仅仅是没有积极地参加"革命"的人排除出"公民"
的范畴,使得随意迫害和剥夺他们的生命权有了"合法"的理由。值得一提的是,那些"根据地人"和"完全权利者"也仅仅是在纸面上享有比前者完整的权利,至于在红色高棉面前他们照样是没有任何"完整权利"可言的。例如实行集体化以后,他们没有离开原来村庄的自由,所有财产都被剥夺,私藏粮食查出后要被处死刑。随着经济形势的恶化,他们集体食堂的饭锅里也和他们专政对象的一样,都只有糠皮。

一场自称和自以为是在实现社会正义建立人间天堂的所谓史无前例的革命,为何到头来结果竟与其如此南辕北辙?这恐怕是这场"革命"最耐人寻味和最值得追问的地方,也是许多关注和研究共产主义运动的人一直都在思考的一个重大课题。而答案就存在于这场"革命"与众不同的特殊性之中。

二.

"高棉革命"最显著地特点之一莫过于对人类普世价值的彻底颠覆和肆意践踏,这也是这场所谓的"革命"必然把柬埔寨拖入地狱的根源之一。

从以往的人类历史来看,社会的稳定与和谐从来都是建立在普世价值被遵行的基础上的。什么是普世价值?普世价值的核心就是对人的尊重和约束,而这一切恰恰都被红色高棉抛到了九霄云外。在他们看来,建成共产主义天堂乃是至高无上的革命理想,为此可以采用一切手段,无所不用其极,人的生命也好权利也好通通都无需放在眼里。这样一种惟我独尊的冷血逻辑使红色高棉成了地地道道的杀人狂,把从肉体上消灭一切敌对份子,当成了他们实现政治目标最重要的手段。

早在红色高棉进城一个月后召开的金边会议上,在宣布新政策的同时,红色高棉主要领导人之一的农谢就特别强调了"严密甄别"的原则,根据与会者的解释,这就是说在实行这些政策的过程中可以随时使用暴力,把那些反对者和不满者清除掉,不要把他们留在新社会。因此,红色高棉掌权后,每位新人必须重新登记,交代以前的历史。凡在朗诺政权服务过的人、对新政权不满者、地富反坏、不愿自动离开金边者,一律格杀勿论。接着是清理阶级队伍,有产者、业主、资产阶级知识份子、教师、医生及其他专业人士都不是无产阶级,属于清理之列,连戴眼镜的人也不放过。然后是种族和宗教迫害,会说外语也是死罪。

1977年9月 27日,红色高棉最高领导人波尔布特在一篇重要讲话中称,总人口中有2%是"反革命份子",这个数字约14万人。值得注意的是当时对社会上政治敌对份子镇压的高潮已经过去,但仍然有这么大比例的敌对份子有待镇压,可以想像从1975年4月到1978年底越军进入金边为止,以"反革命份子"为罪名被处决的人口之庞大。

红色高棉不但大肆屠杀他们眼中的敌对分子,而且在自己内部也大开杀戒,搞大清洗。红色高棉从一建国就以肃清亲越份子、克格勃间谍、美国中央情报局特务和新混入党内的异己份子为藉口开始了内部清洗。在1975年10月宣布的民族阵线的十三个领导人中,有五个在1977
年的清洗中被处决,包括内政部长、两任商务部长、新闻和宣传部长、国家主席团第一副主席等等。各大区的党政军领导人被处决的更多。最集中的一次是1978
年对被认为是亲越派的东部大区干部和军人的清洗,由西南大区的领导人塔莫负责,一次屠杀了近十万名红色高棉的自己人。此外在金边南部的一所高中建立了审讯中心,代号
S21,主要用来审讯、拷打和处决党内敌人。据估计,这个中心一共处决了14000人。一名S21的员工在工作笔记记下了这样一段话,1976年2月,康克由在员工会议中教导他们:"你一定要摆脱打囚犯是残酷的想法,在这种情况下,仁慈就被错用了。为了国家、阶级和全世界,你一定要打他们。"要把囚犯当做
"连垃圾都不如的"或者"人类以外的其他生物","只有从他们身上逼取招供文,才能更好地保卫革命"。

据专家推算, 1975-78年红色高棉统治时期柬埔寨共计死亡了150万人左右,占总人口的五分之一,远远超出了许多国家在新政权建立后政治清算和镇压的规模,因此法国学者拉古特把柬埔寨的这段历史称为"自我灭绝的屠杀"。

连生命都不当回事,还会把人的权利和尊严放在眼里吗?当然更不会了!与希特勒的"第三帝国"一样,"高棉革命"乃是
"恐怖政治"的典型,从头至尾都是建立在强制基础上的。在席卷一切的红色飓风面前,个人毫无选择余地,权利完全被剥夺,根本没有尊严可言。史无前例的撤空城市便是这种"恐怖政治"的缩影。

1975 年4月17日,红色高棉一占领金边,就以战备为借口强行把城市居民遣散出城,欺骗他们说美国人要轰炸金边,谁也不准留下,不准携带行李。在士兵的强行驱赶威吓之下,四天之内,所有金边人被迫离开了世世代代居住的家园,放弃所有财产,成为彻头彻尾的无产者。素有"东方巴黎"之称、并有两百万人口的金边,数日之内就成了死寂的空城。不仅是首都金边,这种强制性的遣散是全国性的。为了实践农业乌托邦计划,红色高棉的军人荷枪实弹,把所有城市居民都赶到了乡下改造。体弱的人还没到达目的地,就病死在去乡村的徒步跋涉中。有幸到达目的地的,一落脚便开始了刀耕火种的日子。

《逐浪湄河》的作者黄时明曾是中共派驻柬埔寨的间谍,公开身份是一位华侨小商人。1975年红色高棉强制驱赶城里人迁到穷乡僻壤去,这位华侨小商人自然不能例外,一家人也被从金边驱赶到偏远的农村,再被驱赶到更加偏远的山区,途中全家颠沛流离饱受折磨,与蚊虫蛇蝎为伍,与饥饿的老鼠为伴,自己生病,妻子生病,母亲生病,还有一个侄子死亡。自己一家、加上弟弟的一家,连同母亲一共十二口人,仅仅只有两个月的难民生活,让黄时明对红色高棉完全绝望。他万万没料到"红色政权"送给人民的第一份礼物,竟然是这样一场浩劫。万般无奈之下,他违反了组织纪律,向红色高棉的基层干部表明自己的的真实身份,干部层层上报,这才使他获得解脱。

可见,由于普世价值被彻底颠覆和肆意践踏,红色高棉统治下的柬埔寨不可避免地陷入了生灵涂炭的腥风血雨之中。一方面,统治者因为失去了起码的约束而为所欲为,另一方面,被统治者则因为缺乏必要的保护而惨遭奴役,甚至连性命都无法保全。什么社会正义,人间天堂,革命理想,无一不成了饱含血泪的讽刺!

三.

" 高棉革命"不仅是对普世价值的彻底颠覆和肆意践踏,而且是对先前存在的一切历史传统和文明成果的彻底破坏和摧毁。就像一位研究者曾说的那样,在这场"革命
"中,"一切先于这个体制而存在的都或是必须被摧毁或是至少必须被彻底改造的"。这种极其罕见的破坏性也是"高棉革命"必然将柬埔寨拖入地狱的另一个重要因素。

提到传统,人们总是习惯于将它和文化联系在一起,其实传统不止是文化,还包括制度等等,涉及社会的各个领域。它扎根于人性之中,是经过时间淘洗之后被保存、继承和延续下来的一切文明成果的总和,也是人类智慧的结晶。历史上,任何一代人的智慧和能力其实都是有限的,都不足以使他们能够独立应付生存的严峻挑战,而传统则弥补了这种不足。通过继承前人的智慧,人们避免了盲目无益的弯路和重复性的劳动,不仅使基本的生存和正常的生活得以维系,并且能够同时进行富有成效的变革。因此,社会的发展和文明的变迁必定是连续性的,换句话说,任何一种社会和文明,都是在一定传统的基础上建立起来的,也都是在这个基础上发展变化的。不难想像,一个摧毁全部传统一切重起炉灶的社会将会是怎样的情景,那不成了一个人们在其中盲动胡为随心所欲的实验场吗,这样的社会连基本的生存和正常的生活都无法维持,怎么可能不陷于混乱和崩溃呢?!红色高棉统治下的柬埔寨呈现给我们的正是这样一幅图画。

从目前已经掌握的资料来看,红色高棉当政后,试图消灭一切差别,撤空了城市,废除了货币和市场,禁止私人拥有财产,取消家庭,甚至婚姻也由组织安排,婚后夫妇要分开居住。禁止人们从事宗教活动,勒令僧侣还俗,寺庙用作仓库。视知识为罪恶,不设正规学校,禁用书籍和印刷品。只唱革命歌,跳革命舞,取缔传统歌舞戏剧,严禁西方文化传播。人们不能自由流动。全国没有邮政电信,也没有医院。

与先前在苏联、中国和越南发生的共产主义革命相比,由红色高棉在柬埔寨发动的这场共产主义革命显然更极端。在苏联、中国和越南,共产党当政后,至少还暂时保留了货币、学校、医院和家庭,而这些都是被掌权后的红色高棉清除的对象。以家庭为例,无论是在苏联、中国还是越南,共产党上台后,作为社会基本单位的家庭虽然从观念到形态上都受到了极大的改造,但其基本结构还在,家庭没有被废除。而红色高棉则把废除家庭作为重构社会的起点,在夺取政权以前就实行了,夺取政权后在全国推广,合作社和各种强制劳动组织成为了社会的最基本单位,一个家庭的成员按照性别和年龄被分进不同的组织,未成年子女和父母分开。男子32岁、女子25岁以下不准结婚。废除家庭的另一个重要形式,也是实行得最彻底的,是公共食堂制。公共食堂的意义决不仅仅是坐在一起吃饭,而是消灭社会生活的私人空间。红色高棉把废除家庭进餐看成最能体现柬埔寨革命创造性的成就。

撤空了城市,取消了市场和货币,关闭了学校和医院,废除了教堂和寺庙,甚至没有了家庭和私人空间,这还能叫正常的生活和社会吗?又有谁会适应和喜欢这样的生活和社会?这样的生活和社会究竟是令人向往的天堂还是万劫不复的地狱?我想,柬埔寨人民对红色高棉搞的这场所谓革命的坚决吐弃已经对此作出了明确的回答。

一百多年前,共产主义的老祖宗马克思恩格斯就在《共产党宣言》中向世界宣称:"共产主义革命就是同传统的所有制关系实行最彻底的决裂;毫不奇怪,它在自己的发展进程中要同传统的观念实行最彻底的决裂。"
但马克思恩格斯决不会想到,一百多年后,他们的狂想竟不是在经济发达的欧洲,而是在柬埔寨这么一个远比欧洲落后的亚洲小国完全变成了现实,甚至超过了共产主义革命的圣地――苏联和中国。只不过,这种现实绝不是对共产主义运动的肯定,而是对它的无情嘲讽和鞭挞。

"高棉革命"用150万死难者的血泪和白骨告诉后人――任何一种理想和革命,无论听上去多么纯洁和美好,也无论能唤起人们怎样的斗志和激情,只要它以普世价值的被践踏和文明传统的被摧毁为代价,都注定了只能是一场罪恶和灾难。这样的理想和革命,听上去越是纯洁和美好,唤起的斗志和激情越是高昂,犯下的罪恶和造成的灾难也越大!共产主义运动便是这种嗜血理想和恐怖革命的范本。在它令人迷惑的外表下,包裹着的其实根本不是对正义的追求,而是自大狂们疯狂的权力欲和扭曲的道德虚荣心。

这样的理想和革命,难道还不该彻底推出历史舞台吗?

时间: 21:46

PS1:传统、民俗其实就是一个国家的文化。以强权为基础的反传统,其实就是在抹杀文化,和焚书坑儒没有任何区别~
具有数千年文化积淀的中华民族,不也因为一次次残暴无人性的文化肃清运动,把传统文化几乎是丢弃一空。
造就了当代几乎可以称之为文化的荒漠的当代中国。

PS2:以少数人的意志为向导的社会改造是一种愚蠢的行为。社会的演化进步是应当以社会成员自发的集体的意识为转移的,而不是以少数人诱导下的,以强权为保证的意识。
共产主义革命的致命问题就是出自于此,无数的“革命领导人”肆意的以自己的意识,无顾忌的改造社会,最终不可避免的走入集权政治的死胡同。

PS3:传统文化是人类社会智慧的结晶,其中有适应当代社会的,也有不适应当代社会的,肆意的否定前人的智慧,只会重蹈前人的覆辙。
过于集中的权利导致了领导人的自我膨胀,迷失在权利之中,肆意的否定人类数千年形成的共识,甚至做出消灭家庭这样荒唐却真实的行为。

PS4:集权制政治最怕的就是思想入侵,自由平等思想的入侵,可以很快的破坏掉集权政治的基石。因此集权制政权都会极其严格的文化审查制度,看看改革开放前的中国、看看至今为止依然把短波收音机作为违禁物品的朝鲜,看看这个时期的柬埔寨。

PS5:文化之有开放和不开放两种选择,而不开放必然会走向开放。在开放和不开放之间不会存在第三种选择,文化的融合是一种必然趋势,文化差异的壁垒是需要靠文化和传统去塑造。决绝对对不是通过某些强制的限制和审查制度可以做到的。
因此让GFW这样愚蠢的东西赶紧去死吧~

Posted via web from timnew's posterous

2009年4月26日星期日

揭开"同学聚会"所谓的真实面目


     有钱有势,混得很得意的同学巴不得的天天同学聚会,在精神上压倒男同学,在肉体上征服女同学,将同学时期的意淫变成现实。而比较落魄的同学则害怕同学会上见面,精神上受到摧残不说,还要作为得意同学炫耀财势的一个用来作比较的道具,心里也许还有个小小的奢望,那就是那些混得好的同学能不能帮上自己一把,其实这是幻想,那些混得好的同学之所以乐衷于开同学会,就是来看你现在的落魄和女同学们的艳羡的!!而同学聚会只不过是又一次的表演罢了。 


  1 同学聚会的首义者以外地归来者居多,往往已经混得有几分人样。多年衣锦夜行,憋屈得厉害,这回当然在同窗前显摆显摆。他希望来的人越多越好,聚会前夜说不定还要精读《毛主席回韶山》。 
  2 当年有些姿色的女生这回一定会脸上精描细抹,衣柜里千挑万选。如果是提前知道消息的,铁定还要饿上几天,争取能穿进那件卡腰的高级套裙。 
  3 抢着买单的那位多半当年穷得叮当响,或者成绩不佳。他要告诉大家,象我这样的也是可以混出来的,你们不要老眼光看人。他一定是开车来的。好车。并且他一定很愿意送每一位同学回家,一副情深义重不忘旧谊的样子。 
  4 话少的同学并不是老成持重,而是因为经历平淡且混得不好。大家谈论的新潮名词或根本不懂,或掌握不熟练。怕说错了出丑,便索性不开牙。 
  5 有富不显,有车不开,有单不抢。这种人多半当年就很风光,经过了也就不在乎了。当然也有当年就很糗,现在还能不动声色的。这类人比较可怕,要么城府很深,能成大事。要么虚伪狡诈,品质可疑。 
  6 带老婆出席的有两种情况:一是老婆长得比较争气,带出来有面子。二是老婆担心他跟旧相好的擦出什么火花,一同出席能起警卫和监督之效。出门之前,必要叮嘱老婆几句:平时怎么糟践我都没关系,但这次一定要给我留面子,我说话别插,不许瞪眼,记得要给我盛饭,递杯子……” 
  7 去了趟美国的一定会找机会说出来,谈资本,谈纽约,最后来一句:其实也就那样。这边赶紧接茬谈起欧洲八国游,谈人文,谈艺术。那边去过澳洲的插不上话,急得抓耳挠腮。这时你要是能淡淡地来一句:不才在伦敦呆了八年。保管当场鸦雀无声。 
  8 当了官的接手机绝不肯离席,拿着电话指挥秘书或部属开展工作,声音不大但是足以保证在座的都能听到。语气较平时蛮横且坚决,表情略显威严且带一丝厌倦,一副运筹帷幄很懂管理的样子。 
  9 官当得太大的人不会轻易参加同学聚会。 
     
  同学聚会,心眼多的钻被窝,心眼少的在唠嗑,不多不少在乱摸,一个心眼的在唱歌,缺心眼的往死喝!!:(


Charles Kettering  - "My interest is in the future because I am going to spend the rest of my life there."
--~--~---------~--~----~------------~-------~--~----~
脑瘫党内部密信
邮件列表地址:NTParty@googlegroups.com
草稿模式发布:NTParty+unsubscribe@googlegroups.com
英文Web主页:http://groups.google.com/group/NTParty
中文Web主页:http://groups.google.com/group/NTParty?hl=zh-CN
-~----------~----~----~----~------~----~------~--~---

Posted via email from timnew's posterous

2009年4月25日星期六

银行住房贷款竟按一年372天计息


一年有多少天?“平年365天,闰年366天。”但银行住房贷款竟按一年372天计息。

作者:新华网网友“黑暗的沉思”

我们来做一个游戏吧:一年有多少天?可能幼儿园的小朋友都会回答:“平年365天,闰年366天。”但如果把这个问题提交给银行,你可能会得到这样一个答案:“372天。”

你可能会觉得这个答案很荒唐。但现实告诉我们,这个看似荒谬的答案在银行看来绝对正确!

如果你在银行有住房贷款,你可能不一定知道贷款月供是如何计算出来的;即使你知道月供是如何计算的,你也不一定清楚月供的构成;即使你知道月供的构成,你也不一定清楚利息是如何计算出来的。因为在一般人看来,这些计算过程实(博客)在太复杂了。

但利息计算过程其实非常简单。利息=本金×计息天数×利率×折扣率。

个人住房贷款的利息计算也是这样的,方法没有任何问题,问题出在每月的计息天数上。银行在计息天数上,有几个天数选择:储蓄存款――每月30天,对公存款、贷款――日历(实际)天数,住房贷款――每月31天。

下面我以一个实例来证明:

这是一个真实的银行扣款表,表的前5栏是从网上银行输出来的,实际利率是根据利息×360÷本金÷计息天数计算出来的。我结合银行的5年期以上的贷款利率,2008年为7.83%,2009年为5.94%,银行给的折扣是82.2580%,实际利率分别为6.4408%、4.8861%。

表中,双月利息计息天数为31天,这没有任何问题,如2008年1月21日――2008年2月21日,这个期间计息天数为31天。问题出现在单月的计息天数上:2008年2月21日――2008年3月21日,计息天数应该为29天,利息应该是357547.44×29×6.4408%÷360=1855.11,而银行按31天计算的利息是1983.05,多收了127.94。全年的多收利息情况见下表:

每年1月,由于发生利率变化,我分段计息的金额与表中一直对不上,不知道银行是如何计算的,但因为与计息天数无关,可以忽略。从上表我们可以看出,银行在2008年多收利息318.75元,按这种计算方式,银行在2009年将多收332.75元。银行每月扣借款人的钱没有改变,多收的利息,相当于少还了本金。

如果贷款期限是10年,银行将多扣68天的利息;如果贷款期限是20年,银行将多扣135天的利息,银行将多扣203天的利息。按照贷款100万元、利率5%计算,10年、20年、30年贷款银行最终将多收利息(100万÷2×5%×天数÷360)4722.22、9375.00、14097.22,而这还不包含复利。

我非常希望这是一个个案。但理智告诉我,这绝不是一个个案,而且也决不会是一家银行如此操作。

2009年1月6日中国人民银行金融市场司副司长霍颖励称目前个人住房贷款余额2.95万亿,照此计算,如果银行每年多收7天的利息,将从百姓口袋多拿去30多亿元。而这30多亿元,本应是归还贷款本金的。因为少还了本金,这部分少还的本金还将月复月、年复年地产生利息。目前,个人住房贷款余额还在增加,银行每年多收的利息也还在增加。

而这种行为,算不算盗窃呢? (本文来源:新华网 )

Posted via web from timnew's posterous

银行住房贷款竟按一年372天计息


作者:新华网网友“黑暗的沉思”

我们来做一个游戏吧:一年有多少天?可能幼儿园的小朋友都会回答:“平年365天,闰年366天。”但如果把这个问题提交给银行,你可能会得到这样一个答案:“372天。”

你可能会觉得这个答案很荒唐。但现实告诉我们,这个看似荒谬的答案在银行看来绝对正确!

如果你在银行有住房贷款,你可能不一定知道贷款月供是如何计算出来的;即使你知道月供是如何计算的,你也不一定清楚月供的构成;即使你知道月供的构成,你也不一定清楚利息是如何计算出来的。因为在一般人看来,这些计算过程实(博客)在太复杂了。

但利息计算过程其实非常简单。利息=本金×计息天数×利率×折扣率。

个人住房贷款的利息计算也是这样的,方法没有任何问题,问题出在每月的计息天数上。银行在计息天数上,有几个天数选择:储蓄存款――每月30天,对公存款、贷款――日历(实际)天数,住房贷款――每月31天。

下面我以一个实例来证明:

这是一个真实的银行扣款表,表的前5栏是从网上银行输出来的,实际利率是根据利息×360÷本金÷计息天数计算出来的。我结合银行的5年期以上的贷款利率,2008年为7.83%,2009年为5.94%,银行给的折扣是82.2580%,实际利率分别为6.4408%、4.8861%。

表中,双月利息计息天数为31天,这没有任何问题,如2008年1月21日――2008年2月21日,这个期间计息天数为31天。问题出现在单月的计息天数上:2008年2月21日――2008年3月21日,计息天数应该为29天,利息应该是357547.44×29×6.4408%÷360=1855.11,而银行按31天计算的利息是1983.05,多收了127.94。全年的多收利息情况见下表:

每年1月,由于发生利率变化,我分段计息的金额与表中一直对不上,不知道银行是如何计算的,但因为与计息天数无关,可以忽略。从上表我们可以看出,银行在2008年多收利息318.75元,按这种计算方式,银行在2009年将多收332.75元。银行每月扣借款人的钱没有改变,多收的利息,相当于少还了本金。

如果贷款期限是10年,银行将多扣68天的利息;如果贷款期限是20年,银行将多扣135天的利息,银行将多扣203天的利息。按照贷款100万元、利率5%计算,10年、20年、30年贷款银行最终将多收利息(100万÷2×5%×天数÷360)4722.22、9375.00、14097.22,而这还不包含复利。

我非常希望这是一个个案。但理智告诉我,这绝不是一个个案,而且也决不会是一家银行如此操作。

2009年1月6日中国人民银行金融市场司副司长霍颖励称目前个人住房贷款余额2.95万亿,照此计算,如果银行每年多收7天的利息,将从百姓口袋多拿去30多亿元。而这30多亿元,本应是归还贷款本金的。因为少还了本金,这部分少还的本金还将月复月、年复年地产生利息。目前,个人住房贷款余额还在增加,银行每年多收的利息也还在增加。

而这种行为,算不算盗窃呢? (本文来源:新华网 )

Posted via web from timnew's posterous

2009年4月24日星期五

『新闻周刊』如何扳倒金正日


新闻周刊:《如何扳倒金正日》(意译)

 

和朝鲜讨价还价没有任何意义,唯一的出路是引发政变,如何扳倒金正日呢?且听下文:

 

最近几个月,朝鲜出乎寻常的好战。和韩国彻底决裂;测试新导弹;上周收到联合国谴责后更是威胁永久性推出核削减谈判并重启核武器项目。

 

最近不少声音说此举只是一种姿态,目的还是给即将来临的美朝谈判增加筹码,但最终朝鲜必将走上中国式的道路——放弃挑衅,对外开放。这样的说法是极其危险的幻想,金正日和他的幕僚清楚地知道,一旦向外界开放,他们的政权就不堪一击。朝鲜跟中国的情况不同,朝鲜的旁边是同根同源,却大富大贵(人均收入至少是朝鲜的20倍)的韩国做参照。目前普通朝鲜人对此还一无所知,一旦开放,就意味着他们可能会因为羡慕南方的同胞而走上东西德国融合之路。因此对金正日政权来说,只有持续对立才是最好的对策。而对我们而言,要制止金正日,就只有一个办法:政变。

 

要引发朝鲜政坛的地震,硬来是不行的。中国和俄罗斯不会全力配合军事行动。制裁也行不通,即使中俄合作,唯一的受害者只会是朝鲜农民。朝鲜1996-1999年的大饥荒表明,在压抑甚至恐怖环境下,当地人也不会揭竿而起。朝鲜人被吓怕了,没有组织,而且基本上没有意识到他们的悲剧会有其他出路。

 

但还有三条路,那就是和平演变。15年来,在走私过来的、受欢迎的韩国电影DVD的推动下,关于韩国的繁荣的流言已经开始散播。世界上最完美的斯大林政权开始从下层瓦解。要加速这一趋势,美国及其盟友应该给予援助,给朝鲜学生提供奖学金,让他们能够走出朝鲜,接触世界。东欧的经验证明,未经审查的外部信息的涌入对共产主义独裁政权而言是致命的。

 

当然金正日政权也明白这种交流的危险,但他们对金钱和技术的渴求使得他们不得不屈服。而当这种交流给政权高层收益的时候(比如留学生资助计划的受益者就肯定是高干子弟),他们就更不会反对。但即使高干子弟,接受了西方自由思想之后,还是可能成为现有政权的掘墓人。苏联的瓦解就是一个例子:57年第一群获准在美国学习的学生人数只有四人,而且全都是精挑细选的红色子弟,但其中还是有两人成长成了主要的革命者。雅科夫列夫更是被认为是苏联解体的真正策划者。

 

当然这是一种缓慢的道路,但也是唯一可行的办法。要驯服朝鲜就一定要改变其政权,而改变政权的唯一办法就是改变朝鲜的民众。

Posted via web from timnew's posterous

“龙”的英文不是dragon 应该翻译成Loong


简介

李小龙的“龙”也采用的“Loong”,Lee SIU LOONG. 本文仅仅是工作中一点小小体会,希望译言网别给删除了啊,大家如果觉得有用,我就没有白折腾了。

今天做了一个中译英的翻译项目,译员习惯地把“龙”翻译成了“dragon”,项目提交后,客户反馈要求把“龙”翻译成“Long”,于是我用“有道桌面词典”查了一下“龙”的翻译,结果出现好几个版本的翻译:Loong、Long以及dragon。有一个例句为“是连接全世界华人的精神纽带。”Loong is a spiritual tie linking the Chinese people all over the world.由于没有把握,我在Google上搜索“Loong”,就看到了网易教育频道的这篇“‘龙’的英文不是dragon 应该翻译成Loong”。

下面是转载的网易的这篇文章:

摘要:“龙”不应该翻译成dragon。Dragon的本意是凶残的巨兽、恶魔、悍妇等。中国人在外国人面前自称dragon,是自我妖魔化。“龙”也不应该翻译成long。Long的英文发音不是“龙”,而是“狼”,这不是真正的音译。“龙”应该翻译成loong,它的发音和“龙”相近,在英文中本来就是“龙”字的音译,有些西方人也把龙称为loong,有广泛的使 用基础。Loong的两个“O”字母象龙的两只眼睛,loong使人联想到long(长),所以它也是一个象形文字,和汉字特色相通。而long在形象上是独眼龙。

“龙”是中华民族的象征,在中译英时,“龙”被翻译成Dragon。

但是在英文中,dragon是邪恶的怪物,还有“凶暴的人,悍妇”等含义。在图画中,dragon的身躯庞大笨拙,颜色是黑灰色的,长着巨大的翅膀,口中吐火,吞噬人和动物,非常丑陋恐怖,和中国的龙完全两样。

中国人在西方人面前自称“Dragon”或“Descendants of the Dragon”(龙的传人(后裔)),西方人当然要把中国人看成是恶魔、坏人了。所以我们再也不能把“龙”翻译成“Dragon”了!

有人建议把“龙”音译成“Long”。

但是“long”的英文发音和“龙”完全两样,相当于中文的“狼”,并非真正的音译。当西方人指着龙说“long”时,中国人还必须纠正他的发音,不仅增加了交流的困难,还会引起对方的困惑。Long在英文中是一个使用非常普遍的常用词,含义本来就很多,把龙翻译成long也会造成意义上的混乱。所以不能简单地把龙的拼音字母作为龙的英文音译。

既然是把中文“龙”音译成英文,那么在英文中的发音就应该和“龙”相近,否则就不是真正的音译。

英文中对“龙”字的音译是“Loong”,姓氏“龙”和人名中的“龙”字也被翻译成“loong”,例如新加坡总理李显龙的名字被翻译成“Lee Hsien Loong”。在一些涉及龙的文字中,“龙”也的确被称为“loong”。因此,把“龙”翻译成“loong”才是真正的音译,而且它已经有了广泛的使用基础,也符合海外华人的习惯,有利于团结海外华人。

Loong的两个“O”字母,就象龙的两只大眼睛,loong在文字上又和“long”相近,给人“长”的感觉(很多西方人有意把“long long ago”写成“loong loong ago”),因此loong还具有象形文字的特点,和中文汉字有暗合之妙。而long则有“独眼龙”之嫌。

英文中本来没有loong这个单词,因此把“龙”翻译成loong,不会引发歧义。所以,“龙”应该翻译成“loong”。(作者为华东师范大学传播学院教师)

看了这篇文章我又和客户进行了沟通,建议采用“Loong”而不是”Long“,客户看到这些资料后就采用了”Loong“。

这里是新华网关于“龙”翻译称"dragon"还是“Loong”的专题,大家可以参阅!

这仅仅是本人在工作中遇到的一些细节问题,贴在这里与大家分享,希望能给翻译领域的朋友带来一些帮助。

Posted via web from timnew's posterous

2009年4月22日星期三

梁文道:谁来管一管成龙的话语权?


何润锋:欢迎回到《时事开讲》。在刚刚结束的博鳌亚洲论坛上,功夫巨星成龙的一番话引起了轩然大波,在被问到文化和自由的关系时,成龙说太自由了就会很乱,就像香港和台湾一样,中国人还是需要管的,管理的管。这番话在香港和台湾的媒体、民众,以及政客当中引发了强烈的不满,有人把成龙的这番话称之为“奴才言论”,那这个话题继续请梁文道先生来做点评分析。

  梁先生,相信您也听了成龙这一番表态,您怎样理解,您认为他这番言论,是称得上是“奴才言论”吗?

  谁来管一管成龙?

  梁文道:我觉得还不至于说是“奴才言论”,但是我觉得他说话很大胆。他这个胆子大在两个地方,一方面他不怕得罪港台的老百姓的跟政客,另一方面他好像也不怕得罪大陆的官民。为什么?因为他这番话难道不是潜台词,你看港台就是太自由了,所以就乱。

  何润锋:大陆不够自由。

  梁文道:你看大陆多好,大陆不自由,这话其实三方面都会得罪的话,那么这是很奇怪的一番言论。

  我想这就牵涉到一个问题,就是我们注意到两岸四地,就是大陆、台湾、香港、澳门这四个地方,最近十多二十年都有一个习惯,这个习惯是什么呢?就是总有这么一些人,他可能是明星,可能是干体育的,可能是做什么行业的也好。然后出名了,出名之后获得一个整个社会名流的地位。这些人一旦达到了一个社会名流地位之后,不晓得为什么从媒体开始,甚至到政府,大家都觉得这批人是无所不能的,什么都可以说的。你会赋予他很多的权利,给他很多的曝光机会,什么都去问他意见。

  你可能去找一个体坛明星,叫他讲一讲艺术该怎么发展,你也可能去找一个打功夫片明星的一个演员或导演,像成龙这样的,问问他政治的问题,那么然后就一定会出事的。而且这些人的问题也在于他莫名其妙获得这样的影响力跟地位之后,他自己也飘飘然,他自己也以为自己什么话都能够说出来,而且说话是不用负责任的。我觉得成龙这回这当然是说错了话,而他居然能够这么放肆的说出这样的错话,我觉得这首先就是个问题,是有人该管一管成龙,或者刚刚我们说这种名流过度,名流泛滥的一个现象。

  何润锋:过多的话语权

  梁文道:过多的话语权。其实我们来分析一下,为什么他这番话是错的。首先我们来了解一下,这个乱一般来讲,乱跟自由,跟管这三者的关系是什么。通常在政治社会学的研究里面,我们会认为,一个社会,他的公民社会的自由度越高,它恰恰是比较不容易乱的,为什么呢?因为我们知道社会就是这样子,它是人跟人互动组成的。如果人跟人的互动是比较自由的,那么大家希望将来能在同一个社会,能够好好的彼此共存,共处的话,我们起码要摸索出一套,我们大家都接受的游戏规则,然后我们按照这个规则办事。

  比如说我们会知道在路上,比如说你碰到一个老太太迎面而来,这时候你走路,这路又很窄,你会懂得让一边,让她过去。那么这就是一个我们社会的规则。那么在这种情况下,这个社会它是很有秩序的,每个人看到老太太都会这么让路,什么样的社会会比较乱呢?正正是管的厉害的社会,比如说这个社会什么事都有人管,例如说连让路给老太太都有法律要管,是有政府,有城管在街上看着你,有没有让路。

  在这个时候,你就不是有一个自发的秩序来调节你遇到一个老太太,你应该怎么样反映。而是你是由一个外在的秩序,强加于你,要求你在一条窄路上,碰到老太太,你要侧身让她过的话,这种社会就比较麻烦了。这种社会它一切东西都是由上而下,由政府来归管它,政府对这个社会的渗透程度非常高。在这样的情形底下,一旦政府发生一些缺位现象,或者出现一些有所不及的,顾及不到的地方的时候,它就会非常乱。

  所以从我的角度看来,恰恰今天香港跟台湾的相对的自由度比较高,反而使得这两个社会,在它的社会的领域上面,平常是显得比较规整的,有秩序的。而为什么成龙会觉得台湾跟香港比较乱呢?我想举出一点,我也曾经经历过一次例子,是我发现成龙的观点是很像某些人的观点的。有一次正好,我坐一个朋友的车,那个朋友在香港也算是有钱人,他跟我坐在他的一个很豪华的名贵轿车,有司机开车。

  然后在路上遇到,香港不是常常有示威游行嘛,遇到一个示威游行,交通堵起来,他就非常不满,他说香港就是太自由了,多乱呢,一天到晚就有示威游行在堵路。成龙的观点,跟我这位富豪朋友的观点是如出一辙的,这是一个既得利益阶层的观点,从既得利益阶层的角度来去看,你会觉得一个社会老有示威游行,老有人批评政府,你觉得它太乱了,太没秩序,该管一管

  那正正是因为他不是那些示威的群众,他不是那个因为土地被政府强征,于是要出来上访的人。他不是那个因为揭露了这么一个土地被强征的事件,被拘押起来的人。那么当他不是这种人的时候,他就不觉得自由有什么可贵。相反的,他觉得在现存秩序底下,他活的很好,利益非常受到保护的时候,他就会觉得,如果大家都在骂政府,或者会出来做很多事情的话,那么社会就叫乱了,比如像香港、台湾,常常有示威游行。

  但是你相比之下,香港是不会发生一个农民土地被强征,然后他去抗议被拘押,如果有个记者揭露这件事,也一并被关起来,这样的事儿是不会发生的。所以我想说的就是,常常说这种话的人,说中国人该管一管,中国人就是不能有自由,说这类话的人,我们仔细研究一下,他都是一些既得利益阶层,他不需要我们大家人人需要的公民自由来保护他。恰恰相反,有时候他觉得我们的公民自由是在威胁他。

  何润锋:所以说这起事件,反映的实际上是在现代社会,自由和纪律,或者说自由和法治之间的,这样一个辩证关系的一个新的反映形势,与新的矛盾问题。

  梁文道:对。

  何润锋:其实既得利益阶层,您说了既得利益阶层往往不觉得自由的可贵。

  梁文道:没错。

  何润锋:好的,非常感谢梁先生的点评分析。

  梁文道:谢谢。

  何润锋:也谢谢各位的收看,明天同一时间,我们继续《时事开讲》。

http://news.chinaiiss.org/content/2009-4-21/2110114_2.shtml

Posted via web from timnew's posterous

2009年4月21日星期二

招待所里的那些事儿


下面的图片是在一个论坛中看到的,令我惊叹不已。

我觉得,它们非常真实,再现了我们这个不正常的社会。其他的评论,我就不知道该怎么说了,还是请大家自己看图吧。

对了,如果你知道它们的作者是谁,请一定告诉我,先谢了。

1.

2.

3.

4.

5.

6.

7.

8.

9.

10.

11.

======================

又及,有网友称,它们的原型是国外的一组作品。

出处:PCHome

挺有趣的东东

Posted via web from timnew's posterous

2009年4月20日星期一

电影镜头后的真相


电影镜头后的真相

看过电影《加勒比海盗》的人,对这一幕应该不会陌生:“飞翔的荷兰人”以及他的怪兽海盗军队。不过,你又可曾知道,所有人的形象,其实都是电脑加工的效果?真实拍摄的时候,在电影镜头前的情景其实是这样的:

电影镜头后的真相

Posted via web from timnew's posterous

成龙栽在副主席任上


成龙纵横江湖几十年,呼风唤雨,备受尊崇,在华人演艺界,那是绝对的“一哥”。人民群众也对他颇为喜欢,几乎到了溺爱的地步,不但人人呼之“大哥”,而且宽容他一连串的风流韵事,连当年弄出一个私生女,也只是一笑而过,此后再不见提。

近些年来,年纪渐迈、腿脚不再灵敏的成龙大哥开始进军大陆市场,动作频频,不是拍电影,而是着力于各种公益事业,为四川灾区捐款,为奥运开幕喜极而泣。大陆的亿万粉丝对他崇拜得一塌糊涂。大陆媒体更是对他说尽好话。

但是,粉丝们忘记了一个基本事实:成龙是一个艺人,他拥有自己的公司,他的公司需要盈利,而比香港、台湾大得多的大陆市场,是刘德华、周杰伦等港台明星所看重的,也是成龙所需要的。

成龙身兼艺人、商人和公众人物于一身。艺人要演戏,商人要赚钱,公众人物则应为公众利益鼓和呼,前两者和后者看似矛盾,其实非常和谐。公众人物的正面形象,可以提升艺人作品的票房,可以提升公司品牌的美誉度,从而帮助公司赚大钱。

因此,身负商业目的的公众人物,越是显得公正无私,为百姓造福,越是能够给自己带来收益。但是,这里面要谨防一点:公众人物必须清楚自己的角色定位,不能忘乎所以。

这次成龙在博鳌的表现,就是“忘乎所以”了,没搞清楚自己的三种角色兼于一身的定位。他竟然说出“中国人需要管,否则就像港台那样乱了”这样的话来,惹得两岸三地都有人不高兴,很不高兴。

大陆网坛上出现了大量针对成龙的负面言论,香港人更不客气,斥他“可耻”,更有报章通栏大标题说:成龙这个奴才!

香港的一位立法会议员对成龙这样讲话很不以为然:“这真是很离谱啦!你是谁呀?你代表谁啊?我们在香港多年争取双普选,我们也很尊敬台湾人,在这方面做了许多牺牲。当然,他们也有自己的问题,也需要尽快去改善。但是,我们了解到,内地的人民,也是要求有民主有自由,有法治的。”

荣获多项影帝称号的成龙这次把戏演砸了。身为艺人代表的公众人物,谈到文化自由时,怎能得出该管制的结论来呢?听说,他自己主演的新片《新宿事件》还在内地受审,至今未获通过呢!

不过如果考虑到他刚在去年底晋升为中国影协副主席,我大概能够理解他如此“放炮”的原因了,所谓“屁股决定脑袋”,此刻的成副主席当然要舍弃自己的那点私事,管管中国大陆文化自由的大事了。

联系到前段时间,媒体热炒其儿子房祖名“弃美籍入中籍”一事,我就更能了解成龙的演戏脉络了。这件事发生在他当选影协副主席不久,且是他主动向媒体透漏的,“深夜两点,当记者和成龙聊起这个话题时,他的脸上满是惯有的骄傲。”

不少人客观评论,房祖名入中国籍绝非“认祖归宗”这么简单,不然何以以前不回来,而是要进一步开拓大陆市场才如此做。明眼人都很清楚,此举怀有功利目的,当然这也在情理之中,可以理解。但成龙借此炒作他们父子两人的“爱国心”,就有些让人反胃了。

也是在那次访问中,成龙自曝家庭秘闻:成龙笑言,有时他说要回家了,母子俩就会显得很紧张,因自己有些洁癖,看到东西乱放便会骂人,但只要他说要出门,林凤娇和儿子便会赶快递上鞋子,让成龙觉得自己在家中很有威严。”

从中可见成龙的真性情,他真得很“男人”,喜欢那种至高无上的威严感。在家被妻儿紧张,在公司被员工敬畏,在外面被粉丝溺爱。

现在又当上了中国影协副主席,哈,这么大的官,更需要展示一下他的威严感。因此,当他出席名流政要云集的博鳌论坛,当然要露一手了。一点都不奇怪。

只是,这个已被宠坏的“大哥”,这次真得演砸了,他的形象太跌,“神话”就此破灭,我估计这是他的滑铁卢,从此他的美名真得要和他的年龄一样,日暮了。

Jacky 台上台下的形象差的太远了~不过就我个人而言~对于艺人,仅仅看他台上的东西就好了~毕竟艺人也是人,不是圣,更不是神~是人就会有缺点~

Posted via web from timnew's posterous

“海底捞”的管理智慧


“海底捞”的管理智慧

黄铁鹰
梁钧平
潘 洋
 
作者:2009-04-02

在过去两年里,海底捞餐厅已经成为餐饮界的一个热点现象,吸引了众多媒体的关注。北大光华管理学院两位教授对海底捞进行了一年多的深入研究,甚至派人“卧底”当服务员,总结出海底捞的管理经验。中国的企业,有很大一部分属于劳动密集型的中小企业,员工工时长、工作累、报酬低,劳资矛盾突出,经常为人诟病。本篇中国特稿却告诉我们,即使是在火锅这样技术含量不高的行业,一样可以创造出令人羡慕的高昂士气、充满激情的员工团队和出色的业绩。

1994年,还是四川拖拉机厂电焊工的张勇在家乡简阳支起了4张桌子,利用业余时间卖起了麻辣烫。14年过去,海底捞在全国6个省市开了30多家店,张勇成了6,000多名员工的董事长。张勇认为,人是海底捞的生意基石。客人的需求五花八门,单是用流程和制度培训出来的服务员最多能达到及格的水平。制度与流程对保证产品和服务质量的作用毋庸置疑,但同时也压抑了人性,因为它们忽视了员工最有价值的部位——大脑。让雇员严格遵守制度和流程,等于只雇了他的双手。

大脑在什么情况下才有创造力?心理学家的研究证明,当人用心的时候,大脑的创造力最强。于是,服务员都能像自己一样用心就变成张勇的基本经营理念。怎么才能让员工把海底捞当成家?答案很简单:把员工当成家里人。海底捞的员工住的都是正规住宅,有空调和暖气,可以免费上网,步行20分钟到工作地点。不仅如此,海底捞还雇人给员工宿舍打扫卫生,换洗被单。海底捞在四川简阳建了海底捞寄宿学校,为员工解决子女的教育问题。海底捞还想到了员工的父母,优秀员工的一部分奖金,每月由公司直接寄给在家乡的父母。

要让员工的大脑起作用,除了让他们把心放在工作上,还必须给他们权力。200万元以下的财务权都交给了各级经理,而海底捞的服务员都有免单权。不论什么原因,只要员工认为有必要,都可以给客人免费送一些菜,甚至免掉一餐的费用。聪明的管理者能让员工的大脑为他工作,当员工不仅仅是机械地执行上级的命令,他就是一个管理者了。按照这个定义,海底捞是一个由6,000名管理者组成的公司。

人是群居动物,天生追求公平。海底捞知道,要让员工感到幸福,不仅要提供好的物质待遇,还要让人感觉公平。海底捞不仅让这些处在社会底层的员工得到了尊严,还给了他们希望。海底捞的几乎所有高管都是服务员出身,这些大孩子般的年轻人,独立管理着几百名员工,每年创造几千万营业额。没有管理才能的员工,通过任劳任怨的苦干也可以得到认可,普通员工如果做到功勋员工,工资收入只比店长差一点。

海底捞把培养合格员工的工作称为“造人”。张勇将造人视为海底捞发展战略的基石。海底捞对每个店长的考核,只有两个指标,一是客人的满意度,二是员工的工作积极性,同时要求每个店按照实际需要的110%配备员工,为扩张提供人员保障。海底捞这种以人为本、稳扎稳打的发展战略值得不少中国企业借鉴。

Posted via web from timnew's posterous

2009年4月16日星期四

北京红灯区深度调研报告


http://bbs.zobba.net/thread-2082-1-8.html
来自《财经文摘》

近日,记者历时近一个月深入到北京四个相对显著的红灯区调查采访,其间感受丰富。遴选这样几个特定区域进行细致探访,无非基于如下两个考虑:首先,深入到小姐中间能够更为直观、更为深刻地知道她们的想法与生存环境。其次,作为首善之区的北京,其小姐队伍的现状理应具备更为强烈的时代色彩和代表特征。

  洋桥:黑社会控制下的小姐团体

  角门路这个红灯区的采访颇费周折。

  据知情人士透露,北京市丰台区南三环的洋桥一带曾经是小姐的集中地之一,记者首先便去了洋桥。在洋桥车站,记者却并未发现上述朋友提及的“店面一家挨一家,足有几十家”的景况,摩的尽管有,也并未形成“长长的队伍”。从洋桥路口往里走,的确可见大大小小的门面,但基本都已锁门或者改作他用。往前走,发现一大片一大片的城中村建筑已被推平,一家暂时还未被推倒但早已关停的店面很突兀地立着,而其旁边却都是砖头瓦块,标牌上“泰国按摩足疗一条龙38元”的字样还算显眼。“都搬走了,一拆迁就都搬了,整条街的小姐都分流了”,一位街边卖水果的小贩一边削着菠萝一边操着听不清归属地的方言告诉记者,“没有公安局的事,他们也不管,就是因为城中村改造拆迁,没办法,就走掉了。”

  “要往前走好远,去角门路,很多这里的小姐已经搬迁到了那边”,地摊卖菜的小伙子看起来不过二十五六岁。于是,去角门路。

  摩的司机自称四川人,姓王,今年52岁。车子颠簸了足足20分钟,老王说,到了。

  当我走进角门路(马家堡西路)对面的又一片面积更大的、低矮的城中村时,不禁有些震惊,其时不过下午五点,天根本没有黑。记者在该城中村首先走了一遭,发现这里至少有20家店面,且每家店面里至少有两名小姐。记者进得其中一个临街的出租屋,里面的小姐正频频地向记者点头示意。

  房间逼仄狭窄,屋里陈设粗陋,四面单薄的墙体,墙壁的白灰脱落后露出黑黑红红的砖头,理发的工具一概没有,除了一张可以称之为桌子的东西和两把椅子外,就只有一张长长的木沙发,同样破旧不堪。小姐自称江西人,“我1987年的,今年不到22岁,不相信可以拿给你身份证来看”,女孩子显示出与其年龄不符的大胆与成熟,嗲嗲地,“哥哥,您这发型我可理不了,我们做个交易呗,保准让您舒服”。记者刚刚进入这个小屋子不出一分钟,她便开始大胆地推销自己,并主动向记者伸手要烟抽。当拿过记者递给她的一根烟后,她更是动作娴熟地点着并边吸边说起来,“我们这边几十家小店,都是一个老板管理。老板现在不在北京,在这里看场子的只是他雇佣的几个马仔。还有,我们不能出去做,这是我们老板的规定,当然也是为了我们好。我们老板势力很大,所以我们也愿意听他的。”

  记者面前这位显然年龄太小的女孩子却表现出令人惊叹的职业化特色。“按摩、推油、打飞机、做喽。随便你喽,100块没商量的。”说着就要往记者身上靠,记者以“再看看”为由转身出来,其间逗留不过5分钟。据这位年轻的小姐讲,如果嫖客进入小姐房间超过10分钟,旁边观察的马仔便认定生意已经做成。于是记者没有迟疑,出来,小姐无奈地看着我离开。

  记者再次前前后后在城中村走了两遍,但仍旧不确定究竟哪个或哪几个就是所谓的马仔,唯一确定的是,这里的老板确实有些后台,小姐隔着玻璃窗沿街卖笑且有恃无恐,这与记者采访到的其他场所的战战兢兢是有区别的。

  进第二家店面主要是看到两个看起来既没有文化又没有姿色的小姐在使劲地敲窗户,并远远地喊 “帅哥,过来玩啊”,记者略做迟疑,走进几步,倒要看看这是怎样的两个大胆女人。屋子同样布置,两个人更为直接,“我们两个可以一起陪你做,200块,一个人100,”一个操东北口音、长相粗鄙的女人进一步解释说,“找小姐又不是搞老婆,漂亮有什么用?”见记者萌生退意,另一个年龄稍长的女人更是几乎贴了过来,并很大胆地将手往记者下边摸,记者本能地后退并拉门出来。“他妈的有病”,东北口音的女人一边摔门一边骂街说。

  记者分别几次进入该红灯区小姐出租房,大致的感受如下:第一,这里的小姐组织严密,管理严苛,平常很少上街,更很少出去玩,“不做就没钱”。另据一位小姐说,“我们老板在北京的黑道里很有名头”。第二,小姐基本没有多少文化,长相也并非具备竞争力,且大部分是江西和四川籍农村女子,平均年龄不到25岁。第三,尽管组织严密,但她们可以拿到一半的收入,也即小姐可以拿到100元中的50元。第四,各个小姐都接受过专门的培训,专业化意识很强且拉客的胆子很大。第五,小姐的生存环境恶劣,而且绝不“外卖”,更不提供“包夜”。

  三里屯:游离状态的暗娼与站街女

  三里屯酒吧街甚至将其扩散到亮马桥、长虹桥一带的狭长区域,值得关注。

  晚上七点,使馆区的灯光渐次亮了起来,路上行人匆匆,大都往三里屯方向汇集。几个烟贩开始扯灯拉线,准备趁着夜色做点生意。八点钟,记者仍旧未曾与“皮条客”正面接触,记者得到的消息是,两会召开在即,很多人大代表入住附近的“21世纪饭店”,于是小姐有所收敛。按照之前的采访计划,记者准备前往附近的关东店后街,据称,那里存在数目不少的站街小姐。

  操着浓重北京腔的出租车司机老刘看起来五十五、六岁的样子。他说,现在的确打击比较厉害,原来亮马桥一带是小姐尤其是站街女的重点区域,尤其在晚上九点以后,人数更多更主动。“现在两会期间,冷清多了。再有,也有小姐过年还没回来的。”老刘说。

  据老刘讲述,三里屯的小姐一般在7点以后尤其是晚上八九点的时候最多,主要是鸡头带领,皮条客拉人,小姐完成最后交易,交易所得按比例分成,一般三百的话,小姐拿一百,鸡头拿一百,皮条客拿一百。“这些鸡头手里起码都有四五个小姐,他包这些小姐的吃住、安全、疾病治疗,都是一水儿的东北人控制。北京人不行,北京人就是吃好、喝好、玩好,做这个不敢。”记者表示疑问,老刘接着说,“这些东北人做这个买卖不是一天两天了,在北京有不少关系,即使出了事情,他也基本能兜得住。”

  另据记者了解到的情况,三里屯酒吧街的小姐基本是这样完成交易的:一般来讲,在三里屯酒吧街,皮条客会主动上前搭讪,介绍小姐情况,如果嫖客有“嫖”的愿望,他可以迅速拨通一个号码。大约五到十分钟后,便有一个小车开过来,四个门依次打开,至少四五个小姐,随便挑选,如果不合适可以再换一拨,但如果鸡头发现嫖客有意为难的话,情况很可能不妙,这样的斗殴并不鲜见。知情人士透露,鸡头的车子上都有铁棍、斧头、刀子,以备不测,“他们下手也狠。”

  老刘的出租车开得很快,不过10分钟就到了。

  老刘带我到的,正是关东店后街菜市场。这里的路面崎岖不平,加之没有灯光映衬或灯光不够明亮,总感觉走起路来深一脚浅一脚,污水顺着脚下的泥土路汨汨流淌,在昏暗的灯光下发出闪动的光芒。

  “这几个就是”,老刘无所顾忌地指着胡同口且靠近菜市场的几个女人,一个着粉衣,两个着红衣。“你看一下,不满意再说”,并继续往前走。

  记者有意看了一下周围的环境。这个菜市场背靠一个大马路,但大马路边上有几栋年代稍久的楼房,而其后就是大片低矮的如同大多数城中村建筑的房子,看起来历史应该不算太短,石头砖墙的土泥灰很厚,墙角显露出被水浸泡后粉状班驳的样子。除了蔬菜之外,这里还有一个理发店,一个菜馆和面馆。来自全国各地的农民工构成了入住这里的大多数。

  记者装作不知情的样子走过两个女人站脚的地方。两个女人满脸堆笑地过来搭讪,“小哥哥,玩一下吗?”记者表示不解,“怎么个玩法?”“随便你怎么搞喽,你能怎么搞就怎么搞喽!”“多少钱?”“100块。”“去哪里?”“离这里很近,就在胡同里,我宿舍。”

  记者靠近这位自我推销的女人,这位看起来还算周正的女人应该不少于四十岁,皱纹清晰。记者说,“好,你带我去。”

  进胡同,真正深一脚浅一脚,不小心碰到路面隆起的小石头,我险些跌倒过去,而这位粉衣服的阿姨级小姐却健步如飞,看起来果真轻车熟路。没走一百米,粉衣服推开一个平房的门口,说,到了。并补充说,“你别担心,这个小院里住的都是我的江西老乡,他们也做这个,互相不打听不干扰的。”

  这是一个乱糟糟的平房小院,空间小得几乎回不过身来,门口的过道里堆满了蜂窝煤和几个不知道装什么的纸箱子,横七竖八的木头斜挂在两边墙上。“进来吧”,她推开第二道门,进来后却发现里面的房间再次在中间打了隔断,于是进第三道门。粉衣服闪身进来后迅速把门别住,并开始准备脱衣服。记者一惊,表示并不与她做,但钱照样给她,只是和她聊聊天,为写作小说而体验生活。“那有什么好说的呀”,粉衣服显然没有过这样的经历。

  这是一个破旧的出租屋,但却一定是一个还算温馨的民工住处。简陋的梳妆台上放着一些简单的化妆品,床头摆着的是一个“TCL”标志的电视机,床头的被子被收拾得还算干净整洁,屋子中间被一条绳子横穿过来,绳子上挂着或男或女的衣服,显然,这里并非她一个人居住,更像是两口子的住所。做饭的工具也摆放得整齐,屋里也并无发霉的味道,反倒有了一些生活的气息,记者惊讶得厉害。

  据记者了解,该小姐为江西吉水人,农村户口,自称38岁,从事小姐行业“有几年了”,“老公在家里种地,孩子在老家上学”,因为没钱就出来做了。粉衣服表示,春节前她在十里河一带做,生意也并不好,一天也就两三个,最好的时候也不过三个,基本都是民工。“每次都要戴套子的,不戴可不敢”,当记者问及是否定期体检,她说,“那没有,我们没病的,有病就不做了嘛”。

  记者与其交流时,门外有人用江西方言嚷嚷(与粉衣服口音一致,于是记者认定是江西方言)。听粉衣服转述,外边已经有人反对她与记者谈这些。“你就不用问了嘛,你又不是不知道这个事情,就这个东西,没有什么复杂的……”门外继续响起嚷嚷声并开始砸门,记者不好纠缠,表示可以走了。“没有什么好说的,有什么好说的呢?”她似乎在喃喃自语。

  门外居然已经有四五个小伙子站着,互相在说着同样口音的话。看表,晚上十点半,步行五分钟,非常庆幸打到一个出租车,于是直奔三里屯。

  出租车刚刚在酒吧街边上停下,立刻就上来四五个小伙子,其中一个操东北口音、体形显瘦的男子称,“哥们,玩玩吗?”“玩什么?”“谁不知道三里屯是红灯区啊,你一个人指定寂寞,我给你找个小妹妹好不好?”“要多少钱?”“400,包夜800”,说罢该男子向远处招手,紧接着迅速跑过来一个着白色羽绒服、同样操东北口音的女子,应该不超过25岁。“400块,这个还不行吗?”男子进一步拉皮条,女子毫无羞涩也并不显张狂地看着我,嘴里嚼着口香糖类的东西。

  记者表示先看看,并没有提前想好这个事情。记者沿着酒吧街往前走,男子一路紧跟不放。街道边上的酒吧里,人已经基本坐满了,音乐声、哄笑声不止。从街面的窗户望进去,几乎每家酒吧都在歌舞表演,小姐的大胆时尚不由得让人浮想联翩。鸡头三三两两地分布在整条街上,并不停地招徕着生意。

  老古城:各有阵线的小姐“小团体”

  记者赶到知情人提供的另一红灯区——石景山首钢厂厂区附近。因地点不甚明确,所以只能先行探路。

  经过一番周折,记者进入老古城村,距离首钢不过千米。

  村庄很大,街道横纵穿梭,记者几次尝试以一种方式将其走遍却始终不可得。胡同套胡同,低矮的平房一间挨一间,人流如织。据了解,这里居住的人群基本为首钢职工,包括临时工(民工)、合同工、长期工。

  记者在该村一横一纵的主干大街两侧连续走了两个来回,粗略估计,这里以按摩房、洗浴中心、足疗房为标识或者任何标识都没有的小姐出租屋至少在30家以上(尽管有标识但已经关停的并没有计算在内),且每家场所容纳的小姐平均在7-8个。

  据了解,老古城村非但明确场所的小姐店面一家挨一家,村里胡同深处站街的小姐也不在少数。记者首先进入村子里探访。经过数次打听,记者得知,这里确有不少站街的小姐,“要价50块,30块拿下”。但正如村中某性用品商店的老板讲,“因为你不是这个村的人,村子又太大,我告诉你去找,你也未必能找到”。记者在村子里绕来绕去,前后停留近三个小时仍旧没有看到站街女的身影。

  在决定正面接触三陪女之前,记者再次在红灯区走过一圈。其间,记者每经过一间店面,总会有几个小姐向外张望,并总有一个人在招手并说着些什么。

  准备进入一个名曰“双旭旭”的按摩房。

  这是一个左右都有旁门中间却没有任何标志的奇怪入口,记者实在无法知道该从哪个小门进入。出于谨慎,我抬头向右手边的窗户看了一眼,隐约可见几个嫖客模样的男子正在与几个小姐周旋,于是从左门进入。敲门进入。空调开得很大,空气里弥散的是一种说不清的味道,7个女人分成两排,或躺或坐,漫不经心地打量着记者,记者刚要开口,对面沙发上坐着的光头(此人必是鸡头)说话了,“说吧,看上哪个了?”开门见山。记者从左到右,再从右到左将7个小姐扫视了一圈,这些女人也同样以一种记者不能猜透的目光瞄着我。记者问是否还有其他小姐。鸡头分明领会了我的意思,“这都7个了还不成?找什么样的?!”据该鸡头称,所有小姐一律150,出去包夜500,而这也是整个该红灯区的“行价”。

  记者继续接连进入四五家店面,这些店面面积相差不多,布置也大同小异,小姐看起来尽管没有多少竞争力却一个个非常放得开。从她们的眼神里,我并没有看到半点伤感与被迫的成分,而趾高气昂的成分却更多了一些。据一位店面经理(或称妈咪、老鸨)讲,相对其他店面,她店里小姐年龄最小,尽管都是从农村来且刚刚初中毕业,但“该有的技巧,她们都会,如果有哪一样她做不到位,回来我不要您一分钱”。但记者从她手底下的几个小姐眼里看到的分明是单纯、幼稚以及对未来的迷茫。后据某北京黑车司机讲述,该红灯区里的各个店面基本各自为阵,互相之间并无关联,更无集中领导,小姐分别属于各个堂子老板,“跟谁混,谁就负责到底”。堂子老板互相之间也不多打听,反倒是在附近“趴活儿”的司机知道得更多。“来这边嫖的,大多数是附近首钢职工,当然也有从市区过来的。周末的时候生意会好一些。”该司机称。

  大兴旧宫:三陪女的感情生活

  阜成门坐地铁到前门,出C口,绕过一个巨大的环行通路,进入快速公交站台,终点站“大兴德茂桥”。

  记者进入一家按摩美容中心。

  一位年龄在30岁上下,装束整洁且看起来并非小姐的女人走了出来,热情地和记者打招呼(后得知,该小姐之前曾做过长达数年的性工作者,只是后来退出并改行做了领班)。一名中年男子慵懒地斜躺在大厅的长条沙发上,而对面的几个小沙发上,4个衣着暴露的小姐正对着宽大的镜子说笑,暖气很热。

  为了能与三陪女深入交流,记者提出要带小姐出去。“我这里的房子很舒服的,隔音也很好,在这里不是一样吗?”领班仿佛不解,并幽幽地说,“我们不熟悉你,怕出问题,而且我们这里比外边的宾馆还要安全的。”

  上二楼。三个小间,“这里是做按摩的地方”。三个大间,“这就是包房了”。她开了灯,房间冷飕飕,屋子里除了一张低矮的木床、两个黑红的柜子以及柜子上一个灰白且个头很小的电暖气之外,什么都没有。当记者表示不满意,并提出“如果到周围最近的宾馆也不可的话,那就算了”后,领班立刻与那个依旧在长沙发上斜躺的男子开始用湖南方言交流起来。“可以,那边还是很近的,带上手机”,男子用普通话和记者“点”到的小姐说。片刻,领班、男子、三陪女开始用湖南方言再次讨论起来,具体内容听不完全明白,大意是,“危险性不会太大,可以出去”,并提出,要该男子送该小姐到宾馆门口。

  后来得知,他们都是湖南籍老乡,但具体是不是同一个地区则不甚确定,而该男子也并非老板,只是来看店帮忙的。但与想象中看店的“小混混”形象略有不同的是,该男子却是一副纯粹的书呆子模样。

  亚亚(化名),湖南湘潭人,身高1.60米,生于1975年,相貌娇好,面相和善。据其自己坦承,即使在其供职的某按摩院,她的年龄“也算是大的了”。

  “做我们这一行的,谁都知道风险,但又有什么办法,没有钱就什么都做不了,搞钱才是最重要的”,她说,“我出来做小姐,家里人是不知道的。我从湖南坐火车直接到了北京,因为这边有熟人。其实,如果我胆子再大些,长得再好些,就去广东了,那边的老乡其实比在北京的老乡混得要好很多”。

  据称,从家里出来一直到现在,已经近一年时间,其间从来没有回去过,而她和父母的交代是,“一直在美容院做‘美容美发’”,其父母也未曾表示过怀疑,她也隔段时间就打个电话回去和父母念叨念叨。

  记者与这位自称亚亚的小姐交流了一个晚上,时间长达近五个小时,而其与记者的交流,也开始由不信任转变为非常信任。一开始,她就在言谈中流露过“曾经有过一段失败的婚姻”,再后来她又拒绝承认,说只是交往了几年的男朋友,而到最后,她见记者“是个好人”,在经过长时间的沉默后,非常伤感地谈及了她的那段婚姻和自己之前的孩子。

  “人就一条命,怎么过都是过,死了就完了。我没有钱就没有自己的生活,没有钱想做什么都不可以。他不努力嘛,不上进嘛,为什么要在一起呢?……我不想谈这个东西了”,当记者进一步类似残忍地追问她,那段婚姻究竟给她造成了哪些具体的伤害,是否改变了她的人生观时,她再次陷入了长久的沉默。

  与其他同质小姐存在很大差异的是,亚亚的谈吐和涵养要远高过一般小姐的粗俗和市侩。她懂得文学,知道大学文化,知道很多时尚浪漫的风物,尽管她不过初中文化,而且“从小就讨厌学习,成绩不好,不想学”。

  “听一些嫖客和我讲,其实东北小姐是很厉害的,但有时候她们太厉害了,嫖客反倒不喜欢”,亚亚说,东北小姐往往太主动、不含蓄、体形高大,于是对男人的心理是一个压力,“有些男人其实是喜欢含蓄的、小鸟依人的那种。”

  谈到东北小姐,亚亚介绍说,东北小姐一般都很漂亮,而且身段也好,“在北京,混得最好的,就是东北小姐了。”

  “我是不愿意和她们(其他小姐)交流技巧的,她们之间也交流,但我很懒,也懒得学”,她坦承,很多小姐的职业技巧也是在不断切磋中进步的,“我进这一行以前,对这个东西一概不知道,而且在接第一个客人的时候,心理上特别不舒服,非常不情愿。被一个互相不认识的人摸来摸去,这与和自己老公做爱是完全不一样的”。亚亚表示,对小姐这个行当,她还是有一个接受过程的,“但一想到可以挣钱,我就只能做这个了,这是来钱最快的方式了。我已经很反感了,不想做了。其实,我才做了不到一年就不想做了,你说,我是不是很懒呢?”她反问我。

  记者向亚亚探询,是否担心这边的老乡把她现在的情况告诉家里。她说,“不可能的,家里人不会知道的,她们也是不会说的,她们自己也怕被别人知道”。“如果你的老乡恰巧来北京,而且恰巧经过这里呢?”记者问。她沉默。当记者进一步问及,她是否担心,哪一天她的老公来北京并从这里经过,进而知道她的情况。她目光迟疑,“你说,这有多大可能呢?”从她的表情里我知道,其实,她并非反问,而是真正在征求我的看法。记者表示,这是有可能的,而且迟早大家都会知道的。言毕,她至少两三分钟沉默不语。

  “其实,我父亲是50年代后期湖南师范学院的大学生,他曾经的同学做什么的都有,其中有很多在政府做官,他一直在大学里当老师,今年62岁。我母亲对我也不多问”,不论如何,起码从我这里看来,她的这些表述确是发自内心而并非杜撰的。

  “我当初在酒店当过服务员,在商场卖过衣服,一个月累死也只能挣到800块,而现在呢?我既可以休息,一个月还能拿到2000块左右的工资”,她说,老板提供她们的食宿,治病也是老板出钱,出了事他们也要管,“所以我们的出台费我只拿一百,剩下都是他们的。他们也不容易,每个月要给这边派出所几千块,还要交乱七八糟的税哦,他们自己还要赚钱。对了,我们是有营业执照的。”“什么营业执照?”记者确在其按摩院看到了裱起来的东西,但并没有凑过去看端详,“我们的执照是休闲中心啊”。

  关于小姐收入。“一年拿到十万块的也有,但不多。有的拿得多一些,有的就少一些了,但几万块总是有的吧。KTV的小姐是要多一些的”, 亚亚给记者详细计算小姐收入,而她如此盘算,看来心里确有细致的规划,“就说我自己吧,一个月哪怕2000块,一年不是24000块了吗?不过,我到年底就不做了,回去做点别的事情。”

  颇为诧异的是,在经过与记者长时间的交流后,亚亚非常信任地和我讲述了她在做三陪女过程中所经历的一段感情,并征求我对这段感情的认识。

  “其实,去年有个北京男人对我很好,他来过两次,是给了钱的。后来,他提出不让我做这个了,他愿意每个月给我八百、一千的,说要和我出去租房子。我去过他家,也在他家里做过,三室一厅,他父母都在航天部工作。但那时候我刚刚开始做这个职业,心想,如果和他出去租房子,我就没钱了哦,所以,我就没有答复他,也有半年没怎么联系。后来他来电话说,他已经和一个北京女孩子要结婚了”,亚亚反复絮叨这个事情并几次和记者交流,“你说,我是不是很傻哦?”当记者表示,那男子未必真的对她好,失去也未必就是坏事,因为那男人是否只是为了欺骗她的嫖资也未为可知。“是哦……”她略有沉思,接着说,“但他当时真的对我很好,给我买了好多东西。而且,如果我们中间半年还保持联络,你说,他还会和那个女孩子在一起吗?他是一个很有孝心的人,他和我说,和他在一起,首先要孝顺父母,我是做得来的。”说到这里,记者面前的亚亚,眼睛里满是浪漫的光芒,感情一下子丰富了许多。

  但她仍旧难以回避理性的忧虑。“如果我和他结婚以后,他会给我钱吗?如果他不给我,我就没钱花了……其实,如果他要是把钱给我管着就好了。但如果他不给我呢,我能向他要吗?……”

  人生观与价值观的些许变化。记者问及,做小姐前后,对人、对生命有了怎样不同的认识。“我现在看到男人就烦!”感觉打击面似乎有些宽了,她补充说,“我其实并不适合做这个的,我很懒的。比如老板发工资,这个四千那个三千的,自己少了就感觉不好意思,感觉自己没努力,但我有时候就是不想做。人生多短啊,说结束就结束了……”

  亚亚透露,她舞蹈很好,而且唱歌也很好,所以一直想去KTV发展,“那样说出去会好听一些”。“是哦,做小姐有惯性的哦,做小姐时间长了就不想做别的了……”,记者问她,如果年底退出不做后,经济来源再次遇到尴尬时,是否会重新选择做小姐,她说,“应该不会了吧,不会了,不做就永远也不做了。”

  记者最后的两个问题令亚亚几次陷入长久的沉思和沉默。大约,这正是她最为焦虑的事情:第一,是否有过再婚的想法,如果再婚,是否害怕今后的老公知道自己目前的经历。第二,是否害怕将来的孩子知道自己现在从事的职业,怎样去避免这样的事情发生。

  关于性交易中的性高潮以及性技巧,亚亚谈了不少,但因文章篇幅所限以及其内容的敏感性,此处略去。

  “你是一个有善心的人”,临别前,亚亚似乎依依不舍,并为记者做上述评价,大略是因为:第一,记者没有与她发生任何接触,只是聊天,“没有为难她”。第二,钱,一分没有少她的。

  制度缺失

  灰色的小姐以及灰色的性产业已经得到社会各界的严正关注,多位相关学者先后提出小姐队伍规范化甚至娼妓合法化的动议。他们认为,只有将娼妓非罪化、合法化提高到国家立法的高度,小姐问题才能从根本上得到解决。

  北京大学人民医院皮肤病、性病科主任(教授、博士生导师)张建中在接受记者专访时表示,娼妓合法化,就从事性病治疗与研究的学者看来,不是不可以考虑的,因为合法化之后,妓女的管理就不再成为问题,而非法的、地下的性服务是无法集中有效管理的。“与其让它地下,反倒不如让它浮出水面,这样便于政府管理、便于疾病预防、便于政策的贯彻实施,而在这方面,欧洲很多国家的成功经验中国也完全可以借鉴”,他进一步说,“推进娼妓合法化,具备积极意义。如果能够集中管理,可以有效杜绝性病、爱滋病的蔓延,通过体检与检验可以把患病的女性提前甄别出来,如果提前诊察出某位从业者已经感染爱滋病,告之不能从事该行业,并给予相应治疗,总会比不知情要好得多。前一段时间,韩国有一个小姐,她知道自己得了爱滋病,与2000多个男子发生性关系,有意报复社会。所以说,不实施娼妓合法化,这样的事情在中国也一定会发生或已经发生了,这是很恐怖的。”

  尽管如此,张建中仍旧认为,在中国提倡“娼妓合法化”虽然出发点是好的,是善意的,但推行起来将非常困难。从政府到民众,人们很大程度上对小姐问题存在偏见,他们会提出相反的逻辑,他们会认为我们要一个“干净的社会”,而娼妓合法化很明显是冲击人们的道德底线,认为“社会不干净了”。

  “能在人大会上提出这样的提案,已经说明中国在进步了”,张建中认为,十年之内,中国的性产业在政府决策上不会有大的变化,“首先政府很难定夺,我也很理解政府在这个行业上的举棋不定。究竟是往前走让它合法化呢,还是往后退取缔它呢?往前走障碍会非常大,而退后会更加困难,最可能的结果是维持现状,保持现在半明半暗的灰色状态。往前往后都不现实。我认为取缔很难,因为那是走老路,是历史的倒退,而合法化是可以讨论的话题,那是前进的眼光,当然,往前走也是需要过程的,我估计10年之内不会有大的动作”。

  在人民医院皮肤病、性病科候诊区,记者与一名刘姓(全名不详)患者有过交流。在谈及小姐以及娼妓合法化问题时,他更是提出了与众多专家近乎一致的看法。他认为,性产业已经成为拉动国内经济增长的又一有力引擎,而在中国社会财富再分配过程中,小姐队伍扮演了重要角色。针对中国性产业现状,他提出了如下几个观点:第一,政府有责任。政府可以组织小姐定期体检,她们不承认小姐身份也无所谓,我们完全可以做到不公开。“我不问你是否提供性服务,也不说你就是小姐,但要求你必须有健康证。小姐无论在什么场所服务,一个月或更短的时间内要到正规的健康中心、医院进行体检,我觉得这是做得到的,不一定要她承认小姐身份”。第二,卫生机关应担负相关社会责任,定期的卫生指导不可或缺,但避免与媒体过多交流。第三,普通民众应看淡小姐问题,应把小姐看做普通人,把小姐问题看做是必然存在的社会现象,这才是起码的正常心态。

  与各方热议截然不同的是,政府尤其是公安机关对娼妓问题讳莫如深。记者先后到朝阳区三里屯派出所、朝阳区公安局采访。前者的采访本来很顺利,但话题一谈到娼妓合法化,其所长立刻颜色大变,表示不可以谈,并请记者到分局。到朝阳分局后,记者通过保安、前台、助理等多人确认,得知,局长肖兴国未在,但至少还有两名副局长在楼上,但当记者与某局长秘书面谈并将采访提纲交到其手中后,秘书匆匆上楼,再也没有回来。该秘书晚上九点给记者打电话过来,并做出如下回复:第一,娼妓合法化这个问题目前还没有定论,我们认定这是胡说八道,是假的。第二,我们局长目前不在,而即使在,这个问题也回答不了。

Posted via web from timnew's posterous

丑化中国


前阵子,听说一部韩剧叫《该隐与亚伯》,涉及朝鲜特工题材,就特感兴趣。一搜,发现网上有人说这出戏丑化了中国,罪状有把上海拍得很灰、很脏,开车半小时出去就是沙漠,到处是偷窃、行贿,诸如此类吧,然后得出结论说韩国人不遗余力把中国描绘出野蛮、贫穷、落后的国家。于是,网上就有人愤怒了,还有字幕小组高调抗议,宣布拒绝继续翻译这出戏。

我还是想办法找到了带中文字幕的这出戏,看了好几集,也没看出来它怎么就丑化中国了。

本来,这事儿我也就忘了,今天忽然看到新闻重提此事,这回是媒体直接炮轰。当然,还是老问题——丑化中国。

我就纳了闷了,中国怎么就那么容易被丑化呢?80年代,陈冲演《大班》里面一个中国女子,无非是在外国人面前宽衣解带之类的,就被国内贴上了丑化中国的标签,陈冲也被斥责为卖国贼。《红高粱》在西方获奖,竟然也被说成靠卖弄中国的落后满足西方人丑化中国的变态心理。20年来,西方影视作品里的中国,动不动就被国人拿出来按照自己的思维逻辑“审查”一番,和我们的价值观不吻合的,就一律打上“丑化中国”的标签。

到了《该隐与亚伯》,我们又把“丑化中国”的使命交到了韩国人手上。

这么急着把“丑化”二字往自己脸上贴的国民心理,其狭隘昭然若是。

我没工夫在这里逐个镜头分析《该隐与亚伯》中的中国镜头。我想到了两部戏,做一个对比分析:

一是《贫民窟的百万富翁》,印度贫民窟的落后在这部电影里得到了充分的展现,印度媒体也有不同意见的讨论,但并未阻止它在印度上映,也未见印度媒体集体声讨英国导演“丑化印度”,甚至上升到“彰显英国人扭曲心理”的高度。

二是美剧《24》第七季,这一季,恐怖分子轻松闯进白宫,甚至给了美国女总统一个响亮的耳光,整个国家陷入瘫痪。我反正是没见到美国民众及媒体抗议福克斯电视台“丑化美国”。事实上,按照中国人的“丑化理论”推理,世界上丑化美国最猖狂的恰恰是好莱坞电影。

与这两出戏的“丑化”相比,《该隐与亚伯》对中国的描绘实在不算什么。

设想一下,如果《24》第八季把场景挪到中国,以恐怖分子破坏北京奥运会为主题,还不得升级为外交事件啊!

至于韩国人是不是真有所谓的扭曲心理,不是我想探讨的问题,那是他们自己的事,他们自己反思就好了,轮不到我们替人家想,我们还是先看看自己的心理是不是扭曲吧。

顺便说一下某些字幕小组的角色。这些年,承蒙各个字幕小组的辛苦劳动,中国人与世界同步看到了许多影视作品。但这次《该隐与亚伯》的字幕小组高调抗议并拒绝翻译,有点儿搞笑了。你翻译上传人家的作品本来就是非法的,当然,我们看也是非法的。这部剧不对你心思,不乐意翻了,停下来自然没谁管得着你,但扯上民族主义气概,并以拒绝翻译为旗帜来表现这种气概,实在离谱,用一个不太恰当的比喻形容就是小偷罢偷。

什么时候,中国人才能不再充满饥渴地把别人丑化自己国家的标签到处乱贴呢?and什么时候,中国人才能有底气即便真有人恶意丑化自己还能一笑了之呢?

如果你真那么那么美,别人“丑化”几下子,难道就能把你变丑?

而如果你确实没有那么那么美呢?

相关新闻:韩剧丑化中国彰显其扭曲心理

Posted via web from timnew's posterous

世界其实很美好 | 尖笔头


我不认识他,或者曾经我跟他在校园里擦肩而过,或者。这几天准备考试,原本不打算更新的,但还是更新了,因为死亡曾经离我很近。

2009年4月15号上午10:30,我们住1楼,在我们头上的8楼,有人坠楼,室友听到一声巨大的闷响,很无意一句,难道有人跳楼了?跑出阳台一看,果然。

我们住1楼,他躺在那里,离我们可能只有2米,或者3米,光着脚,穿着鲜红的衣服,带着剧烈撞击留下的鲜血……我本来想照张近照,完全可以做到,我拿不出我的手机,因为我不能这样做。

这里是北京理工大学,就在昨天,中国传媒大学一对情侣也这样坠下了。而今天的北京理工,也有这样的一个人,但报纸没有说,新闻也不怎么报道,北京理工大学好像很擅长封杀这些消息。或者有人跳楼不是什么新鲜事,但离我这么近,第一次感到死亡很靠近,很靠近。

我很希望他是不小心坠下的,但不是,他留下了遗书,他是跳下来的,好像非这样做不可才行。他大四,是一个理工科学生,学什么专业哪个学院哪里人叫什么名字他需要什么,相对他的性命来说,一点都不重要。

他的离开,给他的校内带来巨大访问量,一个原因就是,那里有他的遗书。可惜校内网很快就把他的遗书删除了,我不明白,校内网有什么权利这么做。

我还是决定把他的遗书贴下来:

最对不起的就是我的父母了,我死了你们不用太伤心,你们儿子其实很不听话的,你们的猜测也都是正确的,我在学校里根本就没有学习过,每天都是在耗时间,我 现在死了没啥可惜的。知道我死了会对你们造成挺大打击的,不过你们以后也不用为我的房子,婚事啥的发愁了,以后少干点活儿吧,多享受几天,人活了一辈子为 了啥啊。还有我的姐姐,以后就只能靠你一个人照顾家里了,其实以前家里就只靠你了,希望姐夫再勤奋点吧。

大姨,世中哥哥,小舅这都是实打实帮过我的亲戚,我以前还憧憬着什么时候能我发达了报答你们一下,不过现在不可能了,不好意思啊。

谢师兄,李老师等对不起了,可能给你们带来麻烦了。学校领导什么的我就不道歉了,因为我死了和学校还是有比较大的关系的,给你们带来点麻烦也是应该的。

以前的亲人朋友们再见了。我其实也没啥朋友,还曾经有两个妹妹,希望所有关心过我的人都过的快乐吧。

感谢我的某些同学们,没有你们的戏弄和排挤,我是没胆量死去的。或许你们没觉得有什么,但对一个心理有问题的人这样就不好了。如果人死而有灵,我一定会报答你们的。

宿舍的几个兄弟人还是不错的,不在上述同学之列,给你们造成的麻烦请多包涵。不过希望你们帮我一个忙,把我的钱包,电脑啥的寄回家。山东龙口市黄河营村张平先收。邮编你们帮我查查吧。

要走的时候发现其实有挺多话说的,不过要我写出来就这么乱了,各位看官凑合看吧,毕竟我能写的出彩我就不要去死了。还有,我死之前最讨厌的就是有人笑我。不过笑我我也没办法,那就在这儿诅咒一下所有知道我死讯笑我的人,让他们以后工作生活没有一件顺心的事了。

我以前曾经思考过自杀的问题,结论就是我们不是他们,无法真正理解他们为什么要那样做。有人说,连死的勇气都有了,为什么没有勇气活下来。或者吧,而我觉得,活一下需要一辈子的勇气,而自杀,只需要一瞬间的勇气。

世界是很美好的,世界没有抛弃谁,是你自己偷懒溜走了。

很多人拍了很多照片,尖笔头平时的文章都会有配图的,但这篇文章不会有,或者他本人也不想大家见到他难看的样子吧。

我不认识他,他不认识我,但直到现在,我依然很压抑。

如果能对他说几句话,我想说:何必呢?他执意要去,我只能说:再见了,走好!

Posted via web from timnew's posterous

关于函数编程的一些想法


这文章是从NTParty的Mailling-list里我写的回信里摘出来的~


更多的了解了FP后,我突然有种条条大路通罗马的感觉:
Design Pattern的最终目的其实就是去降低系统的耦合,那什么叫耦合,其实就是代码的副作用~所谓的高内聚、低耦合的理念就是设法消除代码执行的副作用,把副作用的影响范围变得可控~
这是由于传统语言,一开始就是靠副作用为基础的。特别是到了C语言这个时代,把传统的语句、命令、函数,全部统一为了Function,只是会出现void类型的返回值。

function always need to return "something", and “void” represents the function returns nothing!

It is somehow similar to the "dynamic" type in C# 4.0, which represents that something's static type is dynamic.

(实在不好意思,实在不知道这几句话,怎么用中文表达,中文表达不出这种巧妙的用词来,就像诗词不能翻译为英文一样)

所以说,当C语言一切都归结为函数的时候,函数具有副作用基本上是C这一系语言的最基本特性。
而从C衍生出来的C++、C#、Java等一系列语言都不可避免的遇到了如何控制副作用的问题~于是 GoF 把人的经验总结以后,称之为 Design Patterns。

简而言之就是传统的语言就是以丰富的副作用出发,逐步控制消减副作用,最终把副作用控制在某个可控的范围里面。

然而C语言所走的进化之路不是唯一的,就像几何第三公理不是唯一的一样(欧氏几何规定过直线外一点,有且只有一条直线与当前直线平行),虽然C语言衍生出了一个伟大的语言体系,但是他不是唯一的真理。
FP语言走了和他完全相反的一条路子(就像椭圆几何和双曲几何那样),FP语言一开始就规定函数,没有副作用,由输入完全决定输出,变成了一个纯粹的无记忆系统。因此FP语言不存在传统意义上的Desgin Patterns一说,因为它根本不需要控制耦合、隔离代码,FP的函数之间本来就是完完全全0耦合的(因此才可以颠倒顺序也能很好的运行)
然而FP语言遇到的问题也刚好和传统语言相反,在使用FP语言编程的时候就似乎详尽一切办法去让函数具有副作用,最后达到副作用控制在某个范围内的效果~其实和传统语言是殊途同归的。而函数编程里的这些让函数具有副作用的手段,我们也可以认为是FP特有的Design Patterns。事实上我认为FP语言的Continuation这样的方式就是一种Pattern。

PS:刚接触FP的时候我就觉得这东东,不是很陌生,我肯定什么时候在这样的公设下做过设计。最后终于让我想起来了~那就是著名的VHDL~或者是电路系统。
想想数电一开始的模型就是一个多输入单输出无记忆的模型,所有的门电路都是这样的。
直到人们想方设法用几个门电路实现了Flip-Flop(我忘了这东东的中文名字了),然后才让电路系统有了记忆能力,才有了记忆系统。
所以函数变成的思想其实和电路设计的思想是非常接近的。

PS2: 事情总是这样的诡异:人们用Lambda模型的电路系统设计了图灵模型的计算机系统,然后再在其上实现一个Lambda模型的语言。
就像一个人装了个Windows,然后跑个虚拟机,里面跑个Linux,然后再跑个虚拟机,里面装上Windows~GOD~为什么要那么别扭啊~

Posted via email from timnew's posterous

[☭脑瘫党群☭][5686] 关于惰性求值与优化


DoDo理解到了惰性求值(延时求值)的绝对优势了。.net 3.x 里面加入的 Linq 为什么被我们如此看中了(事实上,准确的说C#对于Lazy Evaluation的支持来自于.net 2.0加入的关键字 yield return,只是在.net 3.x中由于lambda、Linq、Type Inference、Common Generic Delegates等一系列Feature的加入,使得这个东东变使用更加方便)。

为了解释这个问题,我写两个C#的版本:
实时求值 1:
var Double = (double xs)=> 2*xs;

var list =  new double[] { 1, 2, 3, 4, 5 };

foreach ( var fo in list)
    Console.WriteLine(Double(Double(Double(fo))));

这个版本只遍历,一次求值一次~但是处理的是元素,而不是列表。
因此修改一下:

实时求值2:
/*
 * Func<T,TResult> represents a functions like this: TResult foo(T arg).
 * So Func<IEnumerable<double>,.IEnumerable<double>> represents IEnumerable<double> foo(IEnumerable<double> arg)
 * 
 * Func<double,double> Double = delegate(IEnumerable<double> xs)  is a declaration of an anonymous method that introduced in .net 2.0.
 * It somehow made C# support LUA style function declaration that make assign a function to a variable, also it is just a syntactic sugar. 
 */ 

Func<IEnumerable<double>,IEnumerable<double>> Double = delegate(IEnumerable<double> xs) 
{
    var result = new List<double>();

    foreach(var fo in xs)
        result.Add(2*fo);

    return result;
}

var list =  new double[] { 1, 2, 3, 4, 5 };

var resultList = Double(Double(Double(list))));

foreach( var fo in resultList)
    Console.WriteLine(fo);

这个版本虽然处理了列表,但是却生成了3个临时的List。而且最重要的resultList的类型事实上是List<double>,是一个真实存在的集合,及时我们最后不打印resultList的值,他也会存在。

接着我们引入yield return,去实现一个延时求值的版本

延时求值1:
Func<IEnumerable<double>,IEnumerable<double>> Double = delegate(IEnumerable<double> xs) 
{
    foreach(var fo in xs)
        yield return 2 * fo;
}

var list =  new double[] { 1, 2, 3, 4, 5 };

var resultList = Double(Double(Double(list))));

foreach( var fo in resultList)
    Console.WriteLine(fo);

这段实现明显已经没有中间列表的产生了~而且由于yield return的出现,已经引入了延时求值。resultList的类型不再是一个List<double> 而是 Func<IEnumerable<double>,IEnumerable<double>>,如果不遍历它(就是不执行最后的那个 foreach 块),它就不会被求值。

从之类看来,已经和haskell非常近似了~但是还不够~由于Anonymous  Method的语法的复杂性,明显 Haskell 的语法要比 C# 简洁得多,于是我们引入LINQ

延时求值2:
我们重写 Double为
var Double = from fo in list
                   select 2*fo;

这个是个不完全的版本,为什么,因为LINQ语句的原因,Double的类型变为了IEnumerable<double>,变成了一个确定的值,而不再是一个函数,因此我们不能使用函数调用这种模式了。因此我们再改改

延时求值3:
var Double =  
           (IEnumerable<double> xs) => 
                  from fo in xs
                  select 2*fo;

var list =  new double[] { 1, 2, 3, 4, 5 };

var resultList = Double(Double(Double(list))));

foreach( var fo in resultList)
    Console.WriteLine(fo);

于是这个版本也变得非常简洁了,稍微比Haskell、LUA等动态脚本语言稍微复杂了一点,不过对于强类型的OO语言来说已经很不错了。

观察一下这个最终版本,我们在里面运用了yield return(其实就是根据方法,自动生成一个枚举器类)、Linq(那个from * select * )、Lambda Expression( 那个(*)=> * )、还有Type Inference(var * =*)以及Common Generic Delgates(隐性的使用了Func<T,TReslt>,即Lambda的类型和Type Inference的结果,也就是 Double的类型)

由此看来C#其实是具有很多函数编程的特性的,所以有人说 C# 其实是一个半函数编程的语言。

不过个人觉得把惰性求值理解为一个理念,一个Pattern,要比把它当作一个语言特性强。从C#看来~虽然最后这个版本是一个延时求值的版本,但是其实我们可以把编译器帮我们做的所有工作完全展开(就像展开Macro那样展开),我们可以得到一个有C#基本特性而实现的延时求值代码(最简单的方法就是编译为MSIL,然后反编译回来)。
不仅仅是C#,我有信心在C语言里也实现同样的东西。

TimNew
------------
Release you passion
To Realize you potential
---------------------------------
Tip Of the Day:

Thomas A. Edison  - "Discontent is the first necessity of progress."

2009/4/16 米良 <timnew.wti@gmail.com>
一看那个"[==[ ]==]"风格的字符串的括弧就知道DODO 现在LUA中毒中~


TimNew
------------
Release you passion
To Realize you potential
---------------------------------
Tip Of the Day:

Maya Angelou  - "Nothing will work unless you do."

2009/4/15 Ning Yu <yuningdodo@gmail.com>

今天看到某篇文章中关于惰性求值的一段有趣说明. 先看例子.

[=haskell=[
list = [1 .. 4]

double x:xs = x * 2 : double xs
double [] = []

result = double $ double $ double list

print result
]=haskell=]

上面这段 haskell 代码的含义大体与下面的 lua / python 代码等效, 可以参照着理解

[=lua=[
function double(xs)
    res = {}
    for i = 1, #xs do
        x = xs[i]
        table.insert(res, x * 2)
    end
    return res
end

list = {1, 2, 3, 4}
result = double(double(double(list)))
]=lua=]

[=python=[
def double(xs):
    res = []
    for x in xs: res.append(x * 2)
    return res

list = range(1, 5)
result = double(double(double(list)))
]=python=]

我们知道, double 函数的作用是将一个列表中的所有值 x2, 并返回一个新的列表. 那么问题来了, 在 haskell 版本中, 究竟生成了几次新列表呢? 或者说程序运行过程中经过了几次对列表的 "遍历" 操作呢?

对于 lua 或者 python 的这两个版本, 不用说, 每调用一次 double() 进行一次遍历, 再生成一个新的列表. 对于 haskell 这样的纯 FP 来说, 由于惰性求值的存在, 为了保证 result 一定被调用, 后面我特意写了一句 print result, 就是假定我们至少执行过一次了, 否则根本就不会产生任何动作. 那么当打印 result 的第一个元素时, 这时 result 向第一层 double 请求第一个结果, 这个请求又被传至第二个 double, 直至传到 list, 它的第一个元素被返回, 并依次进行 3 次 x2 操作, 得到 8; 对于 print 导致的对 result 后面每个元素的请求都是这样. 因此结果就是, 遍历只发生了一次. 不过究竟这过程中生成了几个列表我还没有想明白. 但是总之就是理论上 FP 的优化能力要高于命令式语言, 虽然实际情况上至少 haskell 很慢.

以前虽然知道惰性求值这个概念, 也有意无意地使用过它, 不过还真就没有从计算流程的角度仔细考虑过这个问题.

--~--~---------~--~----~------------~-------~--~----~
脑瘫党内部密信
邮件列表地址:NTParty@googlegroups.com
草稿模式发布:NTParty+unsubscribe@googlegroups.com
英文Web主页:http://groups.google.com/group/NTParty
中文Web主页:http://groups.google.com/group/NTParty?hl=zh-CN
-~----------~----~----~----~------~----~------~--~---



Posted via email from timnew's posterous

2009年4月14日星期二

函数式编程另类指南


函数式编程另类指南
 
原文链接:Functional Programming For The Rest of Us
原文作者:Vyacheslav Akhmechet
翻译:lihaitao (电邮: lihaitao在gmail.com)
校对:刘凯清
 
程序员拖沓成性,每天到了办公室后,泡咖啡,检查邮箱,阅读 RSS
feed,到技术站点查阅最新的文章,在编程论坛的相关版面浏览公共讨论,并一次次地刷新以免漏掉一条信息。然后是午饭,回来后盯了IDE没几分钟,就再次检查邮箱,倒咖啡。最后在不知不觉中,结束了一天。
 
不平凡的事是每隔一段时间会跳出一些很有挑战性的文章。如果没错,这些天你至少发现了一篇这类文章----很难快速通读它们,于是就将之束之高阁,直到突然你发现自己已经有了一个长长的链接列表和一个装满了PDF文件的目录,然后你梦想着到一个人迹罕至的森林里的小木屋苦读一年以期赶上,要是每天清晨你沿着那里的林中小溪散步时会有人带来食物和带走垃圾就更好了。
 
虽然我对你的列表一无所知,但我的列表却是一大堆关于函数式编程的文章。而这些基本上是最难阅读的了。它们用枯燥的学院派语言写成,即使"在华尔街行业浸淫十年的专家(veterans)"也不能理解函数式编程(也写作FP)都在探讨些什么。如果你去问花旗集团(Citi
Group)或德意志银行(Deutsche Bank)的项目经理[1],为什么选择了 JMS 而不
Erlang,他们可能回答不能在产业级的应用中使用学院派语言。问题是,一些最为复杂的,有着最严格需求的系统却是用函数式编程元素写成。有些说法不能让人信服。
 
的确,关于函数式编程的文章和论文难于理解,但他们本来不必这么晦涩。这一知识隔阂的形成完全是历史原因。函数式编程的概念本身并不困难。这篇文章可以作为"简易的函数式编程导引"。是一座从我们命令式(imperative)的思维模式到函数式编程的桥梁。去取杯咖啡回来继续读下去吧。可能你的同事很快就会开始取笑你对函数式编程发表的观点了。
 
那么什么是函数式编程呢?它怎么产生?它可以被掌握吗(Is it
edible)?如果它真如其倡导者所言,为什么没有在行业中得到更广泛的使用?为什么好像只有那些拿着博士学位的人才使用它?最要紧的是,为什么它就
TMD 这么难学?这些 closure, continuation,
currying,惰性求值和无副作用等等究竟是些什么东西?没有大学参与的项目怎么使用它?为什么它看上去这么诡异于和我们命令式思想友好,圣洁和亲近的一切的一切?我们将于不久扫清这些疑问。首先让我来解释形成实际生活和学界文章之间巨大隔阂的缘起,简单得像一次公园的散步。
 
信步游园
 
启动时间机器,我们散步在两千多年以前的一个被遗忘了太久的春季明媚的日子,那是公元前380年。雅典城墙外的橄榄树树荫里,柏拉图和一个英俊的奴隶小男孩朝着学院走去。"天气真好","饮食不错",然后话题开始转向哲思。
 
"瞧那两个学生,"为了使问题更容易理解,柏拉图仔细地挑选着用词,"你认为谁更高呢?"
小男孩看着那两个人站着的水漕说,"他们差不多一样高"。
柏拉图说:"你的差不多一样是什么意思?"。"我在这里看他们是一样高的,不过我肯定如果走近些就会看出他们高度的差别。"
柏拉图笑了,他正把这个孩子带到正确的方向。"那么你是说,我们这个世界没有完全的等同了?"
小男孩想了一会儿回答,"对,我不这样认为,任何事物总有一些区别,即使我们看不到它。"
这句话非常到位!"那么如果这世上没有完全的相等,你又是如何理解'完全'相等这个概念的呢?"
小男孩迷惑得说:"我不知道。"最初尝试着理解数学的本源(nature)时也会产生这种疑惑。
 
柏拉图暗示这个世上的万物都只是一个对完美的近似。他还认识到我们即使没有接触到完美但依然可以理解这一概念。所以他得出结论,完美的数学形式只能存在于另一个世界,我们通过和那个世界的某种联系在一定程度上知晓他们。很明显我们不能看到完美的圆,但我们可以理解什么是完美的圆并用数学公式将它表达出来。那么,什么是数学?为什么宇宙可以用数学定理描述?数学可以描述宇宙中的所有现象吗?[2]
 
数学哲学是一个很复杂的课题。像大多数哲学学科一样它更倾向于提出问题而不是给出解答。这些意见中很多都循回绕转于一个事实,即数学实际上是一个谜语:我们设置了一系列基本的不冲突的原理和一些可以施加于这些原理的操作规则,然后我们就能堆砌这些规则以形成更复杂的规则。数学家把这种方法叫做"形式系统"或"演算"。如果愿意,我们可以很快写出一个关于
Tetris(译者注:一种通常被称为俄罗斯方块的游戏)的形式系统。实际上,工作中的 Tetris
实现就是一个形式系统,只是被指定使用了个不常见的表现形式。
 
人马座的那个生物文明也许不能理解我们的 Tetris 和圆的范式,因为可能他们唯一的感知输入是气味香橙的橘子。他们也许永远不会发现
Tetris 范式,但很可能会有一个圆的范式。我们也可能将无法阅读它,因为我们的嗅觉没有那么复杂,可是一旦我们理解(pass)了那一范式的表示形式(通过这种传感器和标准解码技术来理解这种语言),其底层的概念就可被任何智能文明所理解。
 
有趣的是如果从来没有智能文明存在,Tetris
和圆的范式仍然严密合理,只是没有人注定将会发现他们。如果产生了一种智能文明,他就会发现一些形式系统来帮助描述宇宙的规律。但他还是不大可能发现
Tetris因为宇宙中再没有和它相似的事物。在现实世界中这类无用的形式系统或迷题的例子数不胜数,Tetris
只是其中的一个典型。我们甚至不能确定自然数是否是对客观世界的完整近似,至少我们可以简单的想像一个很大的数它不能用宇宙中任何东西描述,因为它以近乎无穷。
 
历史一瞥[3]
 
再次启动时间机器,这一次的旅行近了很多,我们回到 1930
年代。大萧条正在蹂躏着那个或新或就的时代。空前的经济下挫影响着几乎所有阶层的家庭生活,只有少数人还能够保持着饥谨危机前的安逸。一些人就如此幸运地位列其中,我们关心的是普林斯顿大学的数学家们。
 
采用了歌特式风格设计建造的新办公室给普林斯顿罩上天堂般的幸福光环,来自世界各地的逻辑学家被邀请到普林斯顿建设一个新的学部。虽然彼时的美国民众已难能弄到一餐的面包,普林斯顿的条件则是可以在高高的穹顶下,精致雕凿的木质墙饰边上整日的品茶讨论或款款慢步于楼外的林荫之中。
 
阿隆左・丘奇就是一个在这种近于奢侈的环境中生活着的数学家。他在普林斯顿获得本科学位后被邀留在研究生院继续攻读。阿隆左认为那里的建筑实属浮华,所以他很少一边喝茶一边与人讨论数学,他也不喜欢到林中散步。阿隆左是一个孤独者:因为只有一个人时他才能以最高的效率工作。虽然如此,他仍与一些普林斯顿人保持的定期的联系,其中包括阿兰・图灵,约翰・冯・诺依曼,和
kurt Grodel。
 
这四个人都对形式系统很感兴趣,而不太留意现实世界,以便致力于解决抽象的数学难题。他们的难题有些共同之处:都是探索关于计算的问题。如果我们有了无限计算能力的机器,哪些问题可以被解决?我们可以使他们自动地得以解决吗?是否还是有些问题无法解决,为什么?不同设计的各种机器是否具有相同的计算能力?
 
通过和其它人的合作,阿隆左・丘奇提出了一个被称为 lambda
演算的形式系统。这个系统本质上是一种虚拟的机器的编程语言,他的基础是一些以函数为参数和返回值的函数。函数用希腊字母 lambda
标识,这个形式系统因此得名[4]。利用这一形式系统,阿隆左就可以对上述诸多问题推理并给出结论性的答案。
 
独立于阿隆左,阿兰・图灵也在进行着相似的工作,他提出了一个不同的形式系统(现在被称为图灵机),并使用这一系统独立得给出了和阿隆左相似的结论。后来被证明图灵机和
lambda 演算能力等同。
 
我们的故事本可以到此结束,我会就此歇笔,而你也将浏览到下一个页面,如果第二次世界大战没有在那时打响。整个世界笼罩在战争的火光和硝烟之中,美国陆军和海军前所未有的大量使用炮弹,为了改进炮弹的精确度,部队组织了大批的科学家持续地计算微分方程以解出弹道发射轨迹。渐渐意识到这个任务用人力手工完成太耗精力后,人们开始着手开发各种设备来攻克这个难关。第一个解出了弹道轨迹的机器是
IBM 制造的 Mark I ---- 它重达5吨,有75万个组件,每秒可以完成三次操作。
 
竞争当然没有就此结束,1949年,EDVAC(Electronic Discrete Variable Automatic
Computer,爱达瓦克)被推出并获得了极大的成功。这是对冯・诺依曼架构的第一个实践实例,实际上也是图灵机的第一个现实实现。那一年好运与阿隆左・丘奇无缘。
 
直到1950年代将尽,一位 MIT 的教授John
McCarthy(也是普林斯顿毕业生)对阿隆左・丘奇的工作产生了兴趣。1958年,他公开了表处理语言 Lisp。Lisp 是对阿隆左・丘奇的
lambda 演算的实现但同时它工作在冯・诺依曼计算机上!很多计算机科学家认识到了 Lisp
的表达能力。1973年,MIT人工智能实验室的一组程序员开发了被称为Lisp机器的硬件-阿隆左 lambda 演算的硬件实现!
 
函数式编程
 
函数式编程是对阿隆左・丘奇理论的实践应用。但也并非全部 lambda 演算都被应用到了实践中,因为lambda
演算不是被设计为在物理局限下工作的。因此,象面向对象的编程一样,函数式编程是一系列理念,而不是严格的教条。现在有很多种函数式编程语言,他们中的大多数以不同方式完成不同任务。在本文中我将就最广泛使用的源自函数式编程的思想作一解释,并将用Java语言举例。(的确,你可以用Java写出函数式的程序如果你有显著的受虐倾向)。在下面的小节中,我将会把Java作为一种函数式语言,并对其稍加修改使它成为一种可用的函数式语言。现在开始吧。
 
lambda 演算被设计用来探询关于计算的问题,所以函数式编程主要处理计算,并惊人地用函数来完成这一过程。函数是函数式编程的基本单位,函数几乎被用于一切,包括最简单的计算,甚至变量都由计算取代。在函数式编程中,变量只是表达式的别名(这样我们就不必把所有东西打在一行里)。变量是不能更改的,所有变量只能被赋值一次。用
Java 的术语来说,这意味着所有单一变量都被声明为 final(或 C++ 的const)。在函数式编程中没有非 final 的变量。
 
final int i = 5;
final int j = i + 3;
 
因为函数式编程中所有变量都是 final
的,所以可以提出这样两个有趣的表述:没有必要总是写出关键字final,没有必要把变量再称为变量。那么现在我们对Java作出两个修改:在我们的函数式
Java 中所有变量默认都是 final的,我们将变量(variable)称为符号(symbol)。
 
就此你也许会质疑,用我们新创造的语言还能写出有些复杂度的程序吗?如果每个符号都是不可变更(non-mutalbe)的,那么就无法改变任何状态!其实事实并非完全如此。在阿隆左研究其
lambda 演算时,他并不想将某个状态维护一段时间以期未来对其进行修改。他关注的是对数据的操作(也通常被称为"演算体caculating
stuff")。既然已被证明lambda演算与图灵机等价,它可以完成所有命令式编程语言能够完成的任务。那么,我们怎么才能做到呢?
 
答案是函数式程序能保存状态,只是它并非通过变量而是使用函数来保存状态。状态保存在函数的参数中,保存在堆栈上。如果你要保存某个状态一段时间并时不时地对其进行一些修改,可以写个递归函数。举个例子,我们写个函数来翻转
Java 的字符串。记住,我们声明的每个变量默认都是 final 的。[5]
 
String reverse(String arg) {
if(arg.length == 0) {
return arg;
}
else {
return reverse(arg.substring(1, arg.length)) + arg.substring(0,1);
}}
 
这个函数很慢因为它不断地调用自己[6],它还也是个嗜内存魔因为要持续分配对象。不过它的确是在用函数式风格。你可能会问,怎么有人会这样写程序?好的,我这就慢慢讲来:
 
函数式编程的优点
 
你可能会认为我根本无法对上面那个畸形的函数给出个合理的解释。我开始学习函数式编程时就是这么认为的。不过我是错了。有很好的理由使用这种风格,当然其中一些属主观因素。例如,函数式程序被认为更容易阅读。因为每个街区的孩子都知道,是否容易理解在旁观者的眼中,所以我将略去这些主观方面的理由。幸运的是,还有很多的客观理由。
 
单元测试
 
因为函数式编程的每一个符号都是 final
的,没有函数产生过副作用。因为从未在某个地方修改过值,也没有函数修改过在其作用域之外的量并被其他函数使用(如类成员或全局变量)。这意味着函数求值的结果只是其返回值,而惟一影响其返回值的就是函数的参数。
 
这是单元测试者的梦中仙境(wet
dream)。对被测试程序中的每个函数,你只需在意其参数,而不必考虑函数调用顺序,不用谨慎地设置外部状态。所有要做的就是传递代表了边际情况的参数。如果程序中的每个函数都通过了单元测试,你就对这个软件的质量有了相当的自信。而命令式编程就不能这样乐观了,在
Java或 C++ 中只检查函数的返回值还不够----我们还必须验证这个函数可能修改了的外部状态。
 
调试
 
如果一个函数式程序不如你期望地运行,调试也是轻而易举。因为函数式程序的 bug
不依赖于执行前与其无关的代码路径,你遇到的问题就总是可以再现。在命令式程序中,bug
时隐时现,因为在那里函数的功能依赖与其他函数的副作用,你可能会在和 bug
的产生无关的方向探寻很久,毫无收获。函数式程序就不是这样----如果一个函数的结果是错误的,那么无论之前你还执行过什么,这个函数总是返回相同的错误结果。
 
一旦你将那个问题再现出来,寻其根源将毫不费力,甚至会让你开心。中断那个程序的执行然后检查堆栈,和命令式编程一样,栈里每一次函数调用的参数都呈现在你眼前。但是在命令式程序中只有这些参数还不够,函数还依赖于成员变量,全局变量和类的状态(这反过来也依赖着这许多情况)。函数式程序里函数只依赖于它的参数,而那些信息就在你注视的目光下!还有,在命令式程序里,只检查一个函数的返回值不能够让你确信这个函数已经正常工作了,你还要去查看那个函数作用域外数十个对象的状态来确认。对函数式程序,你要做的所有事就是查看其返回值!
 
沿着堆栈检查函数的参数和返回值,只要发现一个不尽合理的结果就进入那个函数然后一步步跟踪下去,重复这一个过程,直到它让你发现了 bug 的生成点。
 
并行
 
函数式程序无需任何修改即可并行执行。不用担心死锁和临界区,因为你从未用锁!函数式程序里没有任何数据被同一线程修改两次,更不用说两个不同的线程了。这意味着可以不假思索地简单增加线程而不会引发折磨着并行应用程序的传统问题。
 
事实既然如此,为什么并不是所有人都在需要高度并行作业的应用中采用函数式程序?嗯,他们正在这样做。爱立信公司设计了一种叫作 Erlang
的函数式语言并将它使用在需要极高抗错性和可扩展性的电信交换机上。还有很多人也发现了 Erlang
的优势并开始使用它。我们谈论的是电信通信控制系统,这与设计华尔街的典型系统相比对可靠性和可升级性要求高了得多。实际上,Erlang
系统并不可靠和易扩展,Java 才是。Erlang 系统只是坚如磐石。
 
关于并行的故事还没有就此停止,即使你的程序本身就是单线程的,那么函数式程序的编译器仍然可以优化它使其运行于多个CPU上。请看下面这段代码:
 
String s1 = somewhatLongOperation1();
String s2 = somewhatLongOperation2();
String s3 = concatenate(s1, s2);
 
在函数编程语言中,编译器会分析代码,辨认出潜在耗时的创建字符串s1和s2的函数,然后并行地运行它们。这在命令式语言中是不可能的,因为在那里,每个函数都有可能修改了函数作用域以外的状态并且其后续的函数又会依赖这些修改。在函数式语言里,自动分析函数并找出适合并行执行的候选函数简单的像自动进行的函数内联化!在这个意义上,函数式风格的程序是"不会过时的技术(future
proof)"(即使不喜欢用行业术语,但这回要破例一次)。硬件厂商已经无法让CPU运行得更快了,于是他们增加了处理器核心的速度并因并行而获得了四倍的速度提升。当然他们也顺便忘记提及我们的多花的钱只是用在了解决平行问题的软件上了。一小部分的命令式软件和
100% 的函数式软件都可以直接并行运行于这些机器上。
 
代码热部署
 
过去要在 Windows上安装更新,重启计算机是难免的,而且还不只一次,即使是安装了一个新版的媒体播放器。Windows XP
大大改进了这一状态,但仍不理想(我今天工作时运行了Windows
Update,现在一个烦人的图标总是显示在托盘里除非我重启一次机器)。Unix系统一直以来以更好的模式运行,安装更新时只需停止系统相关的组件,而不是整个操作系统。即使如此,对一个大规模的服务器应用这还是不能令人满意的。电信系统必须100%的时间运行,因为如果在系统更新时紧急拨号失效,就可能造成生命的损失。华尔街的公司也没有理由必须在周末停止服务以安装更新。
 
理想的情况是完全不停止系统任何组件来更新相关的代码。在命令式的世界里这是不可能的。考虑运行时上载一个Java类并重载一个新的定义,那么所有这个类的实例都将不可用,因为它们被保存的状态丢失了。我们可以着手写些繁琐的版本控制代码来解决这个问题,然后将这个类的所有实例序列化,再销毁这些实例,继而用这个类新的定义来重新创建这些实例,然后载入先前被序列化的数据并希望载入代码可以恰到地将这些数据移植到新的实例。在此之上,每次更新都要重新手动编写这些用来移植的代码,而且要相当谨慎地防止破坏对象间的相互关系。理论简单,但实践可不容易。
 
对函数式的程序,所有的状态即传递给函数的参数都被保存在了堆栈上,这使的热部署轻而易举!实际上,所有我们需要做的就是对工作中的代码和新版本的代码做一个差异比较,然后部署新代码。其他的工作将由一个语言工具自动完成!如果你认为这是个科幻故事,请再思考一下。多年来
Erlang工程师一直更新着他们的运转着的系统,而无需中断它。
 
机器辅助的推理和优化
 
函数式语言的一个有趣的属性就是他们可以用数学方式推理。因为一种函数式语言只是一个形式系统的实现,所有在纸上完成的运算都可以应用于用这种语言书写的程序。编译器可以用数学理论将转换一段代码转换为等价的但却更高效的代码[7]。多年来关系数据库一直在进行着这类优化。没有理由不能把这一技术应用到常规软件上。
 
另外,还能使用这些技术来证明部分程序的正确,甚至可能创建工具来分析代码并为单元测试自动生成边界用例!对稳固的系统这种功能没有价值,但如果你要设计心房脉冲产生器
(pace maker)或空中交通控制系统,这种工具就不可或缺。如果你编写的应用程序不是产业的核心任务,这类工具也是你强于竞争对手的杀手锏。
 
高阶函数
 
我记得自己在了解了上面列出的种种优点后曾想:"那都是非常好的特性,可是如果我不得不用天生就不健全的语言编程,把一切变量声明为
final 产生的代码将是垃圾一堆。" 这其实是误解。在如Java 这般的命令式语言环境里,将所有变量声明为final
没有用,但是在函数式语言里不是这样。函数式语言提供了不同的抽象工具它会使你忘记你曾经习惯于修改变量。高阶函数就是这样一种工具。
 
函数式语言中的函数不同于 Java 或 C 中的函数,而是一个超集----它有着 Java 函数拥有的所有功能,但还有更多。创建函数的方式和 C 中相似:
 
int add(int i, int j) {
return i + j;
}
 
这意味着有些东西和同样的 C 代码有区别。现在扩展我们的 Java
编译器使其支持这种记法。当我们输入上述代码后编译器会把它转换成下面的Java代码(别忘了,所有东西都是 final 的):
 
class add_function_t {
int add(int i, int j) {
return i + j;
}
}
 
add_function_t add = new add_function_t();
 
这里的符号 add 并不是一个函数。这是一个有一个成员函数的很小的类。我们现在可以把 add
作为函数参数放入我们的代码中。还可以把它赋给另一个符号。我们在运行时创建的 add_function_t
的实例如果不再被使用就将会被垃圾回收掉。这些使得函数成为第一级的对象无异于整数或字符串。(作为参数)操作函数的函数被称为高阶函数。别让这个术语吓着你,这和
Java 的 class 操作其它 class(把它们作为参数)没有什么区别。我们本可以把它们称为"高阶类"但没有人注意到这个,因为
Java 背后没有一个强大的学术社区。
 
那么怎样,何时应该使用高阶函数呢?我很高兴你这样问。如果你不曾考虑类的层次,就可能写出了一整团堆砌的代码块。当你发现其中一些行的代码重复出现,就把他们提取成函数(幸运的是这些依然可以在学校里学到)。如果你发现在那个函数里一些逻辑动作根据情况有变,就把他提取成高阶函数。糊涂了?下面是一个来自我工作的实例:假如我的一些
Java 代码接受一条信息,用多种方式处理它然后转发到其他服务器。
 
class MessageHandler {
void handleMessage(Message msg) {
// ...
msg.setClientCode("ABCD_123″);
// ...
 
sendMessage(msg);
}
 
// ...
 
}
 
现在假设要更改这个系统,现在我们要把信息转发到两个服务器而不是一个。除了客户端的代码一切都像刚才一样----第二个服务器希望这是另一种格式。怎么处理这种情况?我们可以检查信息的目的地并相应修改客户端代码的格式,如下:
 
class MessageHandler {
void handleMessage(Message msg) {
// ...
if(msg.getDestination().equals("server1″) {
msg.setClientCode("ABCD_123″);
} else {
msg.setClientCode("123_ABC");
}
// ...
 
sendMessage(msg);
}
 
// ...
 
}
 
然而这不是可扩展的方法,如果加入了更多的服务器,这个函数将线性增长,更新它会成为我的梦魇。面向对象的方法是把MessageHandler作为基类,在导出类中专业化客户代码操作:
 
abstract class MessageHandler {
void handleMessage(Message msg) {
// ...
msg.setClientCode(getClientCode());
// ...
 
sendMessage(msg);
}
 
abstract String getClientCode();
 
// ...
 
}
 
class MessageHandlerOne extends MessageHandler {
String getClientCode() {
return "ABCD_123″;
}
 
}
 
class MessageHandlerTwo extends MessageHandler {
String getClientCode() {
return "123_ABCD";
}
 
}
 
现在就可以对每一个服务器实例化一个适合的类。添加服务器的操作变得容易维护了。但对于这么一个简单的修改仍然要添加大量的代码。为了支持不同的客户代码我们创建了两个新的类型!现在我们用高阶函数完成同样的功能:
 
class MessageHandler {
void handleMessage(Message msg, Function getClientCode) {
// ...
Message msg1 = msg.setClientCode(getClientCode());
// ...
 
sendMessage(msg1);
}
 
// ...
 
}
 
String getClientCodeOne() {
return "ABCD_123″;
 
}
 
String getClientCodeTwo() {
return "123_ABCD";
 
}
 
MessageHandler handler = new MessageHandler();
handler.handleMessage(someMsg, getClientCodeOne);
 
没有创建新的类型和新的class层次,只是传入合适的函数作为参数,完成了面向对象方式同样的功能,同时还有一些额外的优点。没有使自己囿于类的层次之中:可以在运行时传入函数并在任何时候以更高的粒度更少的代码修改他们。编译器高效地为我们生成了面向对象的"粘合"代码!除此之外,我们还获得了所有函数式编程的其他好处。当然函数式语言提供的抽象不只这些,高阶函数只是一个开始:
 
currying
 
我认识的大多数人都读过"四人帮"的那本设计模式,任何自重的程序员都会告诉你那本书是语言中立的(agnostic),模式在软件工程中是通用的,和使用的语言无关。这个说法颇为高贵,故而不幸的是,有违现实。
 
函数式编程极具表达能力。在函数式语言中,语言既已达此高度,设计模式就不再是必需,最终你将设计模式彻底消除而以概念编程。适配器(Adapter)模式就是这样的一个例子。(究竟适配器和
Facade 模式区别在哪里?可能有些人需要在这里再多费些篇章)。一旦语言有了叫作 currying 的技术,这一模式就可以被消除。
 
currying.
 
适配器模式最有名的是被应用在 Java 的"默认"抽象单元----class
上。在函数式编程里,模式被应用到函数。模式带有一个接口并将它转换成另一个对他人有用的接口。这有一个适配器模式的例子:
 
int pow(int i, int j);
int square(int i)
{
return pow(i, 2);
}
 
上面的代码把一个整数幂运算接口转换成为了一个平方接口。在学术文章里,这个雕虫小技被叫作currying(得名于逻辑学家Haskell
Curry,他曾将相关的数学理论形式化 )。因为在函数式编程中函数(反之如class)被作为参数来回传递,currying
很频繁地被用来把函数调整为更适宜的接口。因为函数的接口是他的参数,使用 currying 可以减少参数的数目(如上例所示)。
 
函数式语言内建了这一技术。不用手动地创建一个包装了原函数的函数,函数式语言可以为你代劳。同样地,扩展我们的语言,让他支持这个技术:
 
square = int pow(int i, 2);
 
这将为我们自动创建出一个有一个参数的函数 square。他把第二个参数设置为 2 再调用函数 pow。这行代码会被编译为如下的 Java 代码:
 
class square_function_t {
int square(int i) {
return pow(i, 2);
}
}
 
square_function_t square = new square_function_t();
 
正如你所见,通过简单地创建一个对原函数的包装,在函数式编程中,这就是 currying ----
快速简易创建包装的捷径。把精力集中在你的业务上,让编译器为你写出必要的代码!什么时候使用
currying?这很简单,任何时候你想要使用适配器模式(包装)时。
 
惰性求值
 
惰性(或延迟)求值这一技术可能会变得非常有趣一旦我们采纳了函数式哲学。在讨论并行时已经见过下面的代码片断:
 
String s1 = somewhatLongOperation1();
String s2 = somewhatLongOperation2();
String s3 = concatenate(s1, s2);
 
在一个命令式语言中求值顺序是确定的,因为每个函数都有可能会变更或依赖于外部状态,所以就必须有序的执行这些函数:首先是
somewhatLongOperation1,然后 somewhatLongOperation2,最后 concatenate,在函数式语言里就不尽然了。
 
前面提到只要确保没有函数修改或依赖于全局变量,somewhatLongOperation1 和somewhatLongOperation2
可以被并行执行。但是如果我们不想同时运行这两个函数,还有必要保证有序的执行他们呢?答案是不。我们只在其他函数依赖于s1和s2时才需要执行这两个函数。我们甚至在concatenate调用之前都不必执行他们----可以把他们的求值延迟到concatenate函数内实际用到他们的位置。如果用一个带有条件分支的函数替换concatenate并且只用了两个参数中的一个,另一个参数就永远没有必要被求值。在
Haskell 语言中,不确保一切都(完全)按顺序执行,因为 Haskell 只在必要时才会对其求值。
 
惰性求值优点众多,但缺点也不少。我们会在这里讨论它的优点而在下一节中解释其缺点。
 
优化
 
惰性求值有客观的优化潜力。惰性编译器看函数式代码就像数学家面对的代数表达式--------可以注销一部分而完全不去运行它,重新调整代码段以求更高的效率,甚至重整代码以降低出错,所有确定性优化(guaranteeing
optimizations)不会破坏代码。这是严格用形式原语描述程序的巨大优势--------代码固守着数学定律并可以数学的方式进行推理。
 
抽象控制结构
 
惰性求值提供了更高一级的抽象,它使得不可能的事情得以实现。例如,考虑实现如下的控制结构:
 
unless(stock.isEuropean()) {
sendToSEC(stock);
}
 
我们希望只在祖先不是欧洲人时才执行sendToSEC。如何实现 unless?如果没有惰性求值,我们需要某种形式的宏(macro)系统,但
Haskell 这样的语言不需要它。把他实现为一个函数即可:
 
void unless(boolean condition, List code) {
if(!condition)
code;
}
 
注意如果条件为真代码将不被执行。我们不能在一个严格(strict)的语言中再现这种求值,因为 unless调用之前会先对参数进行求值。
 
无穷(infinite)数据结构
 
惰性求值允许定义无穷数据结构,对严格语言来说实现这个要复杂的多。考虑一个 Fibonacci
数列,显然我们无法在有限的时间内计算出或在有限的内存里保存一个无穷列表。在严格语言如 Java 中,只能定义一个能返回 Fibonacci
数列中特定成员的 Fibonacci 函数,在 Haskell
中,我们对其进一步抽象并定义一个关于 Fibonacci
数的无穷列表,因为作为一个惰性的语言,只有列表中实际被用到的部分才会被求值。这使得可以抽象出很多问题并从一个更高的层次重新审视他们。(例如,我们可以在一个无穷列表上使用表处理函数)。
 
缺点
 
当然从来不存在免费的午餐。惰性求值有很多的缺点,主要就在于,懒。有很多现实世界的问题需要严格求值。例如考虑下例:
 
System.out.println("Please enter your name: ");
System.in.readLine();
 
在惰性求值的语言里,不能保证第一行会在第二行之前执行!那么我们就不能进行输入输出操作,不能有意义地使用本地(native)接口(因为他们相互依赖其副作用必须被有序的调用),从而与整个世界隔离。如果引入允许特定执行顺序的原语又将失去数学地推理代码的诸多好处(为此将葬送函数式编程与其相关的所有优点)。幸运的是,并非丧失了一切,数学家为此探索并开发出了许多技巧来保证在一定函数设置下(function
setting)代码以一特定的顺序执行。这样我们就赢得了两个世界。这些技术包括continuation, monad 和
uniqueness typing
(一致型别)。我只会在本文中解释continuation,把 monad 和 uniqueness typing
留到将来的文章中。有趣的是,除了确保函数求值顺序, continuation 在很多别的情况下也很有用。这点等一会儿就会提到。
 
Continuations
 
Continuations 对于程序设计的意义,就像《达芬奇密码》对人类历史的意义:即对人类最大秘密的惊人揭示。也许不是,但他在概念上的突破性至少和揭示了负数的平方根意义等同。
 
我们在学习函数时,只是学到了一半的事实,因为我们基于一个错误的假定:函数只能将结果返回到它的调用函数。在这个意思上continuation
是广义的函数。函数不必要返回到其调用函数而可以返回到程序的任何地方。我们把"continuation"
作为参数传给一个函数,它指定了这个函数返回的位置。这个描述可能听起来更加复杂。看一下下面的代码:
 
int i = add(5, 10);
int j = square(i);
 
函数 add 在其被调用的位置将结果 15 赋给了 i,接下来 i 的值被用来调用
square。注意所有的惰性求值编译器都不能调整这几行代码因为第二行依赖着第一行的成功求值。下面用 continuation 风格又称
CPS (Continuation Programming Style) 来重写这段代码,这里函数 add 会将结果返回到 square
而不是原来的调用函数。
 
int j = add(5, 10, square);
 
这个例子中 add 有了另一个参数 ---- 一个 add 必须在它求值结束时用其返回值调用的函数。这里square 是 add 的一个
continuation。这两种情况下,j 都将等于 255。
 
这就是强制使惰性语言有序地求值两个表达式的第一个技巧。考虑下面这个(熟悉的)IO代码:
 
System.out.println("Please enter your name: ");
System.in.readLine();
 
这两行不相依赖所以编译器会自由的重新调整他们的执行顺序。然而,如果我们用 CPS 来重写这段代码,就会有一个依赖,编译器会因此而强制对这两行代码有序执行!
 
System.out.println("Please enter your name: ", System.in.readLine);
 
这里 println 需要用自己的返回结果作为参数去调用 readLine 并将 readLine
返回值作为自己的返回值。这样就能确保这两行被有序执行而且 readLine 一定被执行(因为整个计算期望最后的结果为结果)。Java的
println 返回 void
但如果它返回的是一个抽象值(readLine所期待的),我们就解决了这个问题!当然这样的链接函数调用很快就会使代码难以读懂,不过这个可以避免。比如我们可以给语言添加些语法甜点(syntactic
sugar)就可以简单的按顺序输入表达式,然后由编译器自动为我们链接这些函数调用。这样就可以如愿地使用期望的求值顺序并保留一切函数式编程的好处(包括数学地对我们程序进行推理的能力)!如果还是有迷惑,记住函数是只有一个成员的类的实例。重写上述代码使得
println 和 readLine 成为类的实例,这样就对一切都清楚了。
 
如果我在此结束本节,那将仅仅涉及到 continuation 最浅显的应用。用 CPS 重写整个程序,那里所有的函数都增加一个额外的
continuation 参数并把函数结果传给它。也可以通过简单地把函数当作continuation
函数(总是返回到调用者的函数)的特殊实例来将程序转为 CPS 风格。这种转换很容易被自动化(事实上,许多编译器就是这么做的)。
 
一旦我们将一个程序转为了CPS,那么很明显每个指令都将有些 continuation,
这是一个该指令在执行结束时会用其执行结果调用的函数,通常的程序中,这是一个它要返回的地址。从上面的例子中随便举个例子,比如 add(5,
10)。在用CPS风格写的程序里,add 的continuation很明显----这是一个 add
在其执行结束时会调用的函数。那么如果在非CPS的程序里,它是什么呢?当然我们可以把程序转为 CPS ,但有这个必要吗?
 
其实没有必要。仔细看一下我们的 CPS 转换过程。如果尝试为它写一个编译器,然后经过长期的思考后,你意识到这个 CPS
的版本根本不需要栈!没有函数会以传统的意义"返回",它只是用结果调用了另一个函数。我们无需在调用时将函数参数压栈再于调用结束时弹出栈,而只是简单的把他们保存在一大块内存中,然后使用跳转指令。不再需要原来的参数----他们不会再次被用到,因为没有函数会返回!
 
所以,用 CPS 风格写成的程序没有堆栈,但每个函数却有一个额外的参数可被调用。不是 CPS
风格的程序没有可以被调用的这个参数,但却有栈。栈中存放着什么?只是参数和一个指向函数返回地址的指针。你看到光了吗?栈中只是放着
continuation 的信息! 栈中指向返回指令的指针本质上和 CPS 程序里将被调用的函数是等价的。如果你想探究 add(5,10)
的 continuation,只要简单地检查它在堆栈的执行点!
 
这的确很简单。continuation 和栈上指向返回地址的指针是等价的,只是 continuation
是被显式传递,所以不必和函数被调用点是同一位置。如果还记得 continuation
就是一个函数,并且在我们的语言里,函数被编译为一个类的实例,你就会理解指向栈中返回指令的指针实际就是传递给 continuation
的参数,因为我们的函数(就像一个类的实例)只是一个指针。这意味着给定程序中任意时间和任意位置,你都可以去请求一个当前的
continuation (current continuation)(它就是当前的栈的信息)。
 
好的,这样我们就知道了什么是 current continuation。他有什么意义?一旦我们得到了当前的continuation
并将它保存在某处,我们就最终将程序当前的状态保存了下来----及时地冷冻下来。这就像操作系统将其置为休眠状态。一个 continuation
对象里保存了在我们获得它的地方重新启动程序的必要信息。操作系统在每次发生线程间的上下文切换时也是如此。唯一的区别是它保留着全部控制。请求一个continuation
对象(在Scheme里,可以调用 call-with-current-continuation 函数)后,你就会获得一个包括了当前
continuation
的对象----堆栈(或者在CPS情况下则是下一个要调用的函数)。可以把这个对象保存在一个变量(或者是磁盘)里。当你用这 continuation
"重启"程序时,就会转回到处你取得这个对象的那个状态。这就象切换回一个被挂起的线程或唤醒休眠着的操作系统,区别是用
continuation,你可以多次地重复这一过程。当操作系统被唤醒时,休眠信息就被销毁了。但如果那些信息没有被销毁,你也就可以一次次地将它唤醒到同一点,就象重返过去一样。有了
continuation 你就有了这个控制力!
 
Continuation 应该在什么情况下使用呢?通常在尝试模拟一个本质上是无状态的应用时可以简化你的任务。Continuation
很适合在Web应用程序中使用。微软公司的 ASP.NET 技术极尽苦心地模拟状态以便你在开发 Web 应用时少费周折。可如果 C#
支持了continuation,ASP.NET 的复杂度就可以减半----你只需要保存一个 continuation,当用户下次发出 web
请求时重启它即可。对程序员来说,web 应用程序将不再有中断----程序只是简单的从下一行重启!利用 continuation
这一抽象解决问题真是令人难以置信的便利。考虑到越来越多的胖客户端应用程序正在向服务器端转移,将来 continuation
也会变得越来越重要。
 
模式匹配
 
模式匹配不是什么新的创新的特性。事实上,它和函数式编程的关系不大。把产生模式匹配归因于函数式编程的唯一的原因是函数式语言一度提供了模式匹配,然而现在的命令式语言还做不到。
 
让我们用一个例子深入了解一下模式匹配。这是一个Java的Fibonacci函数:
 
int fib(int n) {
if(n == 0) return 1;
if(n == 1) return 1;
 
return fib(n - 2) + fib(n - 1);
}
 
让我们从Java衍生出的语言来支持模式匹配:
 
int fib(0) {
return 1;
}
 
int fib(1) {
return 1;
}
 
int fib(int n) {
return fib(n - 2) + fib(n - 1);
 
}
 
两者有什么区别?编译器为我们实现了分支。这有什么大不了?的确没什么。有人注意到很多函数包括了复杂的 swith
语句(尤其是在函数式程序中)所以认为这种抽象形式很好。我们把一个函数定义分离成多个,然后把模式置于参数中(有点象重载)。当这个函数被调用时,编译器使其比较参数和其运行时的定义然后选择其中正确的一个。这一般是通过选择可选的最特定的定义来完成。例如,int
fib(int n) 可以以 n 等于1 被调用,但是实际上 fib(n) 没有被调用,因为 fib(1) 更加特定。
 
模式匹配通常要比我这个例子复杂,比如,高级模式匹配系统可以让我们这样做:
 
int f(int n int f(int n) { ... }
 
模式匹配什么时候适用?情况太多了!每当你有一个嵌套着 if
的复杂的数据结构,这时就可以用模式匹配以更少的代码完成得更好。一个很好的例子闪现在我脑海,这就是所有 Win32
平台都提供了的标准的WinProc
函数(即使它通常被抽象了)。通常模式匹配系统能检测集合也可以应付简单的值。例如,当传给函数一个数组后,就可以找出所有首元素为 1
第三个元素大于 3 的所有数组。
 
模式匹配还有一个好处即如果需要增加或修改条件,那么不必对付一个巨大的函数。只需增加或修改适合的定义即可。这消除了"四人帮"(GoF)书中的一大类设计模式。条件越复杂,模式匹配就越有用。一旦习惯了它,你就会担心没有了模式匹配的日子如何打发。
 
Closures
 
到此我们已经讨论了纯的函数式语言----实现了lambda演算又不包括与丘奇形式系统矛盾的语言----环境里的特性,可是还有很多在lambda演算框架之外的函数语言的有用特征。虽然一个公理系统的实现可以让我们象数学表达式那样思考程序但它未必是实际可行的。许多语言选择去合并一些函数式的元素而没有严格的坚持函数式的教条。很多象这样的语言(如Common
Lisp)不要求变量是 final
的----可以即处对其修改。他们还不要求函数只依赖于其参数----允许函数访问外部状态。但这些语言也的确包含着函数式的特征----如高阶函数,在非纯粹的函数式语言里传递函数作为参数和限制在
lambda 演算系统中的作法有些不同,它需要一种常被称为词法(lexical)closure
的有趣特性。下面我给出几个例子。记住,这里变量不再是final的,函数可以引用其作用域外的变量:
 
Function makePowerFn(int power) {
int powerFn(int base) {
return pow(base, power);
}
return powerFn;
}
 
Function square = makePowerFn(2);
square(3); // returns 9
 
函数 make-power-fn 返回了一个函数,它有一个参数,并对这个参数进行一定阶的幂运算。如果对square(3)
求值会有什么结果?变量 power 不在 powerFn 的作用域中,因为 makePowerFn
已经返回它的栈桢而不复存在。那么square如何工作?一定是这个语言以某种方式将power的值保存了起来以便square
使用。如果我们再新建一个函数cube,用来计算参数的立方又会怎样?运行环境必须存储两个power的拷贝,每个我们用
make-power-fn 生成的函数都用一个拷贝。保存这些值的现象就被称为closure。 closure
不只保存宿主函数的参数。例如,closure可能会是这样:
 
Function makeIncrementer() {
int n = 0;
 
int increment() {
return ++n;
}
}
 
Function inc1 = makeIncrementer();
Function inc2 = makeIncrementer();
 
inc1(); // returns 1;
inc1(); // returns 2;
inc1(); // returns 3;
inc2(); // returns 1;
inc2(); // returns 2;
inc2(); // returns 3;
 
运行时已保存了n,所以递增器可以访问它,而且运行时为每个递增器都保存了一个 n 的拷贝,即使这些拷贝本应在 makeIncrementer
返回时消失。这些代码被如何编译?closure 在底层是如何工作的?很幸运,我们可以去幕后看看。
 
一点常识会很有帮助,首先会注意到的是局部变量的生命期不再由简单的作用域限定而是不确定的。那么显然可以由此得出结论它们不再被保存在栈上----反之必须被保存在堆上[8]。这样一来,closure
的实现就象我们前面讨论的函数一样了,只是它还有一个指向周围变量的引用。
 
class some_function_t {
SymbolTable parentScope;
 
// ...
 
}
 
当一个 closure 引用了一个不在其作用域的变量时,它会在其祖先作用域中查找这个引用。就是这样!Closure
将函数式和面向对象的世界紧密结合。当你创建了一个包含了一些状态的类并把它传到别处时,考虑一下 closure。Closure
就是这样在取出作用域中的变量的同时创建"成员变量",所以你不必亲自去做这些!
 
下一步的计划?
 
关于函数式编程,本文作了浅显地讨论。有时候一次粗浅的射猎可能会进展为重大的收获与我也受益匪浅。将来我还计划写写 category
理论,monad,函数式数据结构,函数式语言中的类型(type)体系,函数式并发,函数式数据库等等还有很多。如果我得以(在学习的过程中)写出了上述诸多主题中的一半,我的生命就会完整了。还有,Google
是我们的朋友。
 
评论?
 
如果你有任何问题,意见或建议,请发到邮箱 coffee...@gmail.com。很高兴收到你的反馈
 
===========================
 
[1] 我在2005年找工作时常常提出这个问题,当时我得到的是数量可观的一脸茫然。想像一下,这些人至少每人会得到30万美元,如果他们理解了他们可以得到的大部分工具。
 
[2] 这像是个悖论。物理学家和数学家被迫确认他们还不完全清楚是否宇宙万物遵循着可以被数学描述的规则。
 
[3] 我一直厌恶提供了一堆枯燥的日期,人名和地点的纪年式历史课。对我而言,历史是改变了这个世界的人的生活,是他们行为之后的个人动机,是他们得以影响亿万生灵的体制。所以这个关于历史的小节注定无法完整,只讨论了于此关系及其密切的人物与事件。
 
[4] 我在学习函数式编程的时候,很不喜欢术语 lambda,因为我没有真正理解它的意义。在这个环境里,lambda
是一个函数,那个希腊字母只是方便书写的数学记法。每当你听到 lambda 时,只要在脑中把它翻译成函数即可。
 
[5] 有趣的是 Java 的字符串是不可变更的,探讨这一离经叛道的设计的原因也非常有趣,不过在这里会分散我们对原目标的注意力
 
[6] 大多数函数式编程语言的编译器能通过将递归尽可能转为迭代来进行优化,这被称为尾递归。
 
[7] 相反未必成立,虽然有时可以证明两端代码等价,但这不是所有情况下都成立。
 
[8] 这实际上不比存储在栈上慢,因为一旦引入了垃圾回收器,内存分配就成为了一个O(1)的操作。

Posted via email from timnew's posterous