任侠

这几天沸沸扬扬地都在讨论成都女司机被暴打的故事。猛禽也罕见地发表了两篇文章来加以评述:《算女司机命大》《打得还不够好》。我基本是全部赞同他的观点的。

我先表明我的态度:

  • 这件事和性别无关;
  • 男司机打得好,能认错并承担责任就更是有担当;
  • 法律执行所带来的正义不够也不够早;

迟来的正义还是正义吗?我不认为是。当这样一位司机能嚣张地累积26个未处理违章,我相信这更能让我们悲哀地体会到中国法制的不存在。

没有出事算运气,但更多的是大量被违章的行人、司机的忍让。

我们为什么要忍让?

可能是打不过人家。可能是有别的紧急的事去处理。更可能的是随之而来的“麻烦”。

一个交通事故,对方全责。可是作为无责方的你,要先垫钱修车,然后约出对方把发票提交,收钱。

一个没有做错事情的人,为什么要额外地付出这么多的精力?

难道不应该是我去修车,发票和费用清单直接寄给对方的保险公司,然后顺利理赔吗?

中国当今的种种制度,不但没有鼓励做对的人,反而在麻烦做对的人,将做对的人拉入做错的人同样的境地。这是不正义

普通老百姓,没有什么背景,没有大量的金钱,没有大把的闲暇时间去开房,往往都抱着息事宁人的态度。不然又如何呢?

就拿这件事来说,按照现行法律,最佳的做法是不刹车撞死、撞伤那丫的(不考虑后座及其它因素)。那么按照交规,被撞的还是全责。然后呢?是不是还有民事索赔?是不是还有大量的官司要进行?

然后,按照一般的出发点,根据判断和对方的行为的直接后果,对自己没有太大的损害,在这样的情况下,自己点个刹车就好了。

这位男司机为什么怒火中烧?因为护犊情深。自己的紧急反应让孩子受了惊吓或者伤害。这个出发点完全正当。

公民没有选择出生在哪个国家的权利,也没有选择是否度让自己的权利给政府机构的权利。那么一个自然的反应就是要政府来扮演“最高审判者”的角色。

在一个“最高审判者”长期缺席的时代,公民的怨恨是会累积的。现在我们在本例中看到的怨恨只是针对个人,但是,这样的累积是会针对政府的!

我一直主张“从小事做起”。整治腐败要不要?要。但是毕竟我们和那个腐圈距离太远。真正引起怨念的,是那些日常的事情,衣食住行而已。换句话说,整治腐败会让我们高兴;但是不惩罚那些日常的违规,会让我们怨念。

我们要的是即时的公正。我的要求也许太高,但是这是任何政府行政的目标。26次未处理违章如果不是这次被人肉出来,执法机构还要瞎到何时?

我的观点是,做好事不一定要有报酬,但是做了错事一定要有惩罚,及时的惩罚。唯有如此,我们才能去讨论什么和谐社会,道德风尚。人是一种很贱的东西,没有鞭策是不会有进步的。等到了一定阶段,那么所谓的“社会风气”才能建立,只有当做错一件事情带来的惩罚大于“收获”的时候,人们才会正当起来。

当然,空谈道德无益——因为普通公民都有基本的道德素质和“传统美德”。政府也更不应该空谈道德,而是应该当一个黑脸:谁违背道德和法律就要受到无情而及时的惩罚。只要遵照这个思路,我们再看到一个守法之邦、礼仪之邦就不是空想。

从交通管理做起是一个很好的出发点。

男司机有点古代任侠的味道。我们喜欢看武侠小说,也是因为这个原因:我们都有上帝视角,又看到正义得到及时的伸张。在现实中,我们不会有上帝视角,但是我们想看到正义得到及时的伸张的心是没有变的。

最后,我想说的是,法律是至高无上的,但在此之上,还有正义。

PHP 7已经来临(一)


PHP界最近最热门的消息就是:PHP 7已经来临!

Sitepoint的Bruno适时地写了一篇文章,列出了一些资源和回顾。

我用百度搜索了一下国内的相关内容,发现相关的讨论还是非常非常少。所以觉得有必要结合我的实践,写点东西,以求推动国内的PHP7的落地。

安装

PHP创始人Rasmus Lerdorf弄了一个PHP 7的Vagrant盒子,供大家下载尝鲜使用PHP 7。其Github的地址:https://github.com/rlerdorf/php7dev。安装过程应该说很简单的,大家可以参照仓库里的指引。

有一个需要提示的地方。我相信很多人和我一样,是用Vagrant+VirtualBox的方式来安装虚拟机的。如果vagrant up这个PHP 7的虚拟机时出现问题,可以通过在VirtualBox中直接启动这个盒子的手段帮助解决。VB中的启动会给出更多、更详细的出错信息。我也是通过这个方法解决了这个盒子无法启动的问题:需要禁用这个虚拟机的USB 2.0功能。

安装完成并启动后,可以通过Putty登录到虚拟机中,进行一次apt-get的更新,然后用php -v检验:

6-1

或者用浏览器访问这个虚拟机,会得到一个标准的PHP信息页面:

6-2

在这篇名为What to Expect的文章中,作者Davey Shafik列出了一些PHP7的重要特点。

首先提到的是抽象语法树(Abstract Syntax Tree,简称AST),它将取代目前直接从解析器里产生操作代码的做法。

将解析器和编译器分离将允许我们取消众多黑客手段,而且允许实现仅靠一次过编译(single-pass compilation)无法实现的语法特性。

第一,解析器和编译器将更易于维护。

第二,将语法确定与技术问题分开。在目前的处理中,有些语法元素非常难以实现——如果不是不可能的话。比如对yield表达式的限制:

$result = yield fn(); //不合法
$result = (yield fn()); //合法

另外,当前的编译器结构不允许我们实现某些类型的语法。比如:

  • 数组解构:[$a, $b, $c]=$array,而不需要使用一个特定的list()语法。
  • 结果表达式在前的列表推导和生成子表达式,例如Python中的[x * x for x in list]。目前的PHP中,只支持反过来的语法:foreach ($list as $x) yield $x*$x
  • C#类型的表达式树和LINQ。

AST对运行时的性能或者内存占用只有很少的影响。但是确实影响了编译过程中的性能和内存使用。但需要强调的是,这样的差别只在不使用opcode cache的时候才存在。

PHP的官方Wiki中给出了一个对照表,针对不同大小的PHP文件各编译1000次的时间差异:

文件 php-ng php-ast 差异
小(100行) 0.180s 0.160s -12.5%
中(700行) 1.492s 1.268s -17.7%
大(2800行) 6.703s 5.736s -16.9%

和峰值内存使用:

文件 php-ng php-ast 差异
小(100行) 378K 414K +9.5%
中(700行) 507K 643K +26.8%
大(2800行) 1084K 1857K +71.3%

还有一个编译PhpParser项目的实例。总体而言,AST要快10%-15%,但需要更多的内存。多用多少内存取决于文件大小。小文件只要多用10%,而大文件需要多用70%以上。在比较实际的情形中,内存差异在5%左右。

最后谈到了语法和行为的改变。

yield不用括号了。以下语法都是对的:
$result = yield;
$result = yield $v;
$result = yield $k => $v;
括号不影响行为:
一个问题是($foo)['bar']='baz'$foo['bar']='baz'表现出的行为不同。与之类似的还有byRef(func())byRef((func()))现在都会抛出一个严格标准下的需注意情况(如果byRef引用其参数,而func并不返回引用变量)。
list()的改变
目前list()赋值是从右到左。在AST下,将是从左到右。
list($array[], $array[], $array[]) = [1, 2, 3];
var_dump($array);
 
// OLD: $array = [3, 2, 1]
// NEW: $array = [1, 2, 3]
另一个赋值顺序有关系的例子是,列表赋值的左边和右边是不是用一个变量:
$a = [1, 2];
list($a, $b) = $a;
 
// OLD: $a = 1, $b = 2
// NEW: $a = 1, $b = null + "Undefined index 1"
 
$b = [1, 2];
list($a, $b) = $b;
// OLD: $a = null + "Undefined index 0", $b = 2
// NEW: $a = 1, $b = 2
现在的list()将只存取一个偏移量一次:
list(list($a, $b)) = $array;
 
// OLD:
$b = $array[0][1];
$a = $array[0][0];
 
// NEW:
$_tmp = $array[0];
$a = $_tmp[0];
$b = $_tmp[1];

空的list()现在不被允许了。

按引用赋值的自动赋值顺序
AST中将调整为从左到右
$obj = new stdClass;
$obj->a = &$obj->b;
$obj->b = 1;
var_dump($obj);
 
// OLD:
object(stdClass)#1 (2) {
  ["b"]=>
  &int(1)
  ["a"]=>
  &int(1)
}
 
// NEW:
object(stdClass)#1 (2) {
  ["a"]=>
  &int(1)
  ["b"]=>
  &int(1)
}
允许直接调用__clone
现在可以进行类似$obj->__clone()这样的调用。

(未完待续)

本文收录于[go4pro.org]

万万没想到

你要我说实话吗?

实话就是,对《万万没想到——用理工科思维理解世界》这本书会写成现在我看到的这样,我也是万万没想到。

什么是理工科思维

首先,这个问题没有做一个开篇的说明。

当然,这本书是作者历年小文的汇聚,可能作者也从没有想过为“什么是理工科思维”在其发布平台上做个定义。

这个不奇怪。文章写在发布平台,来看的能看下去自然对“什么是理工科思维”有基本的概念,看不下去的只要“轻轻点击一个后退按钮”就能回到另外一个作者的页面。

可是,买了实体书的我做不到啊。我倒不是期望作者所用的理工科思维一定和我一致,哪怕是有差异,我也是能“他山之石可以攻玉”的。

可是,你不能让我猜测你的思维是什么。

从文章汇编到结集出书,恐怕是每个互联网时代写手的梦想。但是不是把文章整理一遍,分门别类地归纳到“反常识思维”、“成功学的解药”和“霍金的答案”就可以了。作者和编者应该通读所有文章,对其中牵涉到的作者的立场、重要概念的澄清做一个提纲挈领式的总结,以方便读者对号入座——分别抱着“知音”、“存疑”、“nani”的心态。

其次,我必须纠结于这个理工科思维是确定论的还是非确定论的。

这里似乎又有一个怪圈:当我用确定论的语气说出“凡是都是不确定”的时候,你该如何理解我这句话?

我们都知道谢顿模型不过是阿西莫夫的理想,即便在谢顿模型中,也没有排除局部时间、局部地点上的涨落。所以一切的一切其实是不确定的。

于是,从理论的角度出发,我们对这个世界的理解已经有了:这个世界是不确定的。在一个不确定的世界中个,如何找出规律(也就是确定性)这真是一个大问题。

接下来的一个问题就是,我们看到“一万个小时”、“读第二遍的时候要做笔记”等等是理还是工?我个人比较偏向“工”。因为这些都是方法论。如果我们相信“这个世界是不确定的”,那么这些方法也不一定对我适用。

我们看这本书到底是为什么

或者说,想得到什么?一本书的尴尬在于说理不够深刻,实际的例子又不能引起我的兴趣(第三部分“霍金的答案”中大部分例子是例外)。

拿我来说,我对“要成为一个顶级小提琴家需要进最好的学校,还要练习10000小时”没有兴趣——我小时候家里很穷,乐器从来没有碰过。玩的最多的是父亲的电烙铁和万用表。但是我对“以中国的经济发展模式和当今的世界环境,中国股市在多少点才是合理的?”这样的“看世界”的问题非常感兴趣;同样我对“在如今中国的网络环境下,怎样创业才不会被互联网巨鳄侵吞我的利益”非常感兴趣。

当然,书的最后提到:

科学家也是这样,一般情况下不想玩大的。科学家玩模型最大的目的其实是想解决小问题,是想通过模型来发现和证实一些小机制。

对创新的看法我不赞成

作者的立论是先进国家可以模仿落后国家,落后国家是创新的发源地,并举了美洲杯的例子。在我看来,整个书中再也找不到这么失败的举例了。这个例子只是在说“谋”,而不是创新。我看到作者将这个例子说成是“创新”我整个人都不好了。

不过我同意一点,“我们要说的是那种改变游戏规则,改变商业模式,‘根本性’的创新“。这和我之前看过的《The Innovators》是一致的。

对于创新,还是用我那时对《The Innovators》的书评里的话:

我个人对未来的创新充满希望。人类的创造力是无限的,这也是我们区别于电脑的根本之处。我们不能将创造力用在扼杀创造力之上。

互联网是创新的土壤吗?

我们已经太习惯于快速的消费网络上每时每刻在产生着的内容。在这点上,我很赞赏作者提出的“toss-skim-read”的方法。我也习惯用Evernote来收藏网页。

网络的危险在于,以公平方式呈现的内容好坏,对一个人的思想有着巨大的影响力。一个帖子,有5000浏览不算什么,有了5000个赞就非同小可。这是一种势力,一种逼迫人不去独立思考而接受快餐思想的势力。

自媒体也许在某种程度上解决这个问题,但是一旦面临繁琐的审查和无所而不在的“脖子以下不能描述的部位”,我对这样的自媒体平台能在多大的程度上支撑创新很没有信心。“但几宁事,个必踢米”而已。


纵观本书,确实提出了一些新的想法,这是很不容易的。但就我个人来看,仅以此点就能荣膺十大图书,恐怕也是目前中国出版界无奈现状的一种折射。

Omnia Vincit Amor

电子工业出版社的这本《爱人、情人和怪人》讨论的是人类生活中各种各样的爱,特别地,是男女之间的爱情(以及由此衍生的各类话题),最后还谈到了同性恋。

作者吴宝沛是另一本书《猿猴的把戏》中译者。

书中罗列了很多观点,但恐怕部分是限于篇幅,部分是限于对其的掌握,众多观点都没有深入展开。所以,这本书更像是一个博物馆的引导员,匆匆带你从中国馆走入埃及馆,再赶往印度馆……每处的讲解只能限于“此乃中国商周作品,做工精美”的程度。万花丛中过,总得片叶沾身,于是作者的目的也就达到了:在最短的篇幅内(不含参考文献和名词注释的正文为329页)讲述最多的理论,作者不加任何评论,只是描述。读者如何去判断去甄别,将交给读者去完成,至少我们知道了有哪些理论,又大概讲了什么。这有点像读英国文学的研究生,教授只是开给ta一个书单,上面林林总总有几十号作家的名字,你自己去看吧。

研究人,是最难的。常言说“人心隔肚皮”,与人交往只能通过其当面的言谈举止和事后所做所为的影响来加以判断。在这个大前提下,我们研究的还是人类生活中最隐秘的性以及性相关的话题,更是难上加难;而且研究的课题中还要包括常规看去异常的性行为(如乱伦、同性恋),更是难。

从动物界的行为来推测人类行为往往是不可靠的——哪怕这个动物与人有多么的接近。这是我对书中大量引用的动物界例子表示有兴趣但是不会将其引申到人类社会对等(其实说“对等”就有比较的意思)行为加以类比、延伸的原因。

另一个问题,书中也极少提到,就是性行为本身给双方带来的身体上和精神上的愉悦和快乐。从这点上说,也可以部分解释男性为什么更容易去寻花问柳。也可以部分解释同性恋的原因:对自己身体的理解,当然是同性因为有着同样的构造能100%地知道和了解。

社会行为是个很诡异的学问。从心理学这门社会科学出发回头去解释社会行为,有点“用三角函数来证明勾股定理”的感觉。如果再回头去解释自然、生理行为,更是在用三角函数证明结合律一般。

我更愿意从最基本的社会学原理出发,从更基本的自然科学原理出发,来解释社会学原理——当然,如果你掌握了谢顿模型就另当别论——可谢顿模型也是数学模型。

这不是说我们不应该研究社会学,我更有野心看到我们的社会学家能从若干社会学公理出发,经过严格的推理和逻辑,来发展出一个社会学体系。它应该能解释这个社会的众多现象。

一本书,如果能讲述出新的理论,是上上上之作;次之,罗列各类理论,进行横向纵向比对,加以判断,可算上上之作;再次,只是罗列之,但作者还算加以删选,避免过于糟粕的东西流出,还算上品。

我观本书,可列入上品之流。但以作者曾为《猿猴的把戏》翻译一点出发,似乎这样的要求过于低了一些。

让我用维吉尔的牧歌中这么一句经典的诗句来结束本篇评论:

Omnia Vincit Amor, Et Nos Cedamus Amori.

爱战胜一切,我们也必得向爱屈服。

你既已不在此处,必定远在他乡

看完了白先勇的《纽约客》,随便说两句。

白先勇此人名气极大,早年看董桥等人的书中,多少都会提到此人以及此人的《谪仙记》。前几日在重新开张的古籍书店闲逛正好看到这本书,就买了下来。

先勇的文笔是极为秀丽,也是极为克制的,遵循到了“乐而不淫哀而不伤”的极高境界。笔下道来都是家长里短、感同身受的情节。言者说来说去,自有选择,却不带丝毫烟火气;听者听来听去,自有选择,却没有任何评论腔。

即以此论,先勇就是讲故事的大家。

但也仅限于此了。


先勇创作“首先要选人物,因为人物就有故事,就有历史背景,就有时代性和代表性。人物选对了,就是成功的一半。另一半应该是选取叙事观点,叙事观点选对了,就又有另一半的成功机会。”这样的出发点和写作流程,决定了先勇成就只能如此了。

若干年前我写过一篇《大鼻子情圣》的评论,最后引用了这么一段话:

抓住19世纪观众和评论家的心的,而且继续抓住了我们的心的,是故事讲述到的爱情、激情、英雄主义和道德荣誉感感人至深。

这段话到如今仍然是正确的。于是,所谓的要选人物就狠狠地偏离了这点。从《纽约客》收录的六篇文章来看,都是极为小众的人物,而且有一个共同的特点:要么是生在A地生活在B处,要么生在B地生活在B地却过着小众的生活。

套用先勇的说法,人物既已框定,那么此人的一切,连带着故事的展开也都确定了。那么如此小众也就只能在那么一个周边去展开,能写的东西也就很限定了。

你既已不在此处,必定远在他乡。当年小楼明月不再,唯有清茶浊酒,三五好友缅怀罢了。

体制边缘行走

对于体制内的人我是向来没有好感的。道理很简单:我这样正直有底线的人不愿意在体制里生活,所以就可以想象在体制里生活的是些什么人了。

最近的评论都比较集中在这么一个焦点:那个拍照告密的最可耻。相比之下,老B说了什么以及对老B的批判几乎没人关注。甚至有人将其上升到言论自由,因言获罪之上。

老B是不是应该有言论自由?理论上有;会不会因言获罪,我倒是不敢说。所以那些搞这么一个联想的人在逻辑推理上少了一环。

我们要注意的,就是:老B是体制里的人,这是体制内的家务事,体制是在用家法而已。别TMD扯到国法上去。

既然是家法,就别说什么规则,规则是老太爷定的。再说了,党领导下的法制,所以先要家法再是国法。

老B该不该说那些话?他有没有言论自由?我觉得,在体制内的人,别TMD扯言论自由。你愿意牺牲自己的人格、人性去服从党格、党性,以此换取种种你愿意追求的东西,在这些前提下,你谈不上言论自由。你不要又要当婊子,又要立贞洁牌坊。

这才是我看不起老B的地方。你懂了吗?

Vagrant虚拟机中apt-get的翻墙

用Vagrant安装虚拟机不是什么麻烦的事。这次我装了一个虚拟机后,准备用这台虚拟机学习一下HHVM。按照HHVM官方的文档,其实是很简单的。但是只有一个问题:HHVM的仓库地址(http://dl.hhvm.com)被墙。所以……我们只能用翻墙的方式。

然后问题又来了,我的宿主机上装的是Shadowsocks,只提供Socks5代理;虚拟机中的apt-get只能使用HTTP代理,所以还需要privoxy来过渡。

整体步骤如下:

  1. 先安装privoxy,这可以通过一般的apt-get完成。
  2. 修改privoxy的配置文件/etc/privoxy/config,增加一行:
    forward-socks5   /               10.0.0.2:1080 . 

    这里的10.0.0.2:1080是宿主机SS的服务地址。

  3. 重新启动privoxy。
  4. 在进行apt-get update时输入类似这样的命令:
    sudo apt-get -o Acquire::http::proxy="http://127.0.0.1:8118/" update

    即可。其中的127.0.0.1:8118是虚拟机中privoxy的服务地址。

    (本文收录于[go4pro.org]

不是只有百分百完美的人才能监督政府

这几天的一个新闻热点是区伯因为“我的电脑”而被刑拘的报道。

区伯出来后,也第一时间接受了采访,采访内容已经上了网,题目取得很伟大:对话“区伯”:不是只有百分百完美的人才能监督政府

我从头看到尾,首先是不能理解为什么取这个标题。通篇谈及该标题内容的只有寥寥一处,文章花费了大量笔墨去描述当日区伯“我的电脑”时的一些细节。

U12527P1T1D31674586F21DT20150402113728 Continue reading 不是只有百分百完美的人才能监督政府

这是一个没有信任链的时代

生活在远方 | 是的,因为真正的生活是在远方

本篇承接上文:这是一个不要脸的时代

这还是一个没有信任链的时代。

broken-chain

信任是一个人对另一个人的说话、行事的可靠程度的认可和肯定。信任链是这样的信任的传递和(默认状态下)公认。

很简单的。如果A相信B并转述B的话给C听,而C的回应是:B是一个不靠谱青年,上次我就上过ta的duang,C对A转述的B所说的内容是不会信任的,更进一步,C对A的信任度也会受到损伤:A怎么了,居然会相信B这么一个“天文台”?

于是我们就看到了信任链的断裂(B->A\->C),和信任的衰减(A->C)。如果我们有足够的能力将所有的信任度进行量化并汇总,我们会发现,信任度不是一个零和游戏,是一个衰减游戏。(我甚至猜想,它会和熵的增加有关联。)

政府正试图做两件事情:一个是重建信任链。从总体来说,这当然是完全对的。另一个是通过源自1921年的那一套来重建信任链。这就大错特错了。

==========

前两天某某的《某某之下》被禁播了。于是网络上又有TYTSTN的评论说:这更证明某某不是政党的人,某某的影片不是得到ZD的授意。

可惜的是,这样的评论还是TYTSTN。

这个ZD是最会propaganda的。它不会因为:一,内容有科学错误;二,有人因此开始抨击GD或ZF而禁止一个内容的。它要显示大度,更重要的是要“引蛇出洞”。在一个我控场的环境下,只要保证枪杆子还在我手里,我不怕你们造反。

只有在ZD发现那套东西骗不了人后,才会假惺惺地禁言——其实更应该说成是“下架”才对。就像超市里到期的牛奶,即使营业员再怎么说其实过期两天没啥问题,我们顾客就是不买账,那么到后来牛奶只能下架销毁一样。

某某的事件是个很好的事件。让我们进一步认清了GD的本质和手段。

==========

信任链的崩溃是当今社会最严重的问题。失信的首先不是人民,而是理应肩负起建立信任体系的ZF。

这是一个不要脸的时代

据说FireFox在其版本37的发布中,已经取消了对CNNIC根证书的信任。这真是一个#喜大普奔#的消息。

Revoke CNNIC

整个互联网也没有几家可以颁发根证书的机构——且不论其背景如何。CNNIC的做法无异于在说:我是骗子。而FireFox的做法无异于在明确表示:CNNIC就是个骗子,大家不要跟它玩。

一个政府、一个政党可以无耻到这个地步是我始料未及的。我已经不惮于以最大的恶意来估量某ZD,可是该ZD可以一次又一次地打穿我的底线。

我在之前的评论中就说过:

我们正处在——或者自以为处在——一个创新的时代。……人类的创造力是无限的,这也是我们区别于电脑的根本之处。我们不能将创造力用在扼杀创造力之上。

以维稳作为最终极统治目的的人,说他们没有创造力是我们错了。他们在扼杀我们的创造力的同时,有着丰富的想象力和创造性,居然冒天下之大不韪来做出这样“创造力”的事情。

我们常说,再坏的坏人也总会为自己辩解几句。可如今,这样的做派摆在桌面上,又能如何辩解?事实上我也没有听到CNNIC就此事做出任何解释。这就是把坏人重新定义了一下。

=========

在这样一个不要脸的时代,我只能说,所有的“成功”都需要不要脸。“邦有道,贫且贱焉,耻也;邦无道,富且贵焉,耻也”。而我们还在鼓吹着某某宝上市之类的富贵神话,我不觉得我生活清贫有什么可耻的。

就是这样。