一 : 给自己设计一条最便捷的道路
文/杏花雨
梭罗说:“从圆到圆心有多少条半径,人们的生活方式也应该有这么多。”强调了现实生活中人们生活方式的丰富多样性。大千世界,芸芸众生,各人本该有各人的活法。但有人喜欢拿不同的方式作比较,还要求证出哪种方式优、哪种方式劣来,我实在是不敢苟同。由此,我想起了曾经听过的一个故事。
世界建筑大师格罗培斯设计的迪斯尼乐园马上就要完工了,然而各景点之间的路径该怎样设计还没有完美方案,格罗培斯心里十分焦急。巴黎的庆典一结束,他就让司机带他去地中海滨。
汽车在南部的乡间公路上奔驰,这里漫山遍野都是当地农民的葡萄园。当他们的车子拐入一个小山谷时,发现那停着许多车。原来这是一个无人管理的葡萄园,你只要在路边的箱子里投入5法郎就可以摘一篮葡萄上路。据说这是当地一位老太太因葡萄园无人料理而想出的办法。谁料到在这绵延百里的葡萄产区,总是她的葡萄最先卖完。这种给人自由,任其选择的做法使大师深受启发。
回到驻地,他给施工部拍了份电报:撒上草种,提前开放。在迪斯尼乐园提前开放的半年里,草地被踩出许多小路,有宽有窄,方便自然。
后来,格罗培斯让人按这些踩出的痕迹铺设了人行道。1971年在伦敦国际园林建筑艺术研讨会上,迪斯尼乐园的路径设计被评为世界最佳设计。
在这个世界上,不论皇帝老儿、达官贵人,还是市井走卒、凡夫俗子,人人都有按照自己的理解过上舒心日子的心愿,但生活留给每个人的道路就那么多,不可能将所有人都集中安排在某一条道上。因此,我们没有必要、也没资格要求别人按照自己的心愿安排人家的生活,更不该因人家对生活的理解与自己不同而轻视别人。世界是多样的,生活是大家的,任何人都有选择自己生活道路的自由。
宽敞平坦的高速通道自有它的酣畅淋漓,曲径通幽的乡野小路也有它的无限风光。混迹于官场的生活少不了哈腰谄媚的卑贱,布衣短褐的生活反而多了些恬淡率性的自然。行走在每一条路上,都各有局限和缺点,自己的路走起来有多舒服只有自己知道,此所谓鞋子合不合脚只有脚知道。重要的是给自己设计一条最便捷的路,末了还是但丁那句话:“走自己的路,让别人去说吧!”
二 : 万事都要给自己留一条退路
我们总是强调勇往直前,中国的传统故事中也有破釜沉舟,都是说不给自己留退路好让自己一心只能向前冲。但是在我们的实际生活中,除了一些特殊的情况,我们做事情的时候最好还是要给自己留一条后路,以便前路不通的时候能有回旋的余地。三 : 给自己一条退路,再次比较Erlang和Golang
给自己一条退路,再次比较Erlang和Golang
2014-6-28
陈叶皓 chenyehao@gmail.com
雨天的周末,适合码字的时节。。。
一年前我开始学习go语言之际,如获至宝,既有python的编码效率,又带来性能的15倍提升。尤其是在异步编程方面,可以使用channel同步线程,不必加锁可以充分利用cpu多核计算,真是没有弱点。
后来慢慢了解到,这种无锁异步编程的思想,源自一门叫做erlang的语言,Erlang更加了不起。除了异步编程之外,这门语言天生支持分布式,单机上开发的软件,可以不加修改地运行在集群上,另外还支持软件版本的热升级,自带的OTP框架支持进程间的监督和重启,提供了坚如磐石的运行环境。Erlang是如此完美,我认为是最适合开发互联网应用的语言,一时间有种“终于找到真理”的喜悦。
不过那个时候,心里总觉得有什么地方不对,那就是,七牛CEO许式伟本身是Erlang高手,他却为自己的公司选择go语(www.61k.com)言,七牛成为一家只使用go语言进行开发的公司。
最近几天随着erlang学习的深入,慢慢找到了答案。Erlang实质是一门动态语言,它的动态类型,动态函数调用,都充分表现的动态语言的特征。Erlang是1个运行在虚机里面的动态语言,其实也不奇怪,只有动态语言,才容易实现软件版本的热升级。那动态语言有什么缺点,就是慢,动态语言因为时刻要进行类型推导,执行速度就是要比静态语言慢好几倍,所以,erlang自身所做的优化,就是尽可能把常用的功能用c语言实现,集成到erlang的虚机内,至于程序员编写的代码,也只能慢慢地执行了。
所以erlang适用的场景是,高并发且计算不密集,例如whatsapp,使用erlang编写,千万用户同时在线,高并发的典型场景,但是用户之间发送消息是不密集的,1个人打字能有多快,这个场景就特别适合erlang。
许式伟早就明白,七牛要提供的图片云存储,时刻需要大块磁盘IO,图片实时缩放需要大量CPU计算,选择静态语言go语言,可以提高性能,减少服务器的购买。
“世间安得双全法,不负如来不负卿”,高并发和密集计算其实是一对矛盾,当cpu服务于密集计算,自然无暇响应更多的请求。当然可以使用erlang搭建互联网服务,响应高并发地请求,然后把计算转移到cpu空闲的节点上,然而那些计算节点,如果是用静态语言(比如go语言)编写,会获得更好的性能。
在设计软件时,微观上,要识别哪些可以并发,哪些必须串行。宏观上,要识别哪些是IO密集,哪些是计算密集。永远没有标准答案,正是这个行业的魅力。
比较总结:
Erlang的优势,其中的2,3,4并没有别的语言可以匹敌
1.高并发,异步编程的鼻祖,写并发代码很简单
2.支持集群
3.健壮(OTP的进程监督机制)
4. 代码热升级、热回滚
Go语言(scala,F#类似)的优势,
1.高并发,支持异步编程
2.高性能(静态语言的优势)
本文标题:留给自己一条退路作文-给自己设计一条最便捷的道路61阅读| 精彩专题| 最新文章| 热门文章| 苏ICP备13036349号-1