Posts for: #Reading

生命的起源

《生命的起源》

作者 刘大可

序幕 钟表匠与石头

“类比只有偶然性,没有必然性”,两个无关的东西在某个方面像,仅此而已,不能证明别的方面也像——乌鸦是黑漆漆的,隐约泛着金属般的光泽,煤炭也是黑漆漆的,隐约泛着金属般的光泽,那又怎样呢,难道看见乌鸦会飞会下蛋,就说煤炭同理,也会飞会下蛋吗?

生物的代谢活动往往会制造一些有颜色的物质,这些物质可以被统称为色素。而色素之所以有颜色,就是因为它们会吸收某种频率的光,将其短暂地转变为化学能,生物如果能够及时地捕捉到这些化学能,也就感知到了光。

眼睛的进化历史要远远长于人类这个物种的进化历史,甚至长于所有脊椎动物的进化历史——它至少要追溯到所有两侧对称动物的共同祖先身上。这个共同祖先突变出了一个控制眼睛发育的关键基因PAX6,数亿年来,这个基因都没有明显的变化,把哺乳动物的PAX6 基因切下来放在昆虫身上,昆虫照样长出正常的眼睛。

复眼对运动极其敏感,昆虫可以分辨每秒240帧的动画,达到人眼的10倍,这同样带来了显著的生存优势——你想徒手抓苍蝇,那可难极了。

第一章 原始浓汤?

40多亿年前的原始大气并不像“原始有机汤”假设的那样,是还原性的氢、氨、甲烷等物质,而是以二氧化碳和氮气为主的中性大气,这让米勒-尤里实验从根源上受到了质疑。

原始有机汤假说还有一个重大的理论破绽:要让小分子有机物形成大分子有机物,再形成生命,必须先让这些有机物达到相当高的浓度,并且维持这种浓度,否则那些诱人的化学反应在统计上根本就不会发生

从小分子有机物到大分子有机物,再到类似细胞的有机物复合体,最后到真正的细胞,需要持续数百万年的稳定环境,闪电当然达不到这样的条件,陨石坑也同样不具有这样的稳定性。而且,一切生化反应都非常脆弱敏感,所以孕育生命的环境不仅要稳定,还要足够温和。而闪电、火山活动、强紫外线都太过暴戾,它们虽然能够促使无机物转化成小分子有机物,但仅此而已,那些小分子胆敢长大一点,立刻就会被这些能量打碎。

第二章 黑烟囱?

万物生长靠太阳,实际上是生物利用光合作用将太阳能固定下来,为生物的各种活动供能。如果有其他的能量获取来源,是不是太阳也就不是必需的了万物生长靠太

黑烟囱的热液中富含甲烷、硫离子、亚铁离子、氨还有二氧化碳,而生活在烟囱附近的微生物,就会利用这些物质,构造各种各样千奇百怪的氧化还原反应,获取能量,制造有机物

它源源不断喷发出来的矿物质具有丰富的催化活性——铁、锰、锌、铜,直到今天都是所有细胞里最重要的微量元素,与多种新陈代谢所需的酶有关

卡尔·波普尔,也就是那个提出“可证伪性是判断一个理论是不是科学的标准”的科学哲学家,也对这个与生物化学结合得更加紧密的生命起源理论青睐有加。

第三章 还是白烟囱?

亚铁+2价,二硫-2价二硫化亚铁(FeS2)

科学就是科学:无论综合的道路还是分析的道路,都立足于可观察、可检验的客观事实,白烟囱假说中的任何一个细节,也都会坦诚地接受包括实验在内的一切事实的检验,不断地修正进步——科学从来不幻想掌握任何真理,我们只是不断地逼近事实,逼近那40亿年前的事实。

第四章 生命是什么?

生命是维持在非平衡态上的物理系统,这通过从环境中汲取“负熵”实现。

前半句中所谓“平衡态”,是指一种“泯灭了一切差异,而变得处处均匀”的状态——绝大多数物理系统,如果没有得到专门的维护,没有从外界获得物质和能量的支持,那么它的任何运动都会使自己更加接近这种平衡态。

生命活动非但不会泯灭系统内部的差异,不会把自己变成一团均匀的物质,而且会维持各种尺度上的差异,形成复杂而有序的结构。

汽车的机械活动是汽车报废的原因,而生命活动不是衰老和死亡的原因。恰恰相反——这恐怕会颠覆绝大多数读者的认知——生命活动的结果是永恒。

熵是系统混乱程度的度量,物理学上常用S表示,而当一个系统的熵达到了最大,就会泯灭掉一切差异,变得处处均匀,也就是薛定谔的前一句话讲述的那种“平衡态”。

系统如果是孤立的,或者所处环境的熵已经达到了最大,那么这个系统的任何运动都不会减少自己的熵”——是的,这就是热力学第二定律的具体表现,有时也叫“熵增原理”

生命为什么总能维持很低的熵? 拿这句话和热力学第二定律对照一下,答案已经没有备选项:因为生命不是孤立的,而且它所处的环境的熵也没有达到最大。

吸收低熵原料,排出高熵产物,使整个生命系统维持低熵状态

“新”带有较低的熵,“陈”带有较高的熵。

新陈代谢的真谛,既不在于物质,也不在于能量,而在于熵增的转移,生命摄入了较低熵的物质,又排放了较高熵的物质,把熵增的趋势转嫁给了外部环境,自己就可以在热力学第二定律的眼皮子底下维持很低的熵,但如果将人和环境视为一个整体,我们又会发现,蕴含了生命的孤立系统,熵不会减少,完全符合热力学第二定律。

既然“熵”度量了系统的混乱,那就用“负熵”度量系统的秩序好了——事儿就这样成了,“生命是什么”的大问题有了“负熵”这个深入人心的回答。

耗散结构是一类不断与外界交换物质和能量,而维持在非平衡态上的物理系统。

凡是盯着流水发过呆的人,都会注意到绕过障碍物之后水流会出现漩涡。实际上,如果障碍物的形状比较规整,我们还常会看到两个漩涡一摇一摆周期交替地伸展下去,形成一种独特的有序图案,它被称为“卡门涡街”

那离开漩涡后的水流重归平稳,这又是什么过程呢?按照这里的逻辑,混乱的水流是高熵的,平稳的水流是低熵的,对水流来说这是一个熵减的的过程?如果在一个包含了这条水流的孤立系统里,是谁获得了这些熵呢?

进入漩涡的是低熵的水流,离开漩涡的是高熵的水流,漩涡获得的一定是负熵。所以这些漩涡同样是典型的耗散结构。

生命是一个控制系统,它的控制对象是它的自身,它的控制效果是令自身持存。

我们就不得不承认生命才是已知世界里最了不得的控制系统。生命体内充满了各种各样的调节机制和反馈机制,它们让构成自身的各种物质全都遵照一套严密的规则,在恰当的位置上发生恰当的反应,生命正是因此得以持存

一个控制系统一定是低熵的,而精确的控制行为一定会增加外界环境的熵,所以如果一个控制系统的功能就是维持自身,就必须一边摄入低熵的物质,一边释放高熵的物质,结果就是“汲取负熵”。

追问生命的起源是什么,我们先要回答耗散结构是怎么来的,再来回答生命作为一个控制系统是怎么来的。

热力学第二定律之后,非平衡热力学的研究还揭示了一个更加普遍的“熵增最大化定律”II:排除外界影响,一个变化的热力学系统不但会向着熵最大的状态发展,还会向着熵增最快的状态发展。

因此,一个热力学系统如果具有显著的熵增潜力,却因为某种“障碍”不能顺利实现熵增,就可能突变出某种耗散结构,加快熵增的速度。

所谓“燃点”,就是随机运动已经足够剧烈,淀粉分子普遍失去稳定性,很快产生了大量的自由基。自由基与氧此起彼伏的反应产生的能量来不及消散,于是累积下来,打碎了更多淀粉分子,制造了更多的自由基,终于形成一种滚雪球般的链式反应,释放了可观的能量,发出了光和热。

生命作为一种耗散结构,最初的起源也势必符合这个具有普遍意义的回答:原始地球上的某个环境中存在一些关键的物质,蕴含着显著的熵增潜力,但这些潜力却因为某种障碍无法充分释放。于是,那里的物质就在随机的化学反应中形成了某种耗散结构,奠定了生命的雏形。

那么,生命最基本的控制功能是什么呢?

第一项是“物质代谢”和“能量代谢”。它们控制了许多关键的生化反应的方向,借此,来自外界的物质被组织成了生命自身的结构,其他形式的能量转换成了生命可以利用的形式。

第二项是分子生物学的“中心法则”。

它规定了核酸要如何储存遗传信息,遗传信息又该如何表达为具体的蛋白质。

第三项是“边界控制”,这在前文刚有所涉及,但在生命起源问题中,它特指细胞膜的边界控制,或者说,是在追问最初的细胞膜是如何产生的,又是如何发展出选择透过性的。

自从进化生物学正式建立,“人类知道的一切生命形式,任何一个物种,都在进化上源自同一个祖先”已经成为生物学所有领域的普遍共识,其中很少再有什么可争议的事情。

为了之后的整本书讲述方便,我们从此就把“已知生命的最后一个共同祖先”简称作“末祖”,在其他中文科学读物里,这个概念大多会被叫作“露卡”,音译自“Last Universal Common Ancestor”的首字母缩写“LUCA”。

自由能就是系统当中可以用来对外界做功的能量——实际上,“熵”更直接的定义,正是“系统当中不能用来对外界做功的能量的总量”:

第五章 难平的怪账

丙酮酸解体的过程就发生在线粒体的基质内。在那里,它首先会被切掉羧基。所谓“羧基”,就是——COOH,在原子比例上可以看作1个二氧化碳加上1个氢原子。实际上,那个被切掉的羧基也会立刻转化成二氧化碳,剩余一个氢原子就与氧分子结合成水。 丙酮酸被切掉羧基之后,剩下的部分就是乙酰基,乙酰基会继续发生一系列非常复杂的化学反应,彻底转化2分子二氧化碳,由此产生的氢原子,都会被拿去与氧气化合成水。

这一系列非常复杂的化学反应,被总称为“三羧酸循环”。从20世纪的30年代到50年代,共有3名生物学家因为揭示了它的机制而荣获诺贝尔奖。之后的研究还进一步确认了三羧酸循环就是细胞内一切物质能量代谢的枢纽,整套生物化学的中心。

贪婪的多巴胺

《贪婪的多巴胺》

作者 丹尼尔·利伯曼 迈克尔·E.朗

第1章 爱情

由此人们提出了一个新的假说:多巴胺不是快乐的制造者,而是对意外的反应,即对可能性和预期的反应。

为什么爱情会消逝?我们的大脑生来渴求意外之喜,也因此期盼未来,每个激动人心的梦想都在那里萌生。但当任何事情,包括爱情变得习以为常时,那种兴奋感就悄然溜走,而我们的注意力又被其他新奇的事物吸引了。

研究这个现象的科学家把这种从新奇事物中得到的快感命名为“奖赏预测误差”。

这个理论感觉好玄学,不知道有没有科学依据

佩蒂格鲁发现,大脑将外部世界分为两个独立的区域来管理,即“近体的”和“远体的”——简单来说就是远近两个区域。近体空间包括手臂可及之处,在此范围内的事物你可以马上用手控制,这是一个真实的世界。远体空间是指你的手臂无法触及的地方,不管是3英尺(约1米)远还是300万英里(约500万千米)外,这个领域代表着可能性。

不识庐山真面目的魅力

不管是天上的飞机、好莱坞的电影明星,还是遥远的山峰,只有不可及、虚幻的事物才富有魅力。魅力就是一个谎言。

著名的斯金纳箱,盲盒和gotcha系统为什么能让人兴奋,原因正在于此

在一项实验中,斯金纳把一只鸽子放到盒子里。他安装了一套装置,鸽子每啄一下杠杆就可以获得一颗食物丸。有些实验设定为需要啄一下,还有一些设置为10下,但在某次特定实验中条件都保持不变。得出的结果并不是特别有趣:不管需要啄多少次才能得到食物丸,每只鸽子都像官僚主义者在堆成山的文件上盖章一样啄着杠杆。 然后,斯金纳尝试了另一种方法。他设计了一个实验,释放一个食物丸所需的按压次数是随机变化的。现在,鸽子不知道什么时候会有食物,对它们而言每一次奖励都是出乎意料的。鸽子们变得兴奋起来,它们啄得更快了。有某种因素促使它们做出了更大的努力。多巴胺这个惊喜分子已被驯服,老虎机的科学基础也随之诞生。

“为什么你就不能享受你已经拥有的一切呢?”

从多巴胺的角度来说,拥有是无趣的,只有获得才有趣。

为了享受我们拥有的东西,而不是仅仅可能得到的东西,我们的大脑必须从面向未来的多巴胺过渡到面向现在的某种化学物质,这是一系列神经递质,我们称之为“当下分子”。大多数人都对它们的名字略有耳闻,包括血清素、催产素、内啡肽(相当于大脑自产的吗啡)和内源性大麻素(相当于大脑自产的大麻)。

尽管多巴胺和当下分子的回路能一起工作,但在大多数情况下它们是相互对抗的。在当下分子回路被激活时,我们更喜欢体验周围的真实世界,多巴胺就会被抑制;而当多巴胺回路被激活时,我们则进入一个充满可能性的未来,当下分子会被抑制。

多巴胺代表着痴迷与渴望,而与长期关系最相关的化学物质则是催产素和血管升压素。催产素在女性中更活跃,而血管升压素在男性中更活跃。

当下神经递质让我们去体验现实(性生活的现实是强烈的),而多巴胺则超越现实,它总是使人“脑补”更好的事物。为了增加它的诱惑力,它让我们去控制另一个现实。这些想象中的世界或许永远都不可能变为现实,但这并不重要。多巴胺总是让我们追逐幻影。

等待延迟了爱情中最令人兴奋的阶段。由距离和节制产生的苦乐参半的感觉,正是这个化学反应的结果。

多巴胺的反应不是针对奖赏,而是针对奖赏预测误差,即实际奖赏减去预期奖赏。

激情之爱也可能转化为更持久的东西。它可以成为陪伴之爱,这可能不会像多巴胺那样让人兴奋,但基于当下神经递质,如催产素、血管升压素和内啡肽的作用,它会为你提供长期的幸福感。

爱情可以始于多巴胺,但不能终于多巴胺。多巴胺永不知足,它只会说“我想要更多”。

第2章 毒品

满怀希望的旅途要比到达目的地更快乐,这是多巴胺爱好者的座右铭。

在期望购买一件自己想要的东西时,瞄向未来的多巴胺系统被激活并创造出兴奋感。而一旦占有,所期望的对象就从向上看的远体空间转移到向下看的近体空间,从未来遥远的多巴胺领域转移到自我满足的当下分子领域。买家之所以会懊悔,就是因为当下体验无法弥补多巴胺能激励的损失。如果我们的购买行为是明智的,强烈的当下满足感可能会弥补多巴胺兴奋的损失。

有三种方法可以用来弥补买家懊悔:其一,通过购买更多的东西来追求更高的多巴胺;其二,通过少买一些东西来预防多巴胺的剧减;其三,增强从多巴胺欲望向当下喜爱转变的能力。

想要和喜欢是由大脑中的两个不同的系统产生的,所以我们想要的东西往往是我们不喜欢的。

“喜欢”涉及的大脑回路与欲望回路不同,并使用当下化学物质来发送信息,而不是多巴胺。特别是,“喜欢”依赖的化学物质与促进陪伴式爱情的长期满足相同,它们是内啡肽和内源性大麻素。海洛因和奥施康定等阿片类药物是目前最容易上瘾的药物之一,正是因为它们同时扰乱了欲望回路和喜欢回路(多巴胺和内啡肽分别在其中起作用)。大麻也同样如此,它与两个回路相互作用,刺激多巴胺和内源性大麻素系统。这种双重效应导致了不寻常的结果。

尼古丁不会像大麻一样让你兴奋,不会像酒精一样让你陶醉,也不会像飙车一样给你刺激。有些人说抽烟能让他们更放松,也有人说抽烟让他们更警觉,但实际上,它的主要作用是减少渴望。这是一个完美的闭环。吸烟的唯一目的是上瘾,这样就可以减轻渴望带来的不适感,由此让人体验到快乐,就像一个整天抱着石头的人,终于放下石头时会感觉一身轻松。

上瘾不是性格软弱或意志力不足的表现,它只是欲望回路因过度刺激而进入病理状态时会发生的情况。

多巴胺回路的增强促进了冲动行为,而不是满足感——它促进了“想要”,而不是“喜欢”。

一个东西是否容易获取,是它是否容易成瘾的关键因素。

事实上,为了减少这些物质引起的问题,最有效的方法就是使获得它们变得更困难。

贤者模式

虽然性瘾者在观看色情作品时表现出更高的欲望水平,但他们给色情视频的评分并不一定高。

青少年大脑与成年人大脑最大的差异在额叶,额叶直到20岁出头才发育完全。这会造成问题,因为正是额叶赋予了成年人良好的判断力。它们就像刹车闸,在我们要做一些不太好的事情时警告我们收手。在额叶功能不全的情况下,青少年容易冲动行事,即使他们知道怎么做更好,也容易做出不明智的决定。

电子游戏都是关于想象的。它们让我们沉浸在一个美梦成真的世界里,这样逃避现实的多巴胺就可以享受无尽的可能性。我们可以探索不断变化的环境,确保惊喜一直都在。我们可能从沙漠出发,走过雨林,然后走在逼真的城镇地狱里一条黑暗的小巷中,接着突然坐上火箭,飞向一个外星世界。

值得一提的是,在电子游戏中,当下的愉悦也有助于提升其吸引力。很多游戏可以让你和朋友一起玩。当我们为了娱乐而与同伴一起社交时,我们所获得的享受就是一种当下的体验。而且,聚在一起完成一个共同目标,这种行为也是由多巴胺驱动的,因为我们正朝着一个更好的未来而努力(即使只是占领敌方基地)。电子游戏能满足这两种类型的社交乐趣。

把想要和喜欢混为一谈是很自然的。我们会喜欢自己想要的东西,这似乎显而易见。如果我们是理性的生物,这句话确实应该成立。虽然我们认为我们是理性的生物,但一切证据都表明,我们不是。我们经常想要自己不喜欢的东西,欲望也可能会引导我们追求那些可能破坏我们生活的事物,如毒品、赌博和其他失控的行为。

第3章 掌控的力量

经过中脑边缘回路的多巴胺会产生冲动,我们称该回路为多巴胺欲望回路。计算和规划(控制各种情况的手段)来自中脑皮层回路,我们称之为多巴胺控制回路

对于欲望多巴胺来说,这些幻影是我们希望拥有但目前还没有的,即我们想要在将来拥有的。对于控制多巴胺来说,幻影是想象力和创造性思维的基石,包括思想、计划、理论、抽象概念(如数学和美),以及尚未形成的世界。

多巴胺驱动了努力。这种努力的特征可能受到其他很多因素的影响,但如果没有多巴胺,努力从一开始就根本不会存在。

持续正反馈的重要性

要刺激老鼠,可能一顿培根味的美餐就够了,但人类更复杂。我们要成功,首先必须相信我们能成功。而这会影响韧性。如果早早地取得一些成效,我们就更容易坚持下去。

在正常情况下,强健的自我效能是一项宝贵的财富。有时它能成为一个自我实现的预言:充满信心地期待成功会让你眼前的障碍消失。

斯坦福大学商学院的研究人员研究了微妙的非言语行为如何影响人们对彼此的感知。他们指出,当人们伸展自己的肢体,占据大量空间时,他们就被认为占据了主导地位,或者说具有控制力。相反,当他们收紧肢体,占用尽可能少的空间时,他们就被认为是顺从的。

我们无意识地知道,当别人对成功抱有很高的期望时,我们就会给他们让路。我们会服从他们的意志——在控制多巴胺的驱动下,他们的自我效能得到了完全的表达。

为了实现一个目标而形成的关系被称为代理关系,它由多巴胺来控制。在这种关系中,其他人是你的延伸,是帮助你实现目标的代理人。

我们在社交活动中建立的关系主要是代理关系,这类关系通常会给双方都带来利益。为了享受社会交往本身而形成的关系则叫亲和关系。与另一个人在此时此地经历的简单的快乐,和当下神经递质(如催产素、血管升压素、内啡肽和内源性大麻素)有关。

代理关系的建立是为了控制环境,以尽可能多地从中获取可利用的资源,这是控制多巴胺掌管的领域。尽管我们认为控制是一种积极的,甚至是有些侵入性的活动,但也不一定。多巴胺不关心如何获得某种东西,它只是想得到它想要的。

欲望多巴胺会促进毒瘾,让人追求快感,但收获的多巴胺刺激越来越少,同样,有些人的控制多巴胺如此之多,这使他们对成就上瘾,因而无法体验当下的满足。

这些人身上表现出一种失衡效应,这是聚焦未来的多巴胺和聚焦现在的当下神经递质之间的失衡。他们想要逃避当下的情感和感官体验。对他们来说,生活关乎未来,关乎进步,关乎创新。尽管他们的努力带来了金钱甚至名声,但他们总是不开心。不管做了多少,他们都觉得不够。

ADHD最常见于儿童,这是有原因的。额叶负责控制多巴胺的活动,它是发育得最晚的脑区,直到一个人结束青春期进入成年期之后,它才与大脑的其他部分完成连接。控制回路的工作之一是限制欲望回路,因此冲动控制与ADHD相关。当控制多巴胺很弱时,人们会去追求他们想要的东西而不考虑长期的后果。

对ADHD最常见的治疗药物是哌甲酯和苯丙胺,这两种兴奋剂可以促进大脑中多巴胺的分泌。

用科学术语来说就是“相关性”并不意味着“因果关系”——仅仅因为两件事被一起发现并不一定说明其中一件事导致了另一件事。

对多巴胺系统控制能力极强或者极弱的人可以做出改变。患有ADHD的人通过药物治疗和心理治疗,有时只需等待几年时间就能有显著改善。

多巴胺的生成不受良心的约束。相反,在欲望的滋养下,它是狡猾的源泉。它被激发时,会抑制内疚感这种当下的情绪。它能够激励人们做出不懈的努力,但在追求的过程中不能避免使用欺骗甚至暴力手段。

A Philosophy of Software Design

《A Philosophy of Software Design》

作者 John Ousterhout

为什么要关注软件的复杂度

从开发的视角来看,软件设计遇到的最基础的问题就是解构功能:如何将一个复杂的问题分解成能够被独立解决的小问题。这是一个熵减的过程。而从软件整体的视角来看,恰恰相反,随着加入的功能越来越多,维护的人员规模越来越庞大,是一个复杂性逐渐升高的过程。从另外一个角度说,软件开发时最大的一个限制就是如何去理解我们已经创造的这个系统。

代码写出来是给人读的。机器执行只认机器码,代码写的再好也没用。但是软件系统除了运行以外,还有一个作用是能让除了写代码的你以外的人看懂。代码复杂度越低,从另外一个角度说,系统的鲁棒性也越强。因为有越多的人能读懂你的代码,review你的代码,代码中潜在的bug也越容易被发现。所以,作为开发者,我们的工作不仅是编写我们自己维护更轻松的代码,更要是编写所有人维护更轻松的代码。

如何降低软件整体的复杂度,作者在文中提到了两种方法:

  • 让代码更加简洁明了。这个也有一个著名的KISS原则:Keep It Simple and Stupid。比如,忽略一些特殊的cases。
  • 将复杂性封装在黑盒,通过接口提供易用的功能。这种方式也被称作模块化设计。在这种情况下,局部系统的复杂性并不会显著增加整体系统的复杂性。

复杂度的表现

复杂度可以有三种表现形式:

  • Change amplification:如果一个简单的变更需要我们在多个不同的地方修改相同的代码时,这时复杂度的第一个表现;
  • Cognitive load:第二个复杂度的表现是开发者要完成一项任务,他需要了解多少前置知识。这个需要花的时间越多,潜藏忽略的信息就越多,完成的任务里存在bug的可能性越大;有时候,某种方法可能需要更多简单的代码实现,但它可能是更好的方法,因为它能降低其他开发者的心智负担。
  • Unknown unknowns:第三个表现就是完成功能需要修改某处代码,但是这部分代码十分隐蔽,看起来与要完成的功能都毫无关联。这种情况是最糟的。因为前两种情况都可以通过花费更多的精力来解决,但是Unknown unknowns在于你根本没有意识到这一点。可能直到bug出现了才发现这个问题。

一个好的系统设计是明了清晰。两种情况会显著增加系统的复杂性:

  • 依赖过多,表现在代码不能被独立地理解和修改,必须先要搞明白或者修改另外一块代码;
  • 代码晦涩难懂,出现这种情况绝大部分是因为文档的不完善。不过,优秀的设计需要的文档会更少,如果代码需要大量的文档,通常也说明设计存在一定的问题。

如何避免复杂度增高

在开发过程中,要始终秉承一个思路:==我们的首要目标不仅仅是开发迭代一个功能,而是产出一个优秀的设计,这个设计正要能满足我们的功能需求==。这是一种更高层次地,从战略地眼光去看待软件开发。如果我们仅仅关注眼下的功能,一味地追求效率,留给后来者的很可能是一个烂摊子,俗称“屎山”。这种方式是非常短视的。

要做到这一点,就需要我们在开发中不断迭代系统的设计,使系统更符合当下的需求。作者建议花费总开发时间的10%-20%去改善系统设计,一方面不会过多地影响整体进度,另一方面也对后续的开发有着非常积极的意义。

当然,对于雇主来说,最好的降低开发成本的方式是雇佣优秀的工程师,相比平庸的工程师,他们的价钱更高点,但是能极大地提高生产效率。

设计深模块

所谓的深模块指的是模块里面尽量包括更多的复杂性,然后通过简单的接口暴露给用户。 这样做的目的是减少模块之间的依赖。

image-20220319190303080

模块由两部分组成:接口和实现。接口包括了开发者想要使用这个模块所需知道的所有信息,即模块能干什么。接口不仅仅是传参,返回值,还包括了接口的注释,错误信息等等。

实现包括了模块为了实现这个承诺所有的代码,即怎么做的。

接口尽量简单,这样能减少模块给系统其他部分带来的复杂度。实现需要包括尽可能多的功能,可能有些人的想法是将每个功能都独立成一个模块,这样的缺点是整个系统的模块数增多,导致模块间的依赖也变多了,反而增加了复杂度。合理的方式应该是把相近的功能尽可能的合并到一个模块中。

如果考虑到有些用户对模块有定制化的需求,最好的办法也是通过默认值等方式,让最通用的case尽量简单,同时提供一些自定义修改的参数。

减少Errors的定义

在模块中,过多地返回定义地errors其实是一种懒惰地行为。因为很多时候,模块里不知道怎么处理错误,调用者也不会知道怎么处理错误。反而让调用者需要考虑到各种异常case,增大了代码的复杂度。如果模块有太多的异常需要处理,会增加接口的复杂性,也就是上面说的浅模块。

减少Errors的几种方法:

  1. 最好的方式是定义一个没有errors需要处理的API,这是最能简化软件的方式;
  2. 第二种方法是能够让errors在模块内部消化,不对外暴露;
  3. 第三种方法是聚合多个异常,抛出一个统一的异常,这样也能减少调用者的代码量;
  4. 第四种方法就是打印错误信息,直接crash程序。这些异常通常不值得处理,并且也很难处理,发生的概率也很低。

设计第二种方案

设计第二种方案是从设计的角度降低复杂度的方式。好的设计能从根本上降低软件的复杂度。软件设计很难,所以大多数时候我们的第一个想法并不一定是最好的设计。考虑多个可能性,对比他们之间的优劣,选择最好的一个,或者将他们取长补短组合起来,形成新的方案。

注释

写注释的过程,也是一个改善系统设计的过程。好的注释能够给软件质量带来很大的提升。

要不要写注释主要取决于两点:

  1. 函数是否足够简单,用户能一眼看出实现的功能;
  2. 函数名称和函数声明是否能够表达出函数的功能。

如果不能达到这两点之一,那么注释就是必要的。不能因为不想写注释而把函数拆成多个简单的接口,增加系统的复杂度。

注释能够携带一些代码内看不到的信息。这些信息可能是设计者写代码的想法,有什么考虑因素。这些是在代码中无法体现的。注释本身也是抽象的一部分,对于复杂函数的注释,也更容易让用户了解接口的功能,以及检查接口的实现是否和设计者所期望的一致。

写注释最好的时间是在写代码之前。注释是对代码的总结,而不是简单的重复。

Summary of Design Principles

Here are the most important software design principles discussed in this book:

置身事内

《置身事内:中国政府与经济发展》

作者 兰小欢

前言 从了解现状开始

所以对于常见数据,如直接来自《中国统计年鉴》或万得数据库中的数据

第一章 地方政府的权力与事务

要理解政府治理和运作的模式,首先要了解权力和资源在政府体系中的分布规则,既包括上下级政府间的纵向分布,也包括同级政府间的横向分布。

第一节 政府治理的特点

图1-1描绘了中国的五级政府管理体系:中央—省—市—县区—乡镇。

在乡以下的村落,则实行村民自治,因为行政能力毕竟有限,若村落也建制,那财政供养人口又要暴涨一个数量级。

一方面,维持大一统的国家必然要求维护中央权威和统一领导;另一方面,中国之大又决定了政治体系的日常运作要以地方政府为主。

中国共产党对政府的绝对领导是政治生活的主题。简单说来,党负责重大决策和人事任免,政府负责执行,但二者在组织上紧密交织、人员上高度重叠,很难严格区分。

大多数地方部门都要同时接受“条条”和“块块”的双重领导。

制度设计的一大任务就是要避免把过多决策推给上级,减轻上级负担,提高决策效率,所以体制内简化决策流程的原则之一,就是尽量在能达成共识的最低层级上解决问题。

若是部门事务,本部门领导就可以决定;若是经常性的跨部门事务,则设置上级“分管领导”甚至“领导小组”来协调推进。

在任何体制下,权力运作都受到两种约束:做事的能力及做事的意愿。前者取决于掌握的资源,后者取决于各方的积极性和主动性。

第二节 外部性与规模经济

影响行政区划的首要因素是“外部性”,这是个重要的经济学概念,简单来说就是人的行为影响到了别人。在公共场合抽烟,让别人吸二手烟,是负外部性;打流感疫苗,不仅自己受益,也降低了他人的感染风险,是正外部性。

一件事情该不该由地方自主决定,可以从外部性的角度来考虑。若此事只影响本地,没有外部性,就该由本地全权处理;若还影响其他地方,那上级就该出面协调。

按照经典经济学的看法,政府的核心职能是提供公共物品和公共服务,比如国防和公园。这类物品一旦生产出来,大家都能用,用的人越多就越划算——因为建造和维护成本也分摊得越薄,这就是“规模经济”。但绝大部分公共物品只能服务有限人群。

但教材内容却不受物理条件限制,而且外部性极强。

第一个重要因素是人口密度。

第二个重要因素是地理条件。

第三个重要因素是语言文化差异。

理解了方言和文化的多样性,也就理解了推广普通话和共同的文化历史教育对维护国家统一的重要性。

另一个曾长期困扰边界公共治理的问题是环境污染,尤其是跨省的大江、大河、大湖,比如淮河、黄河、太湖等流域的污染。这是典型的跨区域外部性问题

下级之间一旦出现了互相影响、难以单独决断的事务,就要诉诸上级决策。反过来看,各级政府的权力都是由上级赋予的,而下放哪些权力也和外部性有关。在外部性较小的事务上,下级一般会有更大决策权。虽然从原则上说,上级可以干预下级的所有事务,但在现实工作中,干预与否、干预到什么程度、能否达到干预效果,都受制于公共事务的外部性大小、规模经济、跨地区协调的难度等。

撤县设区扩张了城市面积,整合了本地人口,将县城很多农民转化为了市民,有利于充分利用已有的公共服务,发挥规模收益。很多撤县设区的城市还吸引了更多外来人口。(21)这些新增人口扩大了市场规模,刺激了经济发展。

第三节 复杂信息

所以有信息优势的一方,或者说能以更低代价获取信息的一方,自然就有决策优势。

所以上级虽然名义上有最终决定权,拥有“形式权威”,但由于信息复杂、不易处理,下级实际上自主性很大,拥有“实际权威”。维护两类权威的平衡是政府有效运作的关键。若下级有明显信息优势,且承担主要后果,那就该自主决策。若下级虽有信息优势,但决策后果对上级很重要,上级就可能多干预。但上级干预可能会降低下级的工作积极性,结果不一定对上级更有利。

下级通常有信息优势,所以如果下级想办某件事,只要上级不明确反对,一般都能办,即使上级反对也可以变通着干,所谓“县官不如现管”;如果下级不想办某事,就可以拖一拖,或者干脆把皮球踢给上级,频繁请示,让没有信息优势的上级来面对决策的困难和风险,最终很可能就不了了之。即使是上级明确交代的事情,如果下级不想办,那办事的效果也会有很大的弹性,所谓“上有政策,下有对策”。

信息优势始终是权力运作的关键要素。

汉弗莱爵士YYDS

衙门就像车,来办事就像坐车,当官的是骡子,我们才是车把式,决定车的方向。

获取和传递信息需要花费大量时间精力,上级要不断向下传达,下级要不断向上汇报,平级要不断沟通,所以体制内工作的一大特点就是“文山会海”。作为信息载体的文件和会议也成了权力的载体之一,而一套复杂的文件和会议制度就成了权力运作不可或缺的部分。

私企从理论上讲信息传递效率要比体制内的工作要高,但现在很多大公司部门间各种扯皮,反而信息传递效率低下

获取和传递信息需要花费大量时间精力,上级要不断向下传达,下级要不断向上汇报,平级要不断沟通,所以体制内工作的一大特点就是“文山会海”。作为信息载体的文件和会议也成了权力的载体之一,而一套复杂的文件和会议制度就成了权力运作不可或缺的部分。

所谓权力,实质就是在说不清楚的情况下由谁来拍板决策的问题。

第四节 激励相容

如果一方想做的事,另一方既有意愿也有能力做好,就叫激励相容。

所有面临双重领导的部门,都有一个根本的激励机制设计问题:到底谁是主要领导?工作应该向谁负责?

对于更宏观的工作,比如发展经济,涉及方方面面,需要地方调动各种资源。激励相容原则要求给地方放权:不仅要让地方负责,也要与地方分享发展成果;不仅要能激励地方努力做好,还要能约束地方不要搞砸,也不要努力过头。做任何事都有代价,最优的结果是让效果和代价匹配,而不是不计代价地达成目标。

激励相容原则首先要求明确地方的权利和责任。

其次是权力和资源的配置要制度化,不能朝令夕改。无论对上级还是对下级,制度都要可信,才能形成明确的预期。

第五节 招商引资

这种“混合经济”体系,不是主流经济学教科书中所说的政府和市场的简单分工模式,即政府负责提供公共物品、市场主导其他资源配置;也不是简单的“政府搭台企业唱戏”模式。而是政府及其各类附属机构(国企、事业单位、大银行等)深度参与大多数生产和分配环节的模式。在我国,想脱离政府来了解经济,是不可能的。

第一节 分税制改革

公众所接触的信息和看到的现象,大都已经是博弈后的结果,而缺少社会阅历的学生容易把博弈结果错当成博弈过程。

成功的政策背后是成功的协商和妥协,而不是机械的命令与执行,所以理解利益冲突,理解协调和解决机制,是理解政策的基础。

分税制是20世纪90年代推行的根本性改革之一,也是最为成功的改革之一。改革扭转了“两个比重”不断下滑的趋势(图2-2):中央占全国预算收入的比重从改革前的22%一跃变成55%,并长期稳定在这一水平;国家预算收入占GDP的比重也从改革前的11%逐渐增加到了20%以上。改革大大增强了中央政府的宏观调控能力,为之后应付一系列重大冲击(1997年亚洲金融危机、2008年全球金融危机和汶川地震等)奠定了基础,也保障了一系列重大改革(如国企改革和国防现代化建设)和国家重点建设项目的顺利实施。分税制也从根本上改变了地方政府发展经济的模式。

第二节 土地财政

这部分税是谁交呢?土地使用者?意思是房地产开发商在缴纳了土地使用权转让费用后,还需要承担其他的税务费用么?一类是直接和土地相关的税收,主要是土地增值税、城镇土地使用税、耕地占用税和契税,其收入百分之百归属地方政府。

土地转让虽然能带来收入,但地方政府也要负担相关支出,包括征地拆迁补偿和“七通一平”等基础性土地开发支出。

地方政府本来也不是靠卖地赚钱,它真正要的是土地开发之后吸引来的工商业经济活动。

2001年所得税改革后,中央财政进一步集权,拿走了企业所得税的六成。从那以后,地方政府发展经济的方式就从之前的“工业化”变成了“工业化与城市化”两手抓:一方面继续低价供应大量工业用地,招商引资;另一方面限制商住用地供给,从不断攀升的地价中赚取土地垄断收益。这些年出让的城市土地中,工业用地面积约占一半,但出让价格极低:2000年每平方米是444元,2018年是820元,只涨了85%。而商业用地价格增长了4.6倍,住宅用地价格更是猛增了7.4倍

这就是内卷

如果竞争不能让资源转移到效率更高的地方,那这种竞争就和市场竞争不同,无法长久地提高整体效率。

枪炮、病菌与钢铁

《枪炮、病菌与钢铁》

作者 贾雷德·戴蒙德

致我的中国读者

物理学家、化学家和分子生物学家告诉我们,唯一严谨的科学研究方法是进行可操纵的实验室实验

开场白 亚力的问题

几乎所有的儿童发展都强调:童年的刺激和活动有助于心智发展,不可逆的心智障碍与童年时的刺激不足有关。

各族群的历史循着不同的轨迹开展,那是环境而非生物差异造成的。

世界技术发展的共通模式反倒更容易理解。食物生产手段让农民生产出食物盈余,因此农业社会可以供养全职的技术专家,他们不用亲自耕作,只要专注于发展技术。

第一部分 从伊甸园到卡哈马卡

第一批走出非洲的人类祖先是直立人,其化石证据是在东南亚的爪哇岛发现的“爪哇人”(Java man)。

今天西伯利亚与阿拉斯加之间浅浅的白令海峡在冰期由于海面的升降,有时是海峡,有时则是宽广的洲际陆桥。

第2章 历史的自然实验

一般而言,政治单元越大,人口密度越高,技术和组织就越繁复

人口密度与政治单元大小的差异对波利尼西亚各地的社会有何影响?经济生活仍非常简单的岛屿要么人口密度低(如查塔姆群岛上的狩猎—采集社群),要么人口数量少(小环礁上的社群),要么二者皆是。在这种社会,家家户户自给自足,经济上几乎不需要专业分工。经济专业化是在面积较大、人口密度较高的岛屿发展出来的

第3章 卡哈马卡的冲突

阿塔瓦尔帕的被俘是现代历史上最大冲突中的决定性时刻,因此令人玩味不已。但这一事件之所以能引起更广泛的关注,是因为使得皮萨罗虏获阿塔瓦尔帕的种种因素,也在现代世界中许多殖民者和土著的冲突中起了作用。可以说,阿塔瓦尔帕被俘为我们了解世界史打开了一扇窗。

皮萨罗的武力优势在于西班牙人的枪炮、刀剑和马匹。而阿塔瓦尔帕的军队作战时没有骑乘任何动物,武器也只有石头、铜器、木棒、狼牙棒、斧头,加上弹弓和其他拼凑起来的武器。这种悬殊决定了美洲土著等族群与欧洲人交锋时的命运。

阿塔瓦尔帕之后成为印加皇帝的曼科(Manco),其麾下最骁勇善战的是尤潘基(Quizo Yupanqui)。1536年,尤潘基率军在利马发动突袭攻打西班牙人,然而对方只派出两支西班牙骑兵就把他们打得落花流水,尤潘基和手下的将领都被杀,全军覆没。另一支26名骑兵组成的队伍则在库斯科击败了曼科亲率的精锐。

较有免疫力的入侵族群把传染病带给其他没有免疫力的族群。天花、麻疹、流感、斑疹伤寒、腺鼠疫等已在欧洲蔓延的传染病,反倒成了欧洲人征服世界各地族群的助力。

皮萨罗成功的直接原因包括基于枪炮、钢铁武器和马匹的军事技术,来自欧亚大陆的传染病,欧洲的海事技术,中央集权的政治组织,以及文字。

第二部分 食物生产的兴起与扩散

食物生产对枪炮、病菌和钢铁的发展而言,是间接的前提条件。因此,从各大洲族群从事农牧的地理条件可看出日后的命运。

通过驯化动植物比狩猎—采集方式产出更多食物,从而增加人口密度,这是作物和家畜对人口直接的影响。间接一些的影响,是此类食物生产方法需要人们定居下来,这种生活方式促成了人口密度的增加。

作物和牲畜的有无,从根本上解释了为何帝国、文字、钢铁武器最早在欧亚大陆出现,而在其他地方较晚甚至没有出现。

第5章 历史上的有与无

所有生物体内的碳元素中,都含有固定比例的放射性碳14原子。生物死亡后,就不再从外界吸收碳元素,体内已有的放射性碳14原子仍继续衰变,半衰期约5 700年,生物死后大约4万年,其体内碳14的量就低到难以测量,或者难以和晚近时期混入的少量含碳14的遗存分辨了。

利用碳14测年法的第二个问题,就是大气中碳14与碳12的比例实际上并不恒定,而是在不同的时间段内有波动,因此基于比例恒定假设的计算结果必然存在系统性的小误差,必须加以校正。

在有些地区,生产食物的手段完全是独立发展出来的。这些地区在外来作物与动物输入之前,自行驯化了很多本土的作物与动物。这种地区目前只有5个我们有翔实的证据:西南亚(或称近东或肥沃新月地带)、中国、中美洲(墨西哥中部、南部以及邻近的中美洲地区)、南美洲的安第斯山脉(或许还包括邻近的亚马孙盆地)和美国东部

食物生产方面取得先机的族群,在迈向枪炮、病菌和钢铁的路途上,领先群雄。其结果就是历史上一连串“有”与“无”的冲突。

第6章 下田好,还是打猎好?

人类最近1万年的历史彰彰在目的事实,就是人类生计的变迁,主流是从狩猎—采集转变成食物生产。因此我们必须问的是:哪些因素让食物生产显得有利,使其他的生计类型都失色了?

第一个因素是可获得的野生食物越来越少。

第二个因素是,随着可驯化的野生植物变多,驯化植物的回报越来越多

影响狩猎—采集和农业消长的第三个因素,是生产食物的技术(例如采收、处理和储藏)不断改进。

第四个因素是人口密度上升与食物生产兴起的双向关联。

接受食物生产是一种自催化的过程,也就是在一个正回馈循环中不断自我催化的过程,这个过程开启后就会加速。

明白了食物生产与人口密度的这种双向关联,就可以解释这样一种矛盾状况:食物生产增加了每英亩土地上可食用卡路里的数量,但食物生产者的营养状况不如被他们取代的狩猎—采集者。之所以有时会出现这种状况,是因为食物增产的速度稍稍落后于人口增加的速度。

食物生产者社群的人口密度很高,凭数量优势就足以驱逐或消灭狩猎—采集者,更别提其他优势了(包括技术、病菌和职业军人)。

只有当地理或生态屏障将食物生产者拦在外面,或使得适用于当地的食物生产技术难以传入的时候,狩猎—采集者才有可能一直到近现代都在适于农牧的土地上保持原有的生活方式。

第7章 杏仁的前世今生

这些作物多半是自花传粉,直接把有利的基因传给下一代,不必和其他较没有价值的植物杂交,坏了自己的种。

谷物和豆类相比,这些作物的缺点是至少得种植3年才可能有收成,盛产期则必须等待10年之久。因此,只有在一地长住的人才有可能种植这些作物。这些最早的果树和坚果树还容易栽种,插枝甚至撒下种子就长出来了,晚期才被驯化的树木可没这么简单。插枝还有个好处,也就是保证后代和亲代一模一样。

谷物的优点有长得快、碳水化合物含量高,每公顷可收获多达1吨的食物。因此,谷物在今天人类摄入的卡路里中占了超过半数。今日世界的12种主要作物中,谷物就有5种:小麦、玉米、稻米、大麦和高粱。很多谷物蛋白质含量低,但这种缺陷可由豆类来补足。豆类的25%是蛋白质,黄豆更高达38%,谷物和豆类是均衡饮食不可或缺的。

第8章 是苹果的问题,还是印第安人的问题?

现代世界作物年产量的80%是由十几种植物贡献的。这十几种“重量级”的作物如下:谷物有小麦、玉米、稻米、大麦和高粱,豆类有黄豆,块根或块茎类为马铃薯、木薯、甘薯,糖分的来源则是甘蔗、甜菜,水果如香蕉。

小麦、大麦的天生优势和墨西哥类蜀黍的明显劣势,大概就是欧亚社会和新大陆社会发展差异的要因。

肥沃新月地带的第三大优势,就是雌雄同株自花传粉的植物比例很高,这些植物偶尔也行异花传粉。

大多数的野生植物是雌雄同株异花传粉,或是雌雄异株——这种生殖生物学的现象给早期农民添了很多麻烦,因为他们选择一种突变的植物栽种后,其子代往往因和其他植株杂交而失去原来的特色。因此,大部分的作物来自野生植物中小部分行雌雄同株自花传粉者,或经无性生殖产生者(如用根来种植以复制亲代基因)。

野生单粒小麦、二粒小麦和大麦这三种的蛋白质含量很高,为8%~14%,相形之下,东亚的首要作物稻米和新大陆的玉米则蛋白质含量少,营养问题比较严重。

农业最早在肥沃新月地带发端,主要是“八大始祖作物”之功,它们是属于谷物的二粒小麦、野生单粒小麦、大麦,属于豆类的兵豆、豌豆、鹰嘴豆、苦野豌豆,属于纤维作物的亚麻。在这八种作物之中,只有亚麻和大麦的野生种分布超出了肥沃新月地带和安纳托利亚地区;有两种始祖作物的分布范围很窄,鹰嘴豆只在土耳其东南部,二粒小麦的分布范围则限于肥沃新月地带。因此,肥沃新月地带驯化当地现成的野生植物就足以发展农业,无须仰赖外地引入的作物包。有两种始祖作物无法在肥沃新月地带以外的地方被驯化,主要原因是它们只在肥沃新月地带有。

在食物生产兴起前,人类大抵以野生物种为食,因此掌握的关于野生动植物的知识特别丰富。最早的农民承袭了这样的知识——几千年来和大自然亲密生活、观察而累积下来的经验。因此,有价值的物种似乎不大可能逃过早期农民的眼睛。

其他领域也是一样的道理

能优先获得引进的新作物和家畜(或者在文化上乐意接受新作物和家畜)的族群就可扩张版图,没有门路或意愿接受的族群自然遭到淘汰。

肥沃新月地带登峰造极,新几内亚和美国东部则乏善可陈。肥沃新月地带野生动植物的驯养可谓轻而易举,不但驯化了许多物种,其中品种多产而优良者比比皆是,而且种类繁多。结果得以发展出精密的粮食生产业,促使人口更加稠密,进而迈入有先进技术和复杂政治组织的现代世界,同时携带可以消灭其他族群的传染病。

事实上,这个地表的各大洲上有成百上千互相竞争的社会,有些比较开放,很能接受新事物,有些则趋向保守。接受新的作物、家畜和技术的,就能日益精进,领袖群伦,人口数目远远超过那些不愿接受新事物的族群,接着便向后者大举入侵,甚至将之连根拔起。