图形系统设计心得

最近做的两个项目都跟图形系统设计有关系。慢慢的总结出来一些体会,记录下来以后方便自我批评。。

假如让我写一个操作系统的话,我绝不会把图形界面放到内核里面。否则图形界面挂起居然会导致系统死机,这太恐怖了。

然而,提供一套统一的方式让应用程序管理自己的图形接口是绝对正确的。提供API给应用程序的方法很纯粹,但是也很危险。经常遇到的各种程序挂起,不能更新界面,不相应鼠标等等问题,其实都是事务处理和图形处理过度耦合造成的。他需要事务处理和图形处理以协作的方式由应用程序自行实现。假如应用程序的winproc里面写一个死循环,那么界面更新是无论如何也做不了的了。这样的一个操作系统,自然而然会得到“不稳定”的美名。就算仅仅是他的应用程序不稳定,也是你把“不稳定”的权限交给他的。

最近做的项目是widget嘛,其实这个东西完全可以做整个操作系统的图形界面。让图形界面和事务处理在两个分离的线程里面完成,这是非常必要的。当然你必须提供一套合适的信号系统,让两个线程得以合理的通讯。这会遇到很多复杂或者可能会有很多bug的问题,不过这些问题可以慢慢研究嘛。我们先看好的方面。

首先就是可以用类html的东西来定义显示形式,首先html已经非常成熟,有大批熟练程序员,所以用这个东西的成本最低廉,另外这种东西也方便修改,同时修改又对已经编译好的程序没有影响,也就是说界面换肤会成为一种非常低成本的事情。应用程序内部逻辑其实是完全的事务处理,做一些重要的事情。然后界面和这些事务处理采用js之类的脚本语言控制,方便开发维护。

是否需要一个脚本-二进制粘合层是一个可以商量的问题。其实最基本的就是让应用程序定义一套界面接口的名称,并在内操纵这些接口。这些接口可不是原始的图形渲染逻辑,决不能让应用程序去做渲染的实质工作,这套接口应该是充分抽象的。比如应该定义出listbox, textbox, checkbox等类型,要避免应用程序自己去考虑绘制的实际问题。应用程序只需要说明逻辑。向某个列表里面插入数据,或者显示某幅图片。具体的渲染逻辑要放到图形引擎里面去做。

为什么要充分抽象。因为渲染是一个全局的事情。尤其是加上半透明处理之后。渲染不能光顾着自己的程序,还要和其他的窗体融合。单独的应用程序是不应该知道,除了自己之外操作系统还有那些其他窗口的。他应该只顾着自己。但是图形绘制又需要跟其他窗口耦合,因此这两部分事情绝不能在一个单一的模块里面完成,否则一定会出问题。哪怕应用程序已经死循环了,当鼠标移动到他的界面上的各个按钮的时候,按钮仍然应该拥有原有的视觉效果,mouseover, mousedown, 这些跟应用程序无关。窗口应该还是可以拖动,可以随时关掉。不能仅仅因为应用程序在buzy,就连最基本的图形显示都做不到了。只有把图形渲染的任务交给另外一个线程来做,这才是有可能的。

并且将listbox之类的图形接口由统一的引擎来完成,还会有很多额外的好处。就让我们关注listbox吧,因为要包含大量数据的东西,或者说“容器”,需要考虑的东西往往比第一反应能想到的东西要多。比如你的listbox还有10K数据,但一次只能显示100条,你会一次就把这些数据都读取到内存吗?显然不能。我们会采用cache。然后所有cache相关的东西都要往里面放,什么时候读,一次读多少条,什么时候写回,脏比特位,等等。然后listbox还有滚动条。滚动的时候应该怎么做。动画怎么显示。等等等等。每个含有这类逻辑的应用程序都去重新实现一遍这套逻辑是不可思议的。你会说用库嘛,用MFC, 用ATL,问题没那么简单。因为这些东西的实现是复杂的,需要考虑的问题很多。往往是使用不当的时候你又不知道究竟哪里用得不当。文档永远是不够详细的,同时,用户是永远都不会看文档的。并且文档越详细,用户越不会看(太长了)。因此文档是没有意义的。需要提供服务,而非类库。让这些复杂难解的事情由别人直接解决掉,从一开始就不要把跟渲染相关的东西或编译或link到应用程序里面来,从物理上就要做decoup,应用程序只需提供数据和逻辑就好了。

当然这可能又会产生新的问题。比如数据提供的接口怎么定义。同是listbox,数据可能来自内存,可能来自文件,可能来自数据库,可能来自网络,等等。 需要提供一个通用接口绑定界面和数据,要保证使用字符串就能定位到相应的属性名(比如可以采取类似IDispatch的模式)。之后又应用程序自己实现这个接口,实现内部就可以随心所欲了,网络怎么取,数据库怎么访问,等等。但是从性能考虑,你还不能仅仅定义一个单独item数据访问的接口。你需要让应用程序一次就返回给你批量的数据。比如你有10K数据,但你要应用程序只给你从第200条到第300条。需要有这类区间型的接口。另外还需要有数据写回的接口,比如某个属性可以设置成可写的。然后数据就变成一段cache。当析构函数被调用的时候,先写回数据,然后析构。

一旦这些接口被定义好,让脚本来控制接口就变得简单。无非是在不同接口之间不断回调嘛。并且这样的脚本还可以编译成二进制代码段。其实也就是把一个一个的func call组合起来而已了。

同样的,类html的解析其实也是可以编译出来的。你解析过一次html之后,生成了一段图形类的thunk,你只需把这段thunk二进制写进某个dll,要用的时候直接读进来就可以显示了,无需反复parse html,性能其实跟纯用系统调用写出来的程序性能不会差很多。

当然这样的应用程序就不再是一个exe文件。他其实是一个dll。或者通用的说,它是一个服务。整个操作系统都是基于服务的。系统底层提供访问硬件的各种服务,图形引擎提供图形处理的服务,应用程序提供事务处理和交互逻辑的服务。而exe其实是一个简单的binder。他把不同的服务启用起来,在之间传递各种消息(因为不同的服务是跑在不同的线程里面的,所以需要消息)。前面说的那么多图形处理和数据访问的接口,都应该定义在这个exe里面,实质上就是向不同的服务发送不同的请求,并且返回应答而已。这样设计的结果不仅仅减少了耦合,增加了系统鲁棒性,减少了程序员的压力和重复代码,并且也大大增加了程序的灵活性。比如一个阅读器,本来是读取硬盘上的文件的。界面无需变化,只需要实现一个新的获取网络数据的服务,就可以变成一个读取网络图书的在线阅读器。如此之类的可能性还有很多。并且应用程序因为都采取统一的接口,因此进程间通讯也会变得更方便,增加新的UI也会更简便(不是说GUI),比如原来是鼠标点击的程序,要想增加一套用键盘或者用啥啥新式设备的交互逻辑,也会很简单。

好吧,其实以上说的这么多东西也没有什么创建性,所谓MVC嘛,几十年前就有了。只不过从来没有仔细想过它究竟意味着什么。这次实习还有写毕设,慢慢让我对这套东西理解深刻了。只是自我记录记录。以后发现有错了回过头来批评批评,之类的。

以上

再论谷歌“退出”中国

不断在网上和推上看到各种各样的对谷歌和中国的评论,本来不想写傻逼文章找骂的,不过越看越手痒,于是不得不写了。

言多必失,我尽可能简短(好吧,说出这句话证明我要开始长篇大论了。。。囧)。

首先,谷歌没有退出中国。

今天聊天的时候,5+提醒我,其实谷歌自己从来都没说自己退出中国。他说的是,他会尽可能寻求留在中国的方法,并且他找到了,那就是香港。退出完全是国人的炒作。或者五毛,或者过于亲谷歌以至于以此用词,或者跟风受到“煽动”(谁说无知群众少了呢,其实群众是极其容易被“煽动”的)。谁说香港不属于中国对不对,况且谷歌的所有原有面向大陆的服务都仍然照常运作,唯独搜索离开大陆。有人说谷歌纯爷们,放着中国这么大一块市场不要了,纯为了不做恶的信仰做不可思议的事情。请这些人三思。首先考虑谷歌中国之前在国内与百度竞争是否成功,再考虑谷歌继续沿用旧有的方针与百度或者其他搜索引擎竞争中国市场有什么前途。李开复离开谷歌的时候怎么说的,“搜索市场的扩展已经没有大幅增加的可能性了,继续留在谷歌没有激情”。最后考虑,谷歌在中国用户是哪个群体,有潜力的是哪个群体,再想想这个“退出”中国的方案能最大程度的增加哪个群体对谷歌的忠诚度,加深对哪个群体的知名度,又对哪个群体来说其实是无关紧要的。你就可以发现或许短期来说退出中国是失败,可是长远来看他可能有深远的经济价值。

第二,谷歌“退出”与邮件系统遭受黑客攻击无关

Gmail从来就没有引进中国市场,邮件服务器本来就不在中国。并且“退出”之后仍然有中国员工在北京上海工作。假如原来谷歌邮件服务器会遭受攻击,“退出”之后仍然会。这有什么区别呢?况且,正如谷歌自己所说,发现二十多家(忘记具体数字)公司都受到不同程度的黑客攻击。别的公司掩饰这个问题都来不及,拼命说自己公司的数据没受什么影响,为什么唯独谷歌反应这么强烈?这是一个借口,一个导火索,还是一个暗示,他明确说明是“人权人士”的邮件帐户遭受攻击(为什么?为什么知道是人权人士,又为什么要说?)。这明确的暗示这件事情的政治意义。当然同时这也有着他的商业价值。加上上条所述的为了加深中国精英人群对谷歌的知名度和忠诚度,采取自由民主等等口号是非常有效的。最后不要忘记美国有爱国者法案,中国审不审查你的邮件先不讨论,美国可是随时都在看着你的邮件以及一切通讯呢。不要掩耳盗铃。

第三,谷歌一点也不低调。

之前一段时间,自谷歌上一篇关于中国的博客至昨日作出最终决定的一段时间之内,很多人都在说其实谷歌是非常低调的完全不想放大这件事情,一切炒作都是五毛发起用于抹黑谷歌名声的。五毛究竟是否特意炒作这件事情不得而知,但是谷歌写了义正言辞的博客,一度关闭北京员工的访问代码权限等等,绝不是低调的表现。谷歌想要低调的话,你根本就不会知道(他们开发android和chromium OS的早期,有谁知道这些事情?)。假如这些还没有说服力,想想看最后,谷歌搬服务器到香港,他近乎讽刺的在下面写着“欢迎来到谷歌在中国的新家”,假如他很低调,他完全可以把网页做得跟原来一模一样,不注意都看不出来,对用户来说这完全是无痛的。他甚至可以继续用google.cn的域名,因为按照谷歌的说法,搬家到香港去就完全合法了,因此理应备案通过(当然也有可能是政府不批准,这个我不了解了)。可是他做了明显的动作让用户明显的注意到区别。他一直在展示自己的姿态。他在利用自己的口碑和用户忠诚度跟政府战斗。我不评论这种战斗的正确性,谷歌看似正义但目的不纯,政府一无正义而无逻辑更别提法律那就更不必说了。甚至他故作深沉发动舆论力量都是老练的公关技巧。评论说谷歌不懂得危机公关的人不是骗子就是傻瓜。在这场战斗中永远显得低劣愚蠢又遮遮掩掩找东西遮羞的反而是另外一方。

本来不想讨论政府的做法的,不过都说到这了就一起评一评。我们先不考虑政府是不是该为民服务(不要幻想政府为民服务,尤其是大国。说美国政府是为人民服务的政府的人们请三思)。我们只是从一个政府如何能够健康合理的发展的角度去看问题,都会发现目前政府做的事情都是“很傻很天真”。他们的目的其实很明确,仅从政府存活的角度来说也是对的。比如要控制舆论,比如要应对国际压力,比如要控制经济命脉和政治地位。但问题是,他们采取的方式幼稚,手段低劣,又因为好面子的关系不断找东西掩饰自己的错误。最后终于变得集权,不透明,封锁舆论。例子的话,近有朝鲜,远有苏联。为什么同样是冰冷的国家机器,美国政府就看上去那么美好,让那么多人追求。就是因为他有成熟的执政手腕。他同样控制舆论,不过人家有大禹治水的本领,用不着用堵的;他同样审查言论,但是更多的是被动监听,禁止言论的尺度也正适合,不会让人产生反感情绪。一切的一切,他本质上同样是压榨劳动人民的剥削机器,但是经历了世界大战和国内战争,经历了政治动荡和经济危机,他们学到并掌握了最好的压榨劳动人民,又让劳动人民被压榨的非常幸福的一种手腕。

那就是法律。

中国没有(有效的)法律,是中国执政水准无法提高的重要原因。为什么说没有,先不说这所谓的法律制定的自相矛盾互相冲突原本就是没打算认真执行才这么设计的,单说中国的立法者,执法者,司法者,是同一个体系的,他们之间都是官官相护勾连在一体的。自己定的规矩自己做然后自己给自己打分。假如这仅仅是一个人,那还好,只需他非常优秀是有道明君一代圣人,就完全没问题。但是如果是一个有上千万人构成的庞大臃肿的结构呢。毕竟圣人是少数。我们尚且假设这个世界是存在圣人的,并且所有的圣人都在政府工作。即使这样,也仅仅是千万分之一吧。不过以中国的现状并不适合多党执政,这点我不讨论了,不过至少应该在现有的一党框架下实现民主和政治公开。其实这并不矛盾。发动群众的力量来监督政府,这其实老百姓已经自发在做了。如果政府想要活命,其实应该鼓励。如果打压舆论,那反而是给自己挖坟了。防民之口胜于防川,老祖宗的话都不记得了。手术刀摆在面前,宁可护着肿瘤也不肯忍半点痛,那结果真是可想而知的。

最后再来阴谋论一下谷歌和美国政府的关系吧。究竟有没有关系谁知道呢。但是美国政府一直利用中国的人权问题对中国施压,与这次谷歌提到人权人士有没有关系呢?谷歌提出要退出中国美国立刻站出来全力支持这之间有没有关系呢?我有一次跟5+提到,为什么谷歌哪怕顶着各国的强烈反对也要做街景。假如他真的跟美国有关系呢?全世界的街景啊!那是多么重要的战略数据。又比如谷歌的月球和火星,从NASA重金买来这些毫无经济价值的数据(好吧这点是我瞎说的了,这个数据是免费的吗),然后免费给大家当玩具?

当然了,即使谷歌和美国政府完全没有关系,但是美国有爱国者法案,美国想要调查谷歌任何数据都一定可以调查。而谷歌则要尽可能使数据更自由更迅速的流通以获得经济价值。两者即便是被动的,也有着完全的默契。

总之我依然是各打五十大板充老好人(好吧其实是两面不讨好),然后今天斗胆愤青了一把希望不要被请喝茶才好。。苏格拉底还是柏拉图说的来着,不关心政治的人都是没有责任感的人嘛。。我也假装有点责任感一回。。在这个大家都日夜期盼着改国籍换种族的年代(怎么貌似WOW换服务器换种族。。)

说了这么多负面的,最后来点建设性的东西吧。(啊话说说了这么多话怎么还不赶紧结尾啊,不知道台下观众都跑光了吗?)(无所谓反正跑光了,那就继续自言自语呗)

中国的崛起,如果可能的话,希望在于教育。不要想着这么快完成封建到民主的转变。这不仅仅是政府的问题。这是每一个人的问题。有人在推特上提到“政府跟国家”的区别。好吧,我们假设换一个政府,执政的人从哪里来?还不是从这个社会里来?这个社会本身是封建的是污浊的,那么怎么可能希望政府就是完美的是圣洁的。。

为什么说社会是封建的。看看这个社会的森严的等级制度,看看从小学开始的一道杠-两道杠-三道杠,一级压一级,老师说的话就是圣旨不能违抗,更不要说到了大学学生会团委里面已经是官僚腐化得跟啥啥县委一样了,从学生会就开始公款吃喝,官僚,瞧不起“不当官”的其他同学。当然是这帮人以后去政府工作,结果可想而知。从小学开始,幼儿园开始,就已经定下的病根!就是鲁迅说的劣根!就是对“下面”的人蛮横而对“上面”的人吹捧,就是欺软怕硬,就是不出头。这就是封建的劣根。封建这种东西,绝不是拆几座庙,炸几处文物可以搞定的。正相反。要去除封建,需要文化的洗礼,需要学习从古至今所有的文化,需要“文艺复兴”,需要追求纯粹的美德。勇气,正义,公平,诚信,宽容,智慧。。。等等等等。。。

很可惜,这可能不符合很多人(至少是很多愤青)追求的想在今生看到中国崛起的梦想。这样的复兴需要很长很长时间。我们从世界大战和内战的荒蛮中走出来,把文明都毁灭了。要重建这种文明需要好几代人的努力。现在政府搞的高度紧张,到了文字狱甚至接近白色恐怖的程度,其实也正是愤青们过于激进急于求成。这样对任何人都没有好处(况且前面也说了换了政府其实还是一样,想想孙中山再纯洁还不是失败了)。反而是通过温和的教育,提高社会整体的素质,才是真正的救国道路。再重复一遍,最后政府里的人是哪里来的?都是从这个社会里来。社会是黑暗冷漠的,强求政府是光明伟大的不可能(也许一两个人还行,但是总体,总体摆在那里不是一人之力可以解决的)。社会是温暖正义的,政府想黑暗也黑暗不了。所以关键的关键在于教育!教育哟!

吐槽完毕。。这么愤青的文章以后不可能再写了吧。。算是绝笔留念。。

时间并不是物质

时间不是物质,这是我今天忽然想明白的一件事情。

时间究竟是什么呢,这个我不清楚。但是时间就好象是造物主(假如有的话)平白无故的赏赐给你的一样,无尽的涌出,无尽的逝去。时间真的存在吗?有很多自然哲学家甚至坚持时间其实并不存在,仅是人的感觉。

时间断然是存在的。否则物体运动的速度,用什么去衡量。

然而时间的存在性,与物质的存在性绝无相同点。它没有能量,它看似无穷无尽(当然他会随着物质的消失而耗尽),他没有物质属性。很多人拘泥于公式和计算,认为时间这个变量跟公式中的其他变量拥有等价的含义。于是观察点可以在空间随意移动的同时,为何不能在时间这个维度自由移动,成为令人纠结的苦闷。

但是时间这个维度,跟空间的维度没有可比性。当你眼瞅着时间分分秒秒过去的时候,你观察到的真的是时间的流逝吗?绝不是。时间根本就无法被“观察到”。你看到的是物质的运动。你看到的是地球在一个经度一个经度的转过去了,你看到的是人的细胞在一个周期一个周期的新陈代谢,你看到的是手表上的秒针在一个格子一个格子的走动。归根结底,时间其实是描述物质运动的一个单位。正因为如此,时间随着物质的产生而产生(假设宇宙爆炸论成立),随着物质的消亡而终结(考虑陷入黑洞的物质,或者蹦极宇宙观眼中的宇宙末日)。时间是一种依附于物质的属性。又比如,根据相对论,相对观察者速度越快的物体也会对观察者而言有相对更慢的时间。因为时间正是用于衡量物体运动速度。

再举个例子,就更能把问题说清楚了。想象一下,假如现在,全体物质忽然停止运动,会怎么样。地球不再自转公转,空气不再流动,海浪不再激荡,细胞不再新陈代谢生老病死。人停止呼吸,停止心跳,停止思考。一切运动全部停止。从空中坠落的砖块就在半空中凝固了,不再坠落。假如这样,你一定会认为,时间停止了。假如物质停止运动,对于观察者而言,跟时间停止是完全没有区别的。由此可见,时间其实就是衡量物质运动而已。

正是这个原因,使得时间旅行绝不可能。我向来反对时间旅行,然而苦于找不到证据。既然时间并非单独存在的物质,而是物质运动的描述,这就非常好解释了。首先想象我们居住的宇宙,他不过是一个庞大复杂的系统,里面有很多很多物质在自顾自的运转着。时间就是度量这个系统运转的一个属性。所谓时间旅行,是想试图回到这个系统曾经的某个状态去。首先我们考虑,让这个系统相对于观察者来说运转的更慢一点。这很容易。你只要有相对于系统更快的速度就可以了。然而你要让系统时间停止下来呢?这就已经做不到了。无论你有多么快的速度,系统的运动这一点是毋庸置疑的。在观察者的眼中,系统的速度可以无穷慢无穷慢,但归根结底,系统运动这个事实,并不能因为你相对于系统运动而改变。因为你相对于系统运动仅仅是把能量加到自己(观察者)身上,而对系统没有多大影响(由于在同一个视界内因此不可能完全没有影响)。假如想要系统时间停止,其实就是想要让系统里的全部运动停止。就是说是要让全部的星体停止运转,让所有的太阳里的核反应停止,让所有的量子涨落停止,让所有的波动停止,让所有的生命停止新陈代谢,让所有的惯性消除。想想看这需要多么巨大的能量!你需要跟这个宇宙完全相等的能量,才能做到这一点。问题是你就恰恰处在这个宇宙内部,你哪里来跟他相等的能量。假如你想要让宇宙返回去,你需要的是比这个能量还大的能量(这时候只需要多那么一点点就好了)。这还仅仅是启动你的时间机器。假如你想让你的的时间机器到达某个时刻,停下来,然后让宇宙再次按照原来的轨迹运动,你还需要重复一次上面的过程!你需要两倍于宇宙的能量还多一点点才足以实现一次科幻小说里面的时间旅行!!还要让“上帝不掷骰子”,才能保证宇宙逆回重新运转的轨迹,跟你上次经历的宇宙相同。

当你明白时间其实就是物质的运动的时候,珍惜时间就变得更容易了,当然其实他也就是一句老话而已,就是“生命在于运动”。当然这个运动指的不是简单的锻炼身体,而是各式各样的运动,思考,工作,学习,娱乐。一切的一切。你运动的越快,整个宇宙的运动相对于你来说越慢,时间就过得越慢了。

换句话说就是,勤奋程度是生命的度量。

我是一个。。二次元的。。好人。。

本来是睡前例行公事刷下reader。。。

结果看到这篇牛文:[转载]一辈子的好人
他已经是转载了,我就不再转载了。。总之看完之后泪牛满面。。看了还想看。。

然后睡不着觉了。。。(也可能是咖啡喝多了的关系)

至少说明跟俺一起享受煎熬的同胞们千千万,都让人总结归纳出典型来了。。

我经常会害怕的一件事情就是在上海的公交车上刷卡,然后盒子里传出甜美的机器女声:“好人卡”。。。(误

不过话说那些一直收到好人卡的家伙还是很令人羡慕的。。至少还认识那么多 发卡机。。咱手上的几张好人卡都是编译器啦虚拟机啊什么的发的来着。。不过编译器是小萝莉,不能欺负人家。。啥都得你慢慢教她,还动不动撒娇发神经的。。你学会她的语言,就能让她明白你的意思;你做错了啥也都会直说,不会让你猜她的心思(好吧,其实也经常是需要猜的。。)。。不过即使是这样,不管你怎么追求她,她还是会拒绝你。再说了,就算不拒绝,也处不长嘛。。x86, x64, ARMV4I, ARMV6; MS cl, gcc, g++; Windows, Linux, Unix[自行排列组合],那么多平台那么多编译器呢。。 好不容易喜欢上其中一个,人家改版升级了。。况且全世界的geek们都在追求她们,她们哪瞧得上我啊。。

好吧。。编译器是太幼齿了不适合。。操作系统呢。。操作系统是孕妇,又大又慢,麻烦事特多,还特别怕病毒,喂她吃东西还得先申请权限。必须好好照顾她们。不过人家都怀胎十月了您还幻想啥。。网络呢,网络是老太太,耳朵有点背,嗓子也有点哑,反应也特别慢,记性也有点不太好。人家照顾你,感激还来不及呢,就别想入非非了。。CPU倒是职业女性,又快又麻利,稍微慢了一丁点就拼命自责。问题是她们都穿素黑的工作装,平时一句闲话不讲,要说就说正经事,冷冰冰的,她们都缺觉,同时干好几件事情,一有空就拼命补觉,没时间跟你闲扯。应用程序们都是幼稚班的小孩子,跟她们说啥都听不懂,就知道嘻嘻哈哈到处乱跑,惹她们的妈妈(操作系统)生气,给她们的奶奶(网络)添乱。

果然二次元世界不是年纪太轻就是年纪太老,没有适合咱的吧。。怪不得程序员都打光棍呢。。。

算了。。半夜三惊的发春了。。太傻叉了。。不过写都写了。。就放在这里吧。。

论牛人

记后记:本文纯属个人心灵探索…观点纯属个人愚见,没有妄加评论别人或者妄图要求别人按照自己想法去做的任何意图…

最近跟几个同学聊天。。都碰上了牛人这个话题。。

先是在buzz上不小心跟不认识的学弟言语冲突。。之后又跟人聊天时对牛人产生了鄙视情绪。。

虚荣心。。虚荣心在做怪。。

膜拜牛人是一种病。当然,有些牛人是不得不拜的。他们达到了神的境界。但是我现在已经堕落到见牛就拜的程度了…承认一个人很牛,表示自己对自己达到他的实力缺乏信心,如果仅是没有胆量或者方向不同(比如程序员崇拜一个诗人)还情有可原,否则其实一种惰性。是的,他很强,我比不上他,我认输。表面上看着很谦虚很大度。其实仅仅是懒惰而逃避罢了。

但是反过来讲,否认牛人,装出一副鄙视全世界的样子,一样是病。“切,那算什么”。其实自己根本做不到。这纯粹就是装B。。。

应该对牛人抱有什么样的态度呢。。应该是对对手的尊敬。要敢于挑战,也要勇于认输。但是认输不是服输。“我早晚要超越你”。

牛人有很多种类。有些牛人确实是牛。他们有伟大的想法,他们创造了奇迹,他们构造了整个世界赖以生存的基础,他们的贡献使每个人受益。对这些牛人,我们深深的膜拜。

但并非所有的牛人都是这样。很多牛人并非是看起来那么牛。之所以如此,是因为人们看到了他的成绩和辉煌,却没有看到他们达成成绩的过程。过程是艰辛的。假如你看到他达到辉煌的困苦历程,你对他的态度不会是崇拜,而会是尊敬。就像魔术,你不知道原理的时候,以为是超自然力,或者魔法,或者什么不可思议的奇迹创造了这一切。你别无选择,对魔术师产生了深深的崇拜,以为他们无所不能。但当你看到他们练习魔术的艰苦,设计魔术的苦思冥想,以及了解了魔术实现的原理,你或许不再崇拜他。他从神坛上走下,他是人。但你仍然保有对他的尊敬,因为他的智慧和勤奋。

然而魔术师不会告诉你魔术的背后。当然这没有错。因为他们依靠这种信息不平等造就的魔力吸引观众。这是他们的职业。

某些种类的牛人也是一样。他们强大,可他们的背后有艰辛,有运气,还有别人的帮助。假如你知道他是怎么做的,并且你付出跟他相同的努力和代价,或许(这要看运气)也能达到他的程度。等你知道这一切,你不再把他当作膜拜的对象,而是敬佩他的付出和代价。

甚至还有一类牛人,他们的牛完全是装出来的。他们采取别人听不懂的措辞,他们故作高深。他们深居简出,不让别人看到他们。于是别人以为他们高深莫测,就认为他们是牛人。(在此强调,并非所有深居简出的牛人都是装牛。。而是说某些种类的装牛会采取此策略。。)对于这类牛,尊重他们装牛的选择,既不鸡肚他们不费什么力就得到牛人的光环,也不非要让他们下不了台,以此为乐,那就对了。因为鸡肚是源于自己的惰性(“如果我像他那样省力讨好该多好”),而扯破面皮则是自己的虚荣心在做怪了(“凭什么我不如他”)。

之前说了句,觉得真正的牛人应该是傻乎乎的那种类型。这是电影看多了吧。。不过我的话,确实是欣赏那些不摆架子,不故弄玄虚的牛人。他们会在自己力所能及的范围内帮你(他们强大的力所能及啊。。),甚至热心的授之以渔,但超出他们的范围的时候他们简单的道歉,并且告诉你解决问题的途径(某个领域专家,图书馆或网络,继续练习和吸取经验,或者只是简单的不可能)。而不是在力所能及的时候卖弄炫耀,在力所不及的时候故弄玄虚。

至于我自己。我承认自己虚荣心重得搬不动。。被人哄一句牛人就轻飘飘了。。说不定他还是冷嘲热讽我都没听出来。。举世誉之而不加劝,举世毁之而不加沮。。这确实很难做到啊。。被人哄也没啥可高兴的,被人讽也没啥可不高兴的。总归自说自话自做自事就对了。

有的时候在想,为什么我这么争强好胜,为什么对“牛人”这个话题这么敏感。我努力学习,努力工作,是不是只是为了让大家觉得我很牛,尊敬我,甚至崇拜我呢。我是不是故意把自己光彩的一面给人看,而藏起自己的窘状和搓态呢。这就是在装逼啊。。。包括我在写这篇博客,都是在掩饰自己的虚荣心啊。不是吗。这篇博,不就是因为自己对“牛人”这个词敏感了,虚荣了,鄙视了,才写出来的吗。。

不能这个样子。。。

学习,工作。是为了什么呢?

付出。

绝对是付出。

这个问题想了好久了。人要吃饭。人要穿衣。人要体面,人要虚荣。但仅仅是为了要这些东西而活着吗。那人跟怪兽有什么区别。[人形怪兽出没注意]

吃饭穿衣是为了活着。活着是为了付出。体面虚荣,游戏音乐,是为了高品质的活着。高品质的活着是为了高品质的付出。归根结底,人是为了付出而活着的。

一定是这样。[我无法证明这一点诶。。摊手]

真正的牛人不是别人怎么看待他,而是他付出的数量和品质。

我不是牛人[因为还没付出过啥],也不想[不应该想]当牛人[是指受人追捧的那类气场型牛人]。但是我要尽力付出更多。为了这个目的,要开开心心的活着。

SC AI 估值函数

SC AI还是没有进展。

最近在想办法找出合适的估值函数。生命值,兵数,总输出。这些固然没有问题了。然而最重要的位置信息,却得不出合适的估值函数。如果不能建立好的模型的话,一切算法都是空谈。。。

今天忽然想到的,其实是跟以前的想法一致,不过换了一种方式在思考问题。

micro radar for the SC AI
图中环状圈表示中心的蓝色单位距离每个红色(敌军)单位的距离。在这个距离内,每增加一个敌对单位减1分,每增加一个友方单位加1分

假如能够测量出每个单位攻击一轮所需要的时间,该单位能够移动多少距离,则更好。以此可以计算出优势或者劣势能够保持多少轮,从而得出优势或者劣势多少单位的HP。

另外忽然发现开全图的比赛情况,你甚至可以知道对手每个单位的目标是什么。这样甚至就无需猜测,并且被设置成敌军目标的单位,其实反而掌握了主动权——他往哪里移动,敌人就会追到哪里。并且由于大家的移动速度都是相等的,被追击的单位有权利选择在什么位置开战——他停在哪里,就在哪里开战。因此问题就可以简化成,(对某一个单兵而言)在什么位置开战,对我方更有利(比如获得更大的优势或者使敌人获得更大的劣势)。

还有最近在考虑的就是一些图论的模型是否可以放到这个里面来。比如最小生成树。最小生成树在这个AI里面看似有某种意义。至少他指示了所有兵力集结到同一个地点的最短方案。他也可以表示友军之间互相援助的行动路线。但是其他的意义呢。现在还看不清楚。

另一个图论的模型是steiner tree,  它表示了将一坨兵拆成两个组的方法,使得拆开后的两个组的最小生成树最小。或许这个模型可以用于暴露敌人的弱点。当然steiner tree是NPC问题,所以把它拿进来可能对比赛也没什么帮助。不过话又说回来比赛过程中出现的单位数量也不会特别多,尤其是开始的时候。所以即使使用最蠢的算法,或者使用较平庸的近似算法,对AI有帮助也是有可能的。

但是究竟怎样帮助。。暂时还没想清楚。。

阿拉伯的兴衰

曾经阿拉伯是世界上最文明的民族。

曾经他们攻城掠地却不摧毁当地文明和信仰,曾经他们胜而为王的同时又向被征服者学习科技和文化。
他们曾经成为地跨欧亚非版图辽阔的帝国,他们曾经跨过直布罗陀北上西班牙给荒蛮黑暗的西欧带去数百年文明的光辉。
曾经他们是世界的桥梁,文明的枢纽。

是什么让他们振兴,
包容,学习,交流
让他们从最愚昧荒蛮的部落转眼登上世界之巅

是什么让他们衰落,
腐朽的统治, 极端的信仰,愚昧的偏见
让他们从辉煌的王座跌入永恒的战争和贫穷

正如房龙所说,愚昧产生恐惧,恐惧产生偏见,偏见杀戮异己。于是沟通阻断,统治集权,从而造成了新一轮的愚昧和贫穷。

自古以来,沟通和包容造就辉煌,封闭和偏见毁灭国家。想当初汉朝唐朝何等开放,中国曾经是世界中心,各国文明在此交融。乃至明清闭关锁国,终毁灭了自己绚丽的文明。再看欧洲大陆荒蛮了近千年,终于宗教改革文艺复兴,文明得以前进。更想念春秋诸子百家争鸣,战国儒生仅凭舌辩就可佩六国相印,驰骋中原。

可惜那个时代已经一去不复返了。还好我们还不至于像中东。。。

其实这个题材写小说更合适的。。。筑造世界的桥梁。。。

这两天正跟同学聊到阿拉伯这个民族,曾经坐在世界之巅。。可惜如今却是如此残破。。
正又看到一篇blog 第一个向西欧传播世俗观念和科学的其实是穆斯林 很有感触。。。

姓名本地化

这几天不知为何想起来好久以前他们给Just Okay兄起了个充满异域风情的中文名字:杰斯特·奥坎
感觉这个名字是以其浓厚的西班牙/墨西哥风味而让人浮想联翩(误)
于是这个名字是否能够来点其他地域的风味捏

法国味:杰斯特朗·欧坎

英国味:杰森·O·金

美国味:杰森·K

德国味:杰森堡·奥克勒

俄国味:杰斯洛维奇·奥瑞姆

日本味:欧瑞吉森

中国味:欧吉仁

韩国味:金吉仁

呼。。思路枯竭了。。再想的话顶多能想出来火星味的“哦不对不对不对就是K”。。。

另:杰斯特奥坎兄不会生气吧。。。囧|||

与天地斗是科学,与人斗就是经济与政治

前几天回趟上海,路上遇到了不少过去完全不会关心的事情。。

仔细想想,其实都是人与人之间的关系。。往大了说就是经济与政治吧。。也可以说经济与政治其实无处不在,就在生活之中。。

下面插播一条广告

养鱼池:不准摸鱼,违者暴打罚款

这是在火车上路过大概山东还是河北的时候看到围墙上歪歪扭扭写着的几个大字。。很白话。。很暴打。。

一件事就是去拍毕业证件照,一大堆人都在排队,黑压压的能有上百吧,心说这队要排个一个小时排不完。。我也只好莫名其妙的进去排队。算是幸运吧,刚排没多久,就有一个人从前面绕过来,手里拿着一个序号,说是要先交钱排号码,然后回来排队。还好没傻傻的继续排队,跑到前面去交钱,一个大大咧咧的男生在收钱,收到的钱摊放在桌上一堆,找零就从里面扒拉扒拉翻出几张来找。。拿到序号,心想,那还排什么队嘛,等着叫号不就好了。。没想到等了没几个人,就排到我的号码了。。才知道,原来那么多人在排队都像我一开始那样,完全不知道为什么要排队,只是这么排着,结果我很无耻的插队插到了上百人的前面。。。我不是故意的啊。。
问题出在哪里呢。。后面的人看到排队,自然就跟上去排队了。。前面呢,那个收钱的桌子前面那几个排队的人居然站在那里聊天,完全不知道要去缴费。。而那个收款的男生只顾照顾那几个“插队”上来交钱的人 ,对后面黑压压一排排队的人完全不理会。。
这很明显是一个经济问题吧。。当然考量经济的指标不是金钱而是时间。从个体上来看,获取更多的消息,就能大大提高收益(比如我。。|||),而消息不灵通的后排群众只能傻等。但是从群体上看呢?如何照顾更多的人,好让全局获得最大收益?这又变成了政治问题。。当然这个问题在这里是很简单的。。只需要那个收费的男生大声招呼几句,“上来交钱”,之类的,就没问题了。新闻。舆论。宣传。所谓喉舌。。。当然个体宣传也可以呀,可惜当时我没有很负责任的招呼几句。。而是在“插队了”的巨大罪恶心理压力下灰溜溜的逃跑了。。不过跟在我后面的几个也能提早拍照的人貌似很是感激我的样子。。囧

另一件事就是回到北京以后,7:30从南站出来搭地铁。4号线挤得满满的,根本没法上车,绝不是“金枪鱼罐头”或者“人肉相册”可以形容。。而从南站出来要上车的群众跟车里面的群众数量又是同一个数量级。。好吧,逆回几站试试看,上次5+告诉我不能逆回到终点站,因为终点站不允许下车后直接上车,还得重新出站进站。。于是逆回到倒数第二站。勉强能上车,已经非常挤了。然而正是等车的当口,居然看到一列空车不理会站台从面前飘过。。肯定是去南站救火的吧!天哪,自作聪明逆回几站,结果错过了最佳选择。。。只能说是信息掌握不够吧。假如你知道交通局有机动列车专门用于救火,就会在南站安心等了。不过话又说回来,即使是逆来顺受的等在那里,结果也正是一样的。这就是传说中的:RP!!

哦哦,还有也是关于排队的事情,从南站出火车站进地铁,有3排地铁入口。然后正面对火车站出口的那一排,居然一大早不开,结果一大坨人挤在这一排地铁入口处等着,很多莫名其妙的人也只好陪着排队。要不是我带着眼镜看到遥远的对面也有一排貌似地铁入口的东西,我也会在那里傻等吧。。从个人角度上说,要采集更多信息,从群体角度上说,不开通正对火车站出口的这一排地铁入口,是完全没有道理的。南站设计的很完美,朝向三个不同方向,地铁入口有二三十个吧,可是那天早晨只有3个开通了,而且都在同一个方向。无语。

又想起来一件事情,就是火车上超级难吃又贵的要死的盒饭。我来上海时候火车差点误了,稀里哗啦赶到车站,忘记带一路上吃的用的。从早晨9点起床,11点赶上火车,一直挨到下午,挨到晚上,实在撑不住,要吃东西。饿的时候是没有理智的,总觉得方便面哪能吃饱,就去买传说中的铁路盒饭。。刚打开的时候还是很有食欲的,关键是饿得两眼放光。问题是吃了第一口就。。堵到了。。从来没吃过那么难吃的东西。我就不形容了。。免得诸位看官犯呕。为啥铁路盒饭要做这么难吃呢。。还是号称顶尖的和谐号。。已经收了高价了,随便找个大厨做做从经济利益上来说绝不会亏本。所以做这么难吃绝不是为了赚钱。能想到的理由只有一个,就是火车没法储藏足量的盒饭。如果很好吃,就算贵,也会很多人来买(毕竟方便),结果就是导致餐车拥堵不堪(其实本来餐车就被站票党们霸占了。。),而且盒饭也会严重供不应求。反而导致很多一开始就打算吃火车套餐的人因为没带食品而饿着。火车盒饭做得难吃,准备充分的人就不会去买了。忘记带东西的人也会被方便面分流掉一部分,这样剩下的这很小的一部分人,餐车准备的套餐数量正好可以满足。当然这很可能不是火车盒饭做的难吃的本来的原因(应该仅仅是官僚造成的吧。。),不过至少是这种情况能够持续的一个原因(当然主要原因还是垄断啦。。)

总之经济和政治问题是以前从来没有关心过的。其实就是把研究对象从自然转变到人而已。其实还是很有意思的。比如M牛推荐过的少数决,就是标准的政治游戏。还有同是他推荐的不完全信息问题,则是经济游戏的典范。这些问题都涉及到信息不完全,而且每个人的个体的行为的不完美不自解释不可预测,没法用自然科学的方法去研究(好吧或许可以用信息论或者概率统计。。不过最近的经济危机已经让华尔街的数学精英们认错了。。),不过想一想,其实还是很有趣的东西。并且越是这些没法定量分析的东西,古老的中国哲学理念越是容易起作用。

好吧,说了这么多都是findings…我好像又出现这种没有point的情况了。。conclusions各位自行总结吧。。囧||

可口可乐之冻结

公司里一直有人喜欢把可口可乐扔进冰箱的冷冻室让他结冰呢。。结果经常性造成可乐罐子爆炸。。弄得阿姨极为烦恼。。

为啥冻结的可乐罐子会爆炸呢。。没做过实验。。不过水结冰了要膨胀是常识啦。。但仅是如此吗?

不对,可乐里面溶解着过量的二氧化碳(用加压法加进去的,所以说是过量),水的冰点可比二氧化碳的冰点高多了(要不干冰怎么拿来灭火呢),水结冰的时候二氧化碳可不能闲着。他们肯定是不可能再溶解在冰块里了|||。这时候二氧化碳只好从0度水里面逃逸出来,好方便他们结冰。这个时候处在冰水混合物状态,温度不可能再降低了(好吧,再降低也不会低到干冰的冰点去的。。冰箱那点温度。。要不然冷藏室里面的二氧化碳全冻结了,应该在冷藏室“屋顶”上看到树挂搬一条条下垂的干冰锥。。),所以二氧化碳会持续逃逸,这个体积膨胀的速度可是比水结冰的体积膨胀快多了(后者只能增加10%,前者。。估计上百倍几十倍吧。。)。。由此可见,假如设计一个实验观测可乐罐子被冷冻到爆的情景,一定是极其绚丽。

好吧。。套用sheldon的一句话,我没什么point,我只是觉得这个主意拿来做Tee不错orz|||

好吧我承认我没好好学过化学,也没做过实验,以上纯属YY,很可能是错的。。恳请达人赐教。。orz