感冒了

昨天坐火车,着急小朋友可能开始懂一点点离别了,所以在火车上一直僵持到半夜不睡,我们俩衣服穿得少,空调开得又猛,我们都感冒了。年中的时候,还立志下半年不感冒,终于还是破功了。虽然总的来说不是很重,但是也已经影响生活和学习了。当然没有必要为了一次小小的感冒过于在意,但是这倒是再一次提醒了我,认知的重要性,如果在身体察觉到有一点点冷时,及时的像弹出窗口一般提醒自己,就没有后续诸多麻烦事了。以后戒之慎之。

人工智能时代媒体的社会责任

媒体要不要有教化作用和社会责任?这是一个可以讨论的问题。在中国,这个问题首先可以给出一极的答案,那是新闻联播给出的:以教化作用为主,而所谓新闻的作用都在教化的框架下展现。市场化的媒体会弱化自己的教化作用与社会责任感,如果是盈利的机构,那么逐利就可能影响公正。这个问题在人工智能时代会更加严重。

近两年国内出现了一些现象级的新媒体软件,主要卖点是不设编辑,没有记者,通过人工智能为每个人定制筛选感兴趣的新闻,其实我是相信算法的,如果调教得好,确实能给人追踪新闻带来很大的便利,然而我也观察过不少人使用这些软件的情况,大多并没有意愿去调教软件,而是软件推送什么就看什么,我不知道这些新闻软件在用户不做选择时推送新闻时如何选择的,从内容来看,大多数很无聊,甚至不少是带点颜色的擦边球。我的一个猜测是系统推送了最热门的新闻,毕竟大众其实就是那么低级趣味的,甚至我都不否认我也是低级趣味的,如果一个媒体软件放下身段,卖力的提升自己的点击率,那么必然会去利用人性的弱点,最后劈头盖脸的,无非是些看的时候有点爽,看完毫无价值的东西。

当前所谓的人工智能还是很低级的,但是它已经会朝着人设定的目标不断努力,一个新闻软件的满意度如何衡量?如果以用软件的人是否看了更多新闻来衡量,很容易会陷入人性弱点的陷阱,你不能说人工智能做错了,人工编辑也会这么干,只是人工智能做起来更极致,更没有底线。

我们假设每个用软件的人都有成熟的价值观,那么他可以自己去调教人工智能,使得人工智能知道要去推送什么样的新闻给用户。然而一个无法忽视的事实是,有很多人并没有成熟的价值观,而是会很容易被影响,这个问题自然不是人工智能带来的,但在人工智能时代会更加变本加厉,软件和人工智能的设计者,可能无法摆脱这样的社会责任:软件的用户可能是需要教化与引导的,技术没有道德可言,可是设计技术的人却无法逃脱。

如果还是想尽量用技术手段解决问题,那么问题就是,如何设计一个有社会责任感的新闻推荐系统,而不是任由用户的人性弱点去选择?

人心之丑陋

前些日子我去ATM机取钱,由于种种原因,破天荒的第一次忘记取回银行卡了。想着卡片应该是被机器吞了,于是第二天兴冲冲的跑到ATM机所在的银行去找卡。银行工作人员翻遍记录,就是没有我的卡,看来是被其他人拿走了,我问可不可以看监控,说要到派出所报案申请才行,嫌麻烦只得作罢。

我实在不知道这位捡我卡的人有啥目的,或许他以为他能猜出我的密码来?对我来说,首先网银还能继续使用,很快就能把钱都卷走,也可以选择挂失,只是正式挂失还要去开户地,非常麻烦,再说,这种二代芯片卡还没听说能破解,我相信我的密码他也不可能猜出来,如果去ATM机试,密码输错三次卡就会被吞掉。

总的来说,我觉得拿走我的卡是一种损人不利己的行为。我觉得这个人是行家,试图去破解这张卡的几率微乎其微,更大可能是顺手牵羊,想着万一知道密码了呢?万一里面还有钱呢?为了一个极小极小的可能性,轻易的出卖了自己的良心。勿以善小而不为,勿以恶小而为之,当出卖良心甚至违法犯罪的代价极小时,不知道还有几人能做到。

接口和抽象类

刚开始,接触C#语言的时候,不太能分清接口Interface和抽象类Abstract Class的区别,Java语言也有一样的疑问。

很容易说出它们在语法上的区别:

  1. 一个类可以实现多个接口,但是只能继承自一个抽象类;
  2. 接口只有定义没有实现,抽象类中可以有具体实现(只要有一个抽象函数即为抽象类)。

那么语义上看,要怎么区分二者呢?接口主要是表示能力,这个能力是用几个方法来表示的(很多时候只要有一个方法就行),比如这个类可以做相等关系的比较,这个类可以被克隆等等。而抽象类往往表达的是更复杂的概念,抽象类代表了一类事物,它们有很多种类,这些种类间有很多的共性,形成了抽象类,就像没有具体的马,只有白马黑马,抽象类中往往有一些功能的实现,它们有点类似函数式语言中的high-order function,主要是调度其他的抽象的函数来完成功能,在设计模式的术语中,叫做模板方法,反过来看,抽象类大部分的应用场景其实都是模板方法。

其实像C++语言支持多继承,那么一个全是抽象函数的类的作用就跟接口是一样的,因此在C++语言中,就没有类似C#或Java中的接口的语法结构。一般来说,如果一门语言不支持多继承,又要表达类似接口的概念,才会出现接口的语法结构,反过来说,当一门语言支持多继承时,我们可以自己规定某些类必须全部是抽象函数(纯虚函数),从而实现接口的功能。

总的启示是,要根据问题的需要寻找语言特性来编程,而语言特性不一定在你使用的语言中不一定会有直接的语法结构支持,但是往往都能有变通的办法。

《敦刻尔克》:一种惶恐

Dunkirk

这可能是我看过最克制的战争片了,三个交织在一起的线索,甚至都称不上是故事,人物形象都还没树立起来,故事就已经结束了,不喜欢的人确实喜欢不起来。

然而坐在巨幕下,被影院的音响狂轰乱炸,似乎亲历了一遍战场,感情丰富一点的人都会自然产生非常多的情绪,这种观影体验是很奇特的。

人们为什么喜欢灾难片,因为会衬托出自己安全观影的幸福,《敦刻尔克》从这个角度来看无异于一部灾难片甚至恐怖片,德军作为敌人的形象是模糊的,仿佛是命运之轮把剧中人物驱赶到一个能望见祖国却又似乎遥不可及的海滩,承受着炮火和飞机的狂轰乱炸。

船只的渺小和大海的深邃,相较之下,我体会到的是一种惶恐,虽然可能不及真正上战场的人之万一,但这种惶恐也是真实的,当历史的打车轮碾过去的时候,每个人都是在赌命,我想现在网络上那些轻浮的扬言支持要发动战争的人不知道是否做好了赌命的准备。

细小的命运在大事件面前微不足道,但是细小的命运又构筑了历史,正如敦刻尔克的军队是靠很多小船撤走一样,在命运之轮面前惶恐过后,也只能是选择去做点什么,否则人生剩下的也只有面对死亡的惶恐了。

闭包

在做程序设计语言作业时,用racket语言自己实现了一个新的语言,还带上了闭包功能,感觉终于深刻理解了闭包是个什么东西,虽然以前在C#中也无数次用到匿名函数,接触了闭包的概念,但是换了一种语言来看,好像找到了这种概念的源头。

一个函数中有很多变量,有一些是函数中定义的(这包含在函数体中),有一些是作为参数传入的,因此一个普通的函数调用,需要知道函数体,也需要知道传入的参数,我们可以称这些参数是不自由的,已经由传入决定了。

如果一个函数中有些变量不是由传入参数决定的呢?那么这些参数是自由的,它们由定义函数的环境所决定。可以简单的认为,函数与定义函数的环境就称为一个闭包,在racket等语言中,实际上所有的函数在底层都会用闭包形式表达,这个闭包包含一个环境,环境提供变量与值的映射,还包括函数体代码,在一些实现中,可以把传入参数的映射也放大环境中,说到这里,发现闭包没什么神奇的,只不过是一个函数体,加上一个变量和值的映射表而已。

在函数式编程语言中,闭包往往很重要,闭包作为值,可以像整数、浮点数一样传递,这个传递的值,如果被另一个函数调用,就像你租了一个餐馆自己做菜,原料(函数调用方待处理的数据)由餐馆提供,但是你自己带了佐料(环境中的变量与值的映射),也带了处理原料的方法(函数体),这里的佐料和处理方法可以千变万化,调用的函数都不关心,因此有了极大的灵活性,比如经典的map函数需要一个处理函数作为参数,只规定了这个函数必须处理列表中的元素,至于怎么处理,是否带上其他复杂的参数,都由这个处理函数蕴含的闭包决定。

闭包还和匿名函数的概念联系起来,匿名函数都是在某个函数中定义并就地调用,匿名函数如果能使用相关环境中的变量,那么就是一个闭包。比如C#中的匿名函数,可以使用定义它的函数所在的对象的所有字段。实际上C#的匿名函数是用一个类实现的,这个类就包含了这个匿名函数(会生成一个名字),还有它所引用的调用方的字段作为私有字段。可以说,C#是用类实现了闭包。

闭包这个词,可以拆开来理解。

  1. “闭”代表封闭,闭包对修改是封闭的,闭包中的函数一般来说无从修改,不像对象中的函数,一般是可以通过子类来重载修改的,这不便于扩展,但更稳定。
  2. “包”正如前面描述的,代表是函数及定义该函数的环境的包裹。

简单方法不简单

我还是是个小学生的时候,数学考试经常简单的题出错,复杂的题作对,因为简单的题往往考的是手工演算,比如两位数的乘法,很容易出错,而所谓复杂的题,往往有所谓的简便方法,比如125x64这种,我一看见就满心欢喜。

我对方法的迷恋一直持续到成年,做事情的时候总会想有没有捷径可走,如果找不到捷径,我会感到难受。这几年我在研究治学的方法论,看过古今中外很多高人的经验,然而发现要建立自己的治学方法依然非常困难。

对方法尤其是捷径的迷恋,似乎是当代人的常态,所以所谓的知识付费时代来临后,卖得最火的课程貌似还是成功学,尽管包装得更加精美,然而事实是学习这些东西的人,往往并没有什么变化,倒是卖课的人赚得盆满钵满,比如李笑来的《通往财富自由之路》课程,我也凑热闹交了一把智商税,也学到一些东西,但是倒是和菜头客串的一篇文章印象也很深刻,大概是委婉的说出了这种人生经验很难在经历之前真正学懂。

我的体会是,方法论是从自己的实践中生长出来的一棵树,你可以四处获取养分,然而不能把别人的木头拿过来当成自己的一部分。如果要形成自己的体系,必然需要很多实践方法,如果这些方法有用凑效,最终能不能总结出一套理论来,其实是无所谓的。

那么什么样的方法是好方法呢?对我来说,能够真正坚持下来的方法才是好方法,如果要极大的毅力去坚持,最终往往免不了三分钟热度的悲剧命运。那么什么样的方法才是能坚持下来的方法呢?对我来说,答案很简单,那就是简单易行的方法,比如每天晚上写一下成功日记,用流水账简单几个字就行,忘写了第二天也还能补,这种简单的方法就能让你回顾总结一天的活动,提振自己的士气。又比如看完一篇文章,用一到两句话总结一下文章的观点,不用长篇大论,不费很多精力,但是却能慢慢的形成吸收知识纳为己有而不是泛泛而都,甚至我在写的时候,常常不自觉的就和作者讨论甚至争论起来,所谓的批判性思维,这也算是一个好的开端吧。

人们往往忽视了短时间内取得进步的困难,也低估了长时间取得进步的可能,用简单的方法开始治学,只需要很低程度的持之以恒,长期来看取得的收益是性价比超高的。

《摔跤吧!爸爸》:父母该怎么为子女铺路?

Dangal

人是一种动物,或许是因为生命在于运动,体育电影总是让人能够热血沸腾,相比战争电影,它的“燃”没有什么负面意义,《摔跤吧!爸爸》也是一部典型的正能量电影。

有部分人批评电影中的父亲独裁地为女儿们挑选了摔跤这么一个职业,要反驳很容易,因为导演在片中安排了一个新娘规劝了不服气地两个女儿,如果不去摔跤,只能早早嫁人,没有资格选择职业也没有资格选择老公。片中的父亲没有太多其他的本事,培养有天分的女儿们成为摔跤手是最优选择了。世上少不了何不食肉糜的感叹,然而也不能只是这么简单的批判一番,仔细衡量的话,父母该怎么为子女铺路是一个极其复杂的话题,其实这部电影谈到了很多因素:

  1. 父母的个人情结,无数的作品都描述过类似的故事,有悲剧有喜剧。片中的父亲想让子女圆自己的梦,这在很多情况下不见得是好的选择;
  2. 子女的天分,片中的父亲是发现女儿们有摔跤的天分后才着手培养的,这一点和前一点结合,才能变成喜剧。然而,怎样才算有天分,实在也是一个复杂的问题。片中的父亲也正是有情结才能发现女儿的天分。如果他是一个程序员,说不定还发现女儿们有写代码的天分;
  3. 家庭的眼界,片中的家庭应该算是比较穷,父亲似乎也不懂除了摔跤之外的太多东西,于是摔跤就成了他们能抓住的唯一稻草,如果家庭的眼界更开阔,自然可以有更多的选择,然而在没有选择的情况下,可能更有毅力,因为那是救命稻草。

给子女发现更多的道路是眼界,知道什么样的道路适合子女是智慧,能够坚持培养是韧性,而最终能不能成才还需要一点运气。最后,还有古话聊以自慰:儿孙自有儿孙福。

对传销的几点认识

这几天,由于某种原因,对传销有了比以前更深刻的认识,随便谈一下。

传销是一种心灵污染

为什么传销无法禁绝,因为人心的贪娈无法禁绝。一个传销头目就是一个污染源,传销作为一种诈骗模式,会迅速的在传销组织中传播,打击传销组织不可能对庞大组织中的人都用重刑,因此哪些处罚很轻或者免于处罚,但是心灵已经被污染的人,会成为新的污染源。因此我们很容易看到相似的传销手段,不断的死灰复燃,政府要想彻底打击基本上不可能,只有像除杂草一样,等长到足够高的时候,用打草机割掉一批。要想彻底除掉杂草,要斩草除根,改变土壤,即使这样,我们也很难看到彻底禁绝杂草的地方。传销也一样,不过总可以尽量减少它的危害,这需要社会人心的改变与国民智商的提高,如果浮躁拜金的社会风气没有改变,人们对投资理财的基本概念没有建立,那么传销的气焰也会始终嚣张。

金字塔模式是一种经典模式

传销的核心模式是金字塔模式。传销的金字塔模式的问题在于,金字塔的底层是不稳固的。如果能形成稳固的底层,金字塔模式就能一层层累积出塔尖来。金字塔模式本没有善恶之分,就看如何运用了。

虽然人们都喜欢平等的概念,但是金字塔模式一定程度上也是文明进步产生的助力,农耕文明的直接战斗力可能比不过游牧民族,但是最终高端一点的东西,无论是科技层面的还是文化层面的,基本上都来自农耕文明,最简单的一个解释就是,只有通过农名供养贵族的金字塔模式,才能造就一帮闲人研究一些温饱之余的问题。红楼梦里面林黛玉的诗写得好,但前提是她不需要下田干活,而是四体不勤五谷不分。

不过我想随着人工智能时代的来临,这个金字塔底可能会由机器人来承担。

跳出圈子的重要性

传销组织的一个特点是试图切断你和家人的联系,将你的社交关系逐渐局限到传销组织的人,然后再开启洗脑模式。无论多么荒谬可笑的东西,只要周围的人都是这么去做,人们就会觉得正常,这是人的社会属性本质决定的。因此,要想防止各式各样的洗脑,最重要的办法就是跳出圈子思考问题,不要把自己归到任何圈子,与各式各样的人建立联系,这里说的人,可能是生活中接触的人,互联网上交往的人,甚至可能是古人,也可以通过他们留下来的书之类的接近他们的思想。

我的知识管理工具

简单整理一下自己使用的知识管理工具,其实自己的体系还建立得不是很稳固,所以这个清单只是一个草稿,希望在接下来的1~2年内稳定下来。本清单将不断更新。

1 信息源

  1. inoreader RSS阅读工具
  2. 微信订阅号
  3. 微博、Twitter
  4. 雪球
  5. 知乎
  6. 即刻
  7. Courera
  8. TED
  9. Pocket 稍后阅读工具

2 信息采集

  1. Evernote 备忘录的长期存储,其他内容的临时存储
  2. Onenote 主要使用手写笔记功能
  3. Pocket 长文章的临时存储

3 笔记整理与生成

  1. Evernote 简单笔记的写作
  2. Workflowy 结构化笔记的写作

4 写作与成果展示

  1. Github pages + Jekyll
  2. Typora