语言特性

程序员的老梗是讨论什么编程语言最好,标准答案有两种,一种是PHP,还有一种是取决于你要完成什么任务。那么主要谈谈第二种答案。

尽管这里讨论的编程语言主要指的是图灵完备的通用编程语言,然而每个语言设计的时候都会有自己的场景想象,于是语言设计者会选择一系列认为很有用的语言特性,静态类型还是动态类型?要不要垃圾回收?是否支持闭包?

有一些语言特性会作为语言的核心功能设计,然后在此基础上设计好用的语法糖,要理解一门语言的运作,必须对此有一定的区分,比如C#语言中,一个类中的核心概念是字段和方法,衍生的语法糖包括属性、事件、访问器等,不知道这些区分与运行机制也能写代码,但是可能会遭遇一些无法理解的问题。我知道C#有一本书《C# via CLR》对这些问题讲得比较透彻,其他语言相信也有类似的。

《代码大全》中说,程序员应当根据自己的需要选择语言特性,不要语言提供了的一股脑都去用,比如javascipt语言就有很多奇奇怪怪的特性,甚至还有一本书专门介绍它哪些特性好哪些特性最好不要用,这时候我们用的是语言的子集。还有一些情况,出于其他原因,我们必须使用某种语言,但是却缺乏我们需要的特性,这时候可以考虑自己实现,比如用C语言实现一个简单的对象系统,在Java 7中自己实现一个简单的的map reduce。

从这个角度来说,语言特性高于语言,要充分熟悉各种语言特性,可能要多学几门语言,它们各自有自己的侧重点,从而更容易理解,比如要学闭包,函数式语言就比C#更合适,虽然C#也算是有闭包。

《百鸟朝凤》:命题作文

百鸟朝凤

《百鸟朝凤》这部电影虽然没卖座,但也曾站上风口浪尖,大师绝唱这个词,甚至在吴天明导演身上不幸印证了。然而,我还是不得不说,这不是一部很好的电影。

如果以《百鸟朝凤》命题作文,那么我不得不对这部电影的音乐性充满期待,然而,让人遗憾的是,唢呐的演奏甚至都不是电影的重点,唯一有意思的一段是焦三爷喝醉后的唢呐,然而正当我要入戏时,唢呐演奏变成了混响,作为一部和音乐有关的电影,整部电影的配乐可以说比较失败。

看了一半才知道音乐不是电影的重点,重点似乎是要表现民间艺术的失落,然而电影并没有很认真的去介绍唢呐,似乎百鸟朝凤也只是为了导演心目中想要表现的某些命题的应景,这样即使要表达主题,观众看起来的遗憾度也不会太高。

创作者对民间艺术的失落的理解并没有什么新鲜的,只是像一个老人一样感慨过去的好日子,而当下的乐手,在电影中不是断了手指就是得了尘肺病,唯一对生活充满热情的人似乎是哪个师父瞧不上的蓝玉,然而他基本上放弃了唢呐。

好的东西会有人欣赏,然而苦情并不是好的出路。

我希望看到的是用热情浇灌的展现出唢呐演奏的美感的电影,可惜了。

如何学习一名新的编程语言

前几天为了学习吴恩达deeplearning.ai的课程,在coursera平台上进行了信仰充值,59美金包了一个月,坑人的是,吴恩达的课程只除了3/5,为了不浪费我的钱,我想再找个有认证的课刷一下,于是找到了据称比较难的programming-languages课程。

programming-languages这门课用到了ML、Racket、Ruby等三种语言,从语言的选择就可见不走寻常路了,我初步了解了一下,应该是一门偏向函数式编程的介绍编程语言范式的课程。用这个老师Dan Grossman的话说,这是像练武术的人搞一些挑水扫地蹲马步的活动。恰好函数式编程我也不是太熟,不妨一刷。第一次作业一次性拿了满分,看来我还是有写函数式编程代码的天赋么?

类似的试图一次性学习所有编程语言的还有之前见过的一本书《代码之髓》,日本人写的,大概翻过一下,把编程语言中一些主要的概念拿出来对比着讲。愤怒的大牛王垠也写过一篇如何掌握所有的程序语言,值得一读。

Dan Grossman也总结了语言学习中的五个要素:

  1. 语法,代码怎么写的,这部分肯定是要学会的,但也没什么难度,没什么意思;
  2. 语义,这些语法代表什么含义,代码是怎么运行的,理解到这部分,代码才能在脑子里跑起来;
  3. 惯用法,如何使用语言特性表达计算,很多语言都有cook book,比如C#,你不用Linq而老是用for循环,那是很暴殄天物的;
  4. 库,一般来说,只是学“语言”跟库关系不大,但是要做实际项目,库可能就很重要了;
  5. 工具,每种语言可能都有一系列的衍生工具,帮助你更好的完成工程。

这其中第1项是基础,2、3两项,是理解一门语言的关键与难点,而4、5两项,则是衍生品。

我的目标也是掌握所有的程序语言,如果借这次机会学透了函数式语言,我觉得问题不大,因为所有的语言几乎都是C和Lisp之间的光谱分布。核心语法一般1~2天能学会,而语义、惯用法或者说语言特性无非就是一些核心概念里面打转,而库和工具可以在使用中熟悉。

骗子的美好时代

前两天给老爸下驾考的软件,发现需要实名验证,以后,我们除了在注册账号时要记得自己的身份证号码外,还要记得一件事情,就是骗子的美好时代来临了。

一个人注册的网站越多,那么某个网站泄露他的个人资料的可能性就越大,那些大大小小的网站真的有能力有操守保护我们的隐私吗?匿名化其实是给了注册的人一定的自我保护能力,而在实名制前面,这种保护能力将化为乌有,原本就很严重的个人资料泄露有了实名制后将会如虎添翼,可能不久的将来,更多的人会接到诈骗电话,轻松的报出你的家人的身份证号码和住址,每个人防骗的神经必须绷得更紧才行,你要时刻记住,在这个时代,你和你家人的资料对于骗子来说,基本上已经等同于完全透明了,想明白这一点,或许在接到诈骗电话的时候,反应能机敏一点。

从理论上来说,实名制也对打击各种诈骗、拿钱发帖的水军等有很大的益处。但事实是道高一尺魔高一丈,电话号码的实名制丝毫没有降低诈骗的嚣张程度,估计网络账号的全面实名制也不会有什么区别。实名制的约束只会约束到普通良民,而坏人们总是会想到各种钻空子的办法。

我感觉近几年来黑色产业有一次明显的产业升级,诈骗这种有一定技术含量,风险低收益高的犯罪方式,已经在全面替代盗窃和抢劫。而诈骗的受害者,甚至都得不到大众的同情而是会被嘲笑,因为似乎被骗等同于傻或者自己太贪婪,包括我在内的很多人可能自负的觉得自己一定不会被骗,然而当个人资料越来越多的被泄露后,说实话我的信心也没有那么足了,只能提醒自己提高警惕。

服务业的消费升级

一般来说,现在从事服务业并不是很赚钱,也没有什么门坎和太高的技术含量。

比如说,商场的导购员和餐馆的服务员,往往素质都不会太高,如果遇到了素质高的,是一件值得庆幸的事情,原因很简单,素质高的人不回去做这些工作,即使做了这些工作,也是临时性的,或者很快升迁了。一个人素质很高,又做了大半辈子的服务生,那简直不可想象。又比如说驾校的教练,其实文化素质很高的就不多,原因跟上面一样。所以大部分人学车的体验很难好得起来,且不论教练是否和颜悦色,见钱眼开,就说很多教练其实都讲不清楚基本原理,只能是教学员一些死板的方法搞好应试教育。又比如说月嫂,你说素质很好高的怎么可能去给人当月嫂呢?稀有。所以很多人花了高价请高级月嫂,也不见得有多高级。

当然我们很容易看到,这些服务行业的消费升级,可能是一个想象力无限的市场,首先是经济水平上升后的必然要求,其次也将是人工智能时代的特点,如今看起来有些技术含量的工作,比如开车,以后可能都会被人工智能取代,而一些需要人的亲和力的职业比如销售却可能依然存在。

不过我想到更多的是,一个社会公平的意义,如果不注重社会的整体进步,富人们赚再多的钱也可能享受不了太好的生活,因为谁都避免不了跟服务行业的人打交道,如果始终认为这个阶层的人不值得拿高工资,那么永远也享受不了好的服务。更恐怖的是,如果贫富差距过大,各种悲惨的结局都写在历史书上了。所以说,为富不仁,即使从功利的角度来看,也是不对的。

雪球量化投资club

前天在网上看了雪球量化投资club的直播,听了四场交流演讲,对于量化投资的基本认识更加清晰了一些。下面挑一些个人理解的要点记录一下。

  1. 量化投资并不神秘,简单的指数基金定投其实也可以归到量化投资的范畴;
  2. 宽泛一点理解,凡是可以定量计算的,都可以用于量化投资,可以做所谓的动量投资(基本上就是自动化的追涨杀跌或者高抛低吸),也可以做基本面分析,所以量化投资不一定是高频交易,也可能时低频交易,一个量化策略可以吸收各种要素;
  3. 散户搞量化交易,相比机构能获得的资源比较有限,自然是有很多劣势,但是也有自己的优势,其中最大的一个优势就是资金量上基本上不会对价格造成冲击,所以交易成本很低。
  4. 量化是利用数据分析与程式化的交易(中低频交易不需要自动化程序)来反人性,用数据说话,而不要过于相信感觉或直觉;
  5. 量化交易要看全局看全时,总的目的是自己的投资组合赚钱,而不纠结于个别的品种,应当做较长时间的历史分析,而不能只看最近的效果;
  6. 量化交易一般需要建立模型,在历史数据上回测再调整,然而历史是螺旋发展的,回测可能会有过拟合的现象,也就是说,会出现一些特别的参数效果特别好,但是用来做策略未来不一定会好。我觉得最好还是要有对模型为什么效果会好的解释,并考察这种解释在未来是否会失效,比如最小市值策略,解释是A股特有的壳价值带来的,但如果新股发行持续改革,这个策略就会失效。
  7. 散户资金量小,可能无法建立足够的股票池构建组合,这时候可以考虑基金,类似华泰证券的券商基金交易费率极低,且没有最小消费的限制,非常适合量化交易。此外,如果场外购买基金,交易费率也是要仔细比较的。
  8. 学好Python,对量化交易好处多多。看来我去年开始用Python是个明智的决定。
  9. 在A股量化策略容易有效的原因是韭菜多,不过这种好日子估计最多5~10年,挣超额收益会越来越难。
  10. 演讲中提到的相关的资源:
    1. tushare:一个开源的金融数据库,可以用Python非常方便的使用;
    2. 优矿:一个量化策略平台,提供了丰富的API,支持Python语言。
    3. SSRN:获取免费的金融方面的英文论文。

比特币FAQ

这篇比特币FAQ试图以FAQ的形式对比特币做一个简单的介绍。主要参考了比特币白皮书和普林斯顿大学的教材《区块链:技术驱动金融》,当然不可避免的包含了很多个人理解,欢迎探讨。

1.什么是比特币?

比特币是一种数字货币,它不依赖于某一个中心机构发行,而是依赖于互联网,基于密码学与分布式计算理论发行,人人都可以参与,它的总量有限,你可以把它想象成数字世界的一种黄金。

2.比特币有什么用?

比特币是一种数字货币,因此理论上它可以做任何钱可以做的事情,目前来说它可以买到的最重要的东西是各国的货币,而在一些承认了比特币货币地位的国家,比如日本,比特币已经可以买机票之类的东西了。即使不把比特币当成货币,然而它依然可以以物换物,只要交易的参与者认同它的价值。

3.货币应当有国家信用背书,比特币没有,那么它的信用来自于哪里?

货币不一定要有国家信用背书,比如目前黄金还是可以用作国际通行的货币,货币的信用来自于有多少人相信它是货币,基于国家发行的纸币讲的是一个故事,基于密码学共识发行的比特币讲的是另一个故事,人类正是因为有了相信故事的能力,才能组织起更大规模的合作。(推荐阅读《人类简史》

比特币的信用来源确实不好理解,它通过一种分布式的方式,对谁有多少钱这个问题达成了共识,只要参与这个系统的人都不可否认。你仍然需要理解的是,任何现代货币都是一个故事,货币的特点就是承认它有货币价值的人越多,它就越有货币价值,所以不可否认这里面有信仰成分。

4.这么说比特币就是一种传销或者说庞氏骗局嘛?

比特币和传销或庞氏骗局有一点相同,就是都需要一点点信仰。但是区别主要在于,对比特币的信仰会使得这种货币真正具有价值,它的价值就是作为一种货币存在,而不是其他的。而传销或者庞氏骗局带来的是更多的上当受骗的人。另外还有一点不那么重要的区别在于,比特币社区聚集的是一帮极客,他们希望的是建立一种新的货币体系,出发点绝不是骗钱。

5.比特币究竟是怎么发行的?

比特币需要定期对所有未确认的交易进行确认记账,而获得这个记账权的人将获得一定的比特币奖励,这些奖励是比特币原始的来源。每完成一批交易的记账,会打包成一个所谓的区块,每个区块都有一个指针指向前一个区块,因此被称为区块链。

6.谁有多少比特币是怎么记录的,有一个类似银行的账户么?

并没有类似银行账户的概念,比特币区块链只是记录了比特币的产生,以及它产生后所有的转账记录,当转账到某个地址而暂时没有转出时,则这个地址对这个比特币有所有权。

7.地址是什么?

地址可以理解为一种身份的证明,它是公开的,就像人人都能看见你家大门上的门牌号码一样。但是只有你自己有一把钥匙可以打开这扇门,这里用到了密码学中的签名算法,总的来说,你可以通过私钥来证明这个地址(公钥)归你管理。

8.比特币真的有一个一个的币吗?

上面我们说了,比特币区块链就是一个大帐本,所以并没有像人民币那样一个一个的币存在,而只是人人都能看到某个地址上有多少数量的比特币还没有花掉,而这个地址上的比特币只有持有私钥的人才能签名确认后花掉。因此,比特币实际上就是私钥,因为知道了私钥的人就能花掉比特币。

9.怎么保存比特币?

首先,如前所述,保存比特币首要的就是要保存私钥,这是所谓比特币钱包的主要功能,私钥泄露,则比特币丢失。此外,某个地址上有多少币是由公共的区块链来确定的,人人都可以连上比特币网络验证。

10.那么究竟谁来记账呢?我为什么要信任这个记账的人?

这是比特币的最精妙的设计。谁来记账是一个不确定的事情,每个节点都要去花很长的时间的计算(这需要消耗电力)来竞争这个记账的权力,获得记账权力后,如果随便乱记,那么会得不到其他节点的承认,这个生成的区块也将作废,虽然它也指向前一个区块形成了区块链,但是其他的人可以创建一个得到更多人承认的区块,产生一条更长的区块链,使得你这条短的区块链作废,浪费了电力而得不到打包的比特币奖励。这种精妙的设计通过人性是逐利的来达到了可信。

##11.每个区块都会产生比特币,那么比特币会不会越来越多?

不会,每个区块的奖励每隔一段时间会减半,因此这是一个比例为1/2的等比数列,其总量为2100万个。因此比特币是设计为通缩的。

12.通缩的货币会越来越能换到更多的商品,那么理论上人人都会囤积比特币而不会花费比特币,那么它还有货币价值吗?

这确实是个好问题,我的理解是到一定的时候(比特币获得了它应有的地位,价格趋于稳定),比特币的拥有者自然会花比特币,就像现在拥有黄金的人一样。而且比特币可以和其他支持通胀的货币一起构成货币体系,就如同现在的黄金和法币一样。

13.我听说比特币是匿名的,所以都被用来买毒品?

比特币是一个公开的大帐本,但是它的地址是一串字符串,确实不能直接和人联系起来,因此有一定的匿名性。但是同时,它的账本是公开的,历史是不可更改可以随时查看的,从这个角度来说,它的匿名性还不如现金,只要把比特币地址和人取得了联系,就会追溯到所有的历史。实际上,用比特币贩毒的丝绸之路就被FBI抓了,所以比特币只是一种工具,并不天然的利于犯罪。

14.我听说比特币被用来洗钱?

就像上一问一样,我不认为比特币天然的利于洗钱,像中国政府已经开始监管交易所里用比特币进行洗钱的风险了,我觉得比特币还是应当更多的用于合规合法的应用。

15.要怎么获得比特币呢?

目前来说,通过竞争记账权,也就是俗称的挖矿,来获得比特币已经很专业很困难了,最简单的办法还是找持有比特币的人用人民币来买,而买卖的方式,最简单的是通过场外交易平台,如LocalBitcoins。参见如何获得比特币?

16.既然比特币只是一种技术,而不由任何组织发行,那么岂不是随随便便都会产生类似的各种数字货币?那么比特币还有什么特别的价值吗?

确实是可以产生任意多种类似的数字货币,甚至它们的技术可以更优秀,但是有两点需要注意,比特币有先发优势,数字货币的价值需要越多参与者越好,在比特币已经占领高地的情况下其他数字货币很难从头开始取得优势地位,其次比特币自身也是可以进行技术革新而进化的。

17.我听说最近比特币分裂了,这是怎么回事?

比特币的相关规则和软件都是开源的,因此当有人不认同现有理念的时候,可以从某个区块开始,按照一个新的规则来打包交易(挖矿),而不接受原来的规则挖出来的区块,反之原来的规则也不再兼容这个新规则挖出来的区块,因此从这个区块开始,有两条区块链各自为政。在这个分类区块之前的未使用的比特币,可以同时转账到两个区块链分支,因此先当于1个原来的比特币变成了新的两个区块链上的各1个比特币。

18.这种分裂不是相当于比特币翻倍了么?

不完全是这样,分裂后的比特币由于参与者用脚投票,会出现价值上的差异,从既定事实的角度来说,只有价值高的那种才算是正宗的比特币。目前比特币的转账手续费较高,如何解决这个问题,产生了两个方案,一个是对区块的大小进行扩容,支持这个观点的人分叉出了被称为BCH的数字货币,而另外更复杂的协议仍暂时保留了BTC的称号。

19.比特币和区块链的关系?

区块链技术产生于比特币的研发,目前衍生出更多的技术,但是区块链技术的应用场景还需要进一步着实,目前的热潮泡沫很大,个人认为以比特币为代表的数字货币才是区块链真正落实了的应用场景。很多应用场景根本没必要使用区块链技术,但是数字货币却很可能是很有必要的,这一点在此不能详述,可以参见哈耶克的《货币的非国家化》。

20.如何投资比特币?

对大部分人来说,投资比特币唯一可行的方式就是用少量的完全不影响生活的钱购买比特币,长期持有5~10年。由于比特币价格仍在剧烈波动中,任何试图追涨杀跌的行为都将陷入赌徒的境地。

投资中的傲慢与偏见

雪球网是我去年以来上得最多的网站之一,在我尝试投资的路上,起到了很大的作用,即使到现在,我的选股也还有很大抄作业的意味,看看雪球上的大V们感兴趣的股票,再加上一些自己的分析判断,大概是我目前的水平状态。

雪球上当然也有韭菜和小白,有一些感觉水平比我还低的人,但是大部分情况下我觉得讨论质量还是比较高的。不过最让我觉得讨论水平低下的是对比特币的讨论,无论是大V,还是小白,大部分人的看法都是“传销”,“庞氏骗局”,“没有国家背书的货币毫无意义”,“本世纪最大骗局”之类的。说实话,我也看不清比特币的未来,可能还要至少翻一百倍,也可能一文不值,只能当作一个时代的纪念。但是我能够清楚明白的是,这是一个有着深厚数学基础和经济学基础的伟大发明,而绝不是什么传销和旁氏骗局能解释的。比特币作为一种金融工具,但是由于它的数学基础与程序运行的特点,吸引的早期用户大多是程序员,很多传统的投资界人士可能并没有用心去了解过,或者实际上看也没看懂。

我一直觉得投资中的两大心理障碍是贪婪与恐惧,但是现在发现傲慢与偏见也是,比如很多人都倾向于投资计算机、互联网这些高大上的新兴行业,而对白酒、水电之类的没有太多技术含量的股票不屑一顾。我觉得如果抛开道德因素看的化,任何钱都是平等的,卖白酒的也是挣钱,卖软件的也是挣钱,没有高低之分,对投资人而言,更是应该哪里挣钱哪里去。

其实我看到雪球上的投资人对于比特币的无知言论是觉得很高兴的,因为这说明还有很多人没有发现数字货币和区块链的价值,比特币其实还是再比较小的圈子的一个玩具,对它的推广固然任重道远,但也蕴含了无穷的潜力。这也启示我,对于自己不懂不了解的东西千万不要妄下结论,否则失去了真理也失去了真金。

(写此文时,比特币价格突破3000美金。)

《战狼2》:战狼2的成功启示

战狼2

战狼2票房已经突破20亿,豆瓣评分也高达7.5分(好于79%的动作片),我觉得算是叫好又叫座了。我也凑热闹去看了,电影本身我觉得人们已经讨论得够多,我没什么要补充的,总的来说,达到了好莱坞大片的水准,要是把主角换成美国人,解放军换成美军,照样是一部好的爆米花电影。

我想说说它的成功。人们调侃说,估计现在找吴京投资《战狼3》的投资人都把钱堆到他家门口了,毫无疑问,《战狼2》获得了极大的商业成功,电影背后的故事也被逐渐挖了出来。看完这些故事,再联系电影本身的品质,我想有几点值得思考:

  1. 成功需要各种因素,《战狼2》赶上了这个月没有外国大片,主要对手《建军大业》太过于作业化,夹带的爱国主义情怀赶上了中国民族主义的上升期,当然最主要的还是电影的品质过硬;
  2. 吴京我最早知道他是电视剧《太极宗师》,算是男一号,但是后来一直坎坷,在香港电影里面演反角,比如《杀破狼》,动作很凌厉,但毕竟是反派,还只是大反派的小打手,台词都没几句。《战狼2》片头鸣谢了刘伟强和陈木胜,可以想象,吴京在这些动作片导演下没有白呆,从一个动作片演员到大片导演,虽然我不是行内人,也可以想象有多少东西需要学习;
  3. 吴京的老婆谢楠挑人的眼光真不错,所以才有抵押房产投资电影的故事,我老婆说,仔细看看,吴京也还蛮帅的,认真的男人最帅吧。

有趣的位操作

位操作总给人一种直接安排计算机0/1的感觉,这里搜集整理一些有趣的题目。