Linux 收包和发包流程

流程图

From 《Understanding Linux Network Internals》

image-20220128172744059

image-20220129171450456

收包流程

TL; DR

image-20220129171450456

  • 收包NET_RX_SOFTRQ的软中断处理函数是net_rx_action
  • net_rx_action中会调用网卡驱动注册的poll回调函数处理
  • poll回调函数将数据帧从网卡ring buffer中取出,构造skb:
    • 运行xdpdrv上的bpf program,得到action result
    • 如果是XDP_PASS,构造skb,并初始化skb中一些metadata字段
  • 调用内核的GRO和RPS处理流程
  • 进入__netif_receive_skb_core,处理skb:
    • 运行xdpgeneric上的bpf program,得到action result
    • 如果是XDP_PASS,遍历ptype_alldev->ptype_all,进行抓包处理
    • tc ingress 处理sch_handle_ingress
    • 查找ptype_basedev->ptype_specific,交由对应的三层协议栈回调函数处理

NAPI

**NAPI的思想是从完全的中断收包模型,改用中断和polling混合。**如果内核在处理旧的数据帧时,收到了新的数据帧,网卡设备没有必要再触发一个中断。内核继续处理设备input queue里的数据(该设备的interrupt禁止了),在队列为空时重新使能中断。

从内核的角度,NAPI有如下的优势:

  • 降低CPU的负载(更少的中断)
  • 更多的设备处理公平性

以ixgbe网卡为例,描述下NAPI处理流程。

注册

ixgbe驱动在初始化中断向量时会调用netif_napi_add初始化NAPI,==ixgbe_poll函数注册到napi结构体,并将napi加入到设备的napi_list内==:

/**
 * ixgbe_alloc_q_vector - Allocate memory for a single interrupt vector
 * @adapter: board private structure to initialize
 * @v_count: q_vectors allocated on adapter, used for ring interleaving
 * @v_idx: index of vector in adapter struct
 * @txr_count: total number of Tx rings to allocate
 * @txr_idx: index of first Tx ring to allocate
 * @xdp_count: total number of XDP rings to allocate
 * @xdp_idx: index of first XDP ring to allocate
 * @rxr_count: total number of Rx rings to allocate
 * @rxr_idx: index of first Rx ring to allocate
 *
 * We allocate one q_vector.  If allocation fails we return -ENOMEM.
 **/
static int ixgbe_alloc_q_vector(struct ixgbe_adapter *adapter,
                int v_count, int v_idx,
                int txr_count, int txr_idx,
                int xdp_count, int xdp_idx,
                int rxr_count, int rxr_idx)
{
	/* ... */

    /* initialize NAPI */
    netif_napi_add(adapter->netdev, &q_vector->napi,
               ixgbe_poll, 64);
}

中断处理函数

ixgbe驱动收到中断后,会调用ixgbe_msix_clean_rings

make命令和编译

Makefile

标准格式

target:dependencies1 dependencies2 ...
   recipe

.PHONY: clean
clean:
   -rm ...

注意事项

  • 运行make时如果没有指定target,那么make会构建Makefile中的第一个target
  • 通常情况下,目标名即生成的文件名。如果一条规则的目标文件存在并且该文件比它所有的依赖都要新,那么make会跳过recipe;如果目标文件不存在,那么目标文件的 timestamp 为开始的时间;否则timestamp为相应文件的修改时间。
  • 每次运行 make clean,”clean“中的recipe都会被执行,因为clean文件永远都不会被创建。(可以使用 .PHONY 创建伪目标使Makefile可读性更高)
  • recipes必须用tab缩进
  • 可以通过并行的方式运行recipes:make -j 4(指定并行的任务数)
  • 如果没有指定规则,Make会自动化创建规则。例如,本地有一个C文件”program.c“,当运行 make program时,Make会自动编译生成 program

变量

  • $@ 目标文件
  • $^ 所有的依赖文件
  • $< 第一个依赖

头文件

环境变量

  • C_INCLUDE_PATH C语言头文件路径
  • CPLUS_INCLUDE_PATH C++ 头文件路径

搜索路径

#include<>

  1. 先搜索 -I 指定的目录
  2. 然后搜索gcc的环境变量 CPLUS_INCLUDE_PATH
  3. 最后搜索gcc的内定目录
    1. /usr/include
    2. /usr/local/include
    3. /usr/lib/gcc/x86_64-redhat-linux/4.1.1/include

#include ""

  • 搜索当前目录,#include<>方式不会搜索当前目录

动态库

环境变量

  • LD_LIBRARY_PATH 动态链接库搜索路径
  • PKG_CONFIG_PATH .pc文件(package config)文件搜索路径

搜索路径

  1. 首先在环境变量 LD_LIBRARY_PATH 所记录的路径中查找
  2. 在程序链接时指定的 rpath 中查找,可以 readelf binfile | grep RPATH
  3. 然后从缓存文件/etc/ld.so.cache中查找。这个缓存文件由/sbin/ldconfig命令读取配置文件/etc/ld.so.conf 之后生成(也可以在 ld.so.conf.d 目录下增加 .conf 文件,里面写入库路径,在 ld.so.conf 中 include ld.so.conf.d/.conf )
  4. 如果上述步骤都找不到,则到默认的系统路径中查找,先是/usr/lib然后是/lib

编译参数

-shared

指定生成动态连接库

邓小平时代

《邓小平时代》

作者 傅高义

导言 这个人和他的使命

毛确实犯了严重的错误,但在邓小平看来,更大的问题是导致这些错误的制度缺陷。政治体系控制到每家每户的做法搞过了头,造成了恐惧和主动精神的丧失;对经济体系的控制也搞过了头,导致的是失去活力的僵化。中国的领导人究竟怎样才能做到既维持国家稳定,又为社会松绑?

作为最高领导人,邓小平并不认为自己的任务是提出新思想,他认为自己的职责是掌控设计和落实新体制的颠覆性的过程。他要承担最后责任,做出正确判断。

吉米·卡特总统曾评论道,邓小平跟苏联领导人不一样,他有一种内在的自信,这使他能直奔实质问题。他从不纠缠于过去的错误或谁要对其负责。他经常打桥牌,就像他打牌时的表现一样,他只想把摸到手的牌打好。他能认识并接受权力现实,在可能的范围内做事。

从那时起,通过和这些中国革命的大战略家交往,邓小平培养起一种看问题的独特眼光,能够从一个“统领全局”的高度思考如何将理论加以落实、如何用理论来影响社会。

邓小平1974年会见一个美国的大学代表团时说:“我没有上过大学,但我一向认为,从我出生那天起,就在上着人生这所大学。它没有毕业的一天,直到去见上帝。”邓小平终其一生都在不断地学习和解决问题。

第1章 革命者、建设者、改革者,1904—1969

还在莫斯科时,21岁的邓小平就萌生了一些对于一个年轻人而言非同寻常的想法,而且这些想法终生未曾改变。不妨举个例子,他在1926年8月12日的课堂作业中写道:“集中的权力要自上而下地行使。服从上级命令是绝对必要的。允许多少民主,要视周围的环境变化而定。”

第2章 放逐与回归,1969—1974

中国领导人应当颂扬毛泽东,继续尊敬他。但是在解释毛泽东思想时,不应把它当作僵化的意识形态,而应看作对时代环境的成功适应,这样理解毛的思想可以为毛泽东的接班人提供适应新环境的回旋余地。

十大后的21名新政治局委员中有4个激进派——王洪文、张春桥、江青和姚文元;他们虽然不是一个一起工作的小团体,但有着相似的观点,后来变成了臭名昭著的“四人帮”。

第3章 整顿,1974—1975

周恩来作报告时,很多人大代表都为他痛苦的表情落下了眼泪;念完报告后,他们全体起立,向他热烈鼓掌达数分钟之久。这种情感上的反应,是他们向这位临终前的领导人表达的敬意,他把自己的一生奉献给了党和国家,工作出类拔萃;他在“文革”中还保护了他们中间很多人。

邓小平看来,从组织的可靠性上说,一个领导班子要优于一名领导人,不管后者多么能干。一名领导人说不定会出事,但如果是一个小班子,一旦出了问题,其他人可以随时接过工作。理想的安排是,领导班子的成员不但能提供必要的全面领导,而且能掌握各自分管领域的专业知识,例如工业、文化和政法等等。大单位的领导班子可以有七八个成员,小单位也许只需要两三个人。对于领导应当如何开展工作,要给予他们足够的活动空间,只要他们能完成上级下达的目标即可。

这充分显示了邓小平的特色:讲清大局,说明为什么需要做某些事,把注意力集中在任务上面,打好思想基础,为撤换无所作为的干部争取公众支持。

德不配位

实际上,王洪文曾做过一系列的努力以承担起主持党的日常工作的职责;有些了解他的人觉得,他并没有参与“四人帮”犯下的罪行。但是北京城里有众多有经验的优秀干部,像王洪文这样一个年轻的新贵,突然之间蹿升到更有经验、更能干的干部之上,很难赢得一个高层领导人不可缺少的尊重。

第4章 向前看,1975

对周荣鑫的批判甚至比对邓小平的批判还要严厉。他在1975年12月不断挨批,直到病倒被送进医院。尽管如此,他仍被从医院揪出来参加了50多场批斗会。最后,周荣鑫在1976年4月12日上午的批斗会上昏倒并于次日黎明前去世,年仅59岁。中国的教育改革也一时归于沉寂。

第5章 靠边站,1976

追悼会过后,按周恩来遗孀邓颖超的请求,由她陪伴周恩来的骨灰前往机场。在那里,工人将骨灰送上一架飞机,从空中撒向他奉献了一生的中国大地。

第7章 三个转折点,1978

他再次建议首先看大局,然后再想局部;先讲大道理,再讲小道理。

如何鼓励新思想,同时尽量减少保守派干部的抵制;如何既尊重毛泽东,又要摆脱他的路线;如何既保持乐观,又要避免以后的失望;如何既维护稳定,又开放经济;如何既给予地方干部灵活空间,又能维护国家的发展重点。

在12月13日下午中央工作会议的闭幕会上,邓小平一开口就直奔主题:“今天我主要讲一个问题,就是解放思想,开动脑筋,实事求是,团结一致向前看。”邓小平称赞这次工作会议是1957年以来党内最好、最开放的一次讨论会。他说,要允许大家说出对真实情况的看法。“必须有充分的民主,才能做到正确的集中。当前这个时期,特别需要强调民主。因为在过去一个相当长的时间内……民主太少。……应当允许群众提一些意见,即使有个别心怀不满的人,想利用民主闹一点事,也没有什么可怕……最可怕的是鸦雀无声。”邓小平无论在当时还是任何时候,都没有提倡过不受限制的言论自由。

中国的两次大灾难——“大跃进”和“文革”,是由于制度造成的,这种制度允许一人统治,容不下不同的声音。因此中国需要建立法制,这样的话一个人不管能力有多大,都不能由他一个人说了算。法制一开始可能不健全、不完善,但可以逐步使其变得公正合理。

第8章 为自由设限,1978—1979

此外,鼓吹自由民主的人,和他们的批评者一样,对国外的情况缺少体验,知之甚少。他们开始质疑毛泽东思想和马克思主义理论,又看到另一些国家在经济上远比中国发达,于是对西方民主表现出几近天真的信仰。

尽管《人民日报》没有报道西单的事情,但报社里支持民主墙的人在1979年1月3日发表了一篇大胆的社论《发扬民主和实现四化》,其中说,“让人说话,天塌不下来。……真正可怕的倒是听不到不同的声音。……害怕人民讲话,实际是软弱和神经衰弱的表现。……安定团结和发扬民主并不是对立的。”

在这篇重要讲话中,邓小平阐明了不容挑战的四项基本原则,在可接受和不可接受的事情之间划定了界限。写作不能挑战以下四点:(1)社会主义道路;(2)无产阶级专政;(3)共产党的领导;(4)马克思列宁主义和毛泽东思想。

作为一名遵守纪律的党员,胡耀邦于4月3日在务虚会闭幕式的讲话中表示完全拥护邓小平坚持四项基本原则的立场。但是,在务虚会第一阶段听过胡耀邦讲话的人都知道,胡耀邦本人更希望看到一个较为开放的社会,他相信国家不会因为人们更自由地表达不同观点而陷入混乱。

尽管邓小平和胡耀邦都致力于现代化,仍然合作共事,但是在如何划定自由的界限上,他们的分歧却愈演愈烈,最终导致邓小平在1987年决定将胡耀邦撤职。

第9章 苏联—越南的威胁,1978—1979

毛泽东会见外国人时散发着帝王般的自信,谈论哲学、历史和文学,纵论天下大势。周恩来在国内外会见外宾时,则表现得博学而儒雅,他态度亲切,体贴入微,对客人照顾得十分周到。他既谈大事,也愿意讨论细节。

邓小平的战略分析起点和毛泽东是一样的:分清主要敌人,广结盟友与之对抗;分化敌人的盟友,使其疏远敌人。

邓小平要应付的一个棘手问题是,与日美恢复关系时,如何尽量减少对中朝关系的伤害。邓小平不想让朝鲜更加靠近苏联。因此他决定,上策是事先向朝鲜人做出充分解释,不使他们事后感到意外。

即使越南攻入柬埔寨,中国也不会像朝鲜战争时帮助朝鲜那样出兵。邓小平担心陷入其中难以自拔。他决定以军事进攻的方式“给越南一个教训”,拿下几个县城,表明中国可以继续深入,然后迅速撤出。这也可以减少苏联派兵增援越南的风险。越南将由此明白,苏联并不总是能靠得住的,因而要收敛在这个地区的野心。通过攻打越南而不是苏联,中国也可以向苏联表明,它在该地区建立武力的任何做法都是代价高昂的。

1963年马来西亚取得独立后,马来人害怕拥有强大政党的华人可能主导他们的政府。为了避免这种情况,人口的75%是华人、当时仍是马来亚一部分的新加坡在1965年遭到遗弃,被迫变成了一个独立国家。

第10章 向日本开放,1978

中国与这个相邻岛国2200年的交往史中,邓小平是第一个踏上日本国土的中国领导人,也是第一个拜会日本天皇的中国领导人。

第11章 向美国开放,1978—1979

为了实现同美国建交这个目标,邓小平准备在很多问题上采取灵活的立场。然而在一个问题——台湾问题——上,就像毛泽东和周恩来一样,他有着不可动摇的“原则”。除非美国与台湾断交,终止《美台共同防御条约》,撤出全部驻台美军,他不会和美国建交。

这也是埋下了一个伏笔

会谈结束时,邓小平提醒说,如果卡特总统公开宣扬对台售武,中方将不得不做出反应,任何公开争论都将有损于中美建交的重大意义。

就像美国人对邓小平做出了过度反应一样,很多中国人也对邓向美国的开放做出了过度反应。有些中国人想一夜之间就能得到一切,没有意识到在能够享受经济增长的成果之前,中国需要做出多少改变。还有一些人急于引进中国的现实还难以适应的制度和价值观。在中国和西方道路之间找到适当的平衡并不容易,但是对外开放带来了中西的杂交优势和思想的复兴,它们随着时间的推移将重新塑造中国。

他出访是因为他要为自己的国家完成一项任务。他认为自己有责任改善与邻国的关系,向日本和美国进一步敞开国门。这既是为了遏制苏联,也是为中国的现代化争取帮助。现在他已经完成了自己的使命,履行了自己的职责,他可以转向另一些重要任务了。邓小平在当时的13个月里5次出访国外。虽然他又活了18年,但是从此再也没有迈出国门。

第12章 重组领导班子,1979—1980

邓小平对他所说的党内民主的含义做了解释:党员有意见可以提出来,这有助于解决问题;党的领导听取各种意见后,一旦做出决定,党员就要执行。

邓小平年轻时极其敬佩毛泽东,几十年忠诚地为他工作,却被他抛弃了两次,受到公开批判。他的长子由于毛泽东的红卫兵而造成下肢终身瘫痪。如果说他对毛无怨言,那不合情理;尽管邓小平性格刚强,但他也有常人的爱憎之情。不过,在对待历史问题上他并不显露任何个人感情。

文件的第一稿于1980年2月完成。据说邓小平对它并不满意,他把胡耀邦、胡乔木和邓力群叫去,建议他们:(1)要对毛主席的历史作用做出积极评价;(2)本着“实事求是”的精神,说明毛在“文革”中的错误;(3)得出一个全面的结论,使人民能够团结一致向前看。在这三条中,第一条“最重要、最根本、最关键”。不管他本人因毛泽东的批判和决定受过多少罪,他对起草人说,要讲清楚党和人民必须继续坚持毛泽东思想。

第13章 邓小平的统制术

据说北京的三类人有着融洽的关系:(1)“团派”,即过去在共青团工作过的干部;(2)“太子党”,指中共高干子女,其中一些人还有同窗之谊;(3)“秘书帮”,指给高级干部当过秘书的人。但邓小平愿意跟所有这三类人共事,只要他们能干、忠于上级、不搞帮派活动。他鼓励其他人也这样做。

第14章 广东和福建的试验,1979—1984

蛇口由此成为中国第一个允许境外直接投资的地方,也是中国第一个允许境外人士对位于内地的公司进行决策的地区。

当呼吸化为空气

《当呼吸化为空气(双语版)》

作者 保罗·卡拉尼什

推荐语

你在死亡中探究生命的意义, 你见证生前的呼吸化作死后的空气。 新人尚不可知,故旧早已逝去: 躯体有尽时,灵魂无绝期。 读者啊,趁生之欢愉,快与时间同行, 共赴永恒生命! ——福尔克·格莱维尔(布鲁克伯爵)《卡伊利卡》

第一部 当我身强体健时

我学习的最大动力,不是成就感,而是一种求知欲,我非常认真地想要探究,是什么让人类的生命充满意义?我仍然认为,文学是精神生活的最高境界,而神经系统科学则探索大脑最为优雅的规律。

我和不同的人与事物建立联系,赋予自己生命丰富的意义。

不过,没有改变的,是在鲜血和沮丧之间极富英雄主义精神的责任感。在我看来,这才是一个医生真正的形象。

那一刻我满脑子都是塞缪尔·贝克特(19)的隐喻,正与这对走到生命尽头的双胞胎相合:“有一天我们诞生,有一天我们死去,同样的一天,同样的一秒钟……他们让新的生命诞生在坟墓上,光明只闪现了一刹那,跟着又是黑夜。”(20)

在那儿的我突然意识到,那些集合了生命、死亡与意义的问题,那些所有人在某个时候都必须要面对的问题,通常都发生在医院里。当一个人真正遇到这些问题,这就变成了实践,有着哲学和生物学上的双重意义。人类是生命体,遵循自然法则,很遗憾的是,这些法则就包括一条:熵总是在增大的,生命是无常的。疾病,就是分子的顺序打乱了;生命的基本要求是新陈代谢,而死亡,就是新陈代谢的终止。

开诚布公地与别人联结,并不意味着要一下子打开天窗把亮话全说了,而是要注意病人的接受程度,站在他们的立场,尽量引导他们走得远一些。

脑中有些区域被看作是几乎不可侵犯的,比如大脑皮质运动中枢,如果遭到破坏,就会引起身体某些部位瘫痪。但最最神圣而不可触碰的皮质,是控制语言的。一般来说都在左脑,被称为韦尼克区和布罗卡氏区,一个理解语言,一个产生语言。布罗卡氏区的损伤会导致写和说的能力缺失,尽管病人对语言的理解能力依旧正常。韦尼克区的损伤会让人失去对语言的理解能力,说起话来语无伦次,句不成句,毫无意义。如果两个区都遭到损伤,病人就变成了一座孤岛,人性最核心的部分永远消失。

在要求很高的领域工作的医生们,见到病人的时候,都是他们最艰难的时候,也是最真实的时候,因为他们的生命与个性受到威胁。医生们的职责,包括去了解病人的生命因为什么而宝贵,而值得一活,并好好计划,可能的话,要尽可能保留这些东西——如果不行的话,就让病人去得安详体面。

我们背负着无形的枷锁,肩负着生死攸关的责任。也许病人鲜活的生命就握在我们手中,但死神总是最后的胜者。就算你是完美的,这个世界却不是。秘诀在于,支撑我们继续下去的秘诀在于,明白打从发牌的那一刻起,你已必输无疑,你会手滑,你会判断失误,但即便如此也要拼尽全力为病人奋战到底。你永远无法到达完美的境地,但通过不懈的努力奋斗和追求,你能看见那无限接近完美的渐进曲线。

第二部 至死方休

人一旦遭遇顽疾,最需要小心的,是价值观的不断变化。你努力思考自己到底看重些什么,答案也会接踵而至。

自己已经经历了悲痛的五个阶段,就是老生常谈的“否认→愤怒→讨价还价→消沉→接受”。

我独有的顿悟:医者的职责,不是延缓死亡或让病人重回过去的生活,而是在病人和家属的生活分崩离析时,给他们庇护与看顾,直到他们可以重新站起来,面对挑战,并想清楚今后何去何从。

科学的方法论是人们的双手创造出来的,因此无法涉及一些永恒的真理。我们建立科学理论,是为了组织和掌控这个世界,将各种现象局限在可控的范围内。科学的基础,就是各种现象的重复出现以及人为制造的客观性。这是很强的后盾,让科学有能力去建立并阐释各种关于物质和能量的主张,但也让科学知识无法解释人类生命中存在主义的本能特性。

人类生命本身就是独特的、主观的、无法预测的。也许在组织和研究重复出现的经验主义数据时,科学提供了最有用的方法,但另一方面,科学却无法用来解释人类生命中最为核心的方面:希望、恐惧、爱、恨、美、妒忌、荣誉、软弱、奋斗、痛苦和美德。

毫无疑问,我们每个人最终能看到的,都只不过是生命的局部。医生看到一个方面,病人看到另一个方面,工程师、经济学家、潜水采集珍珠的人、酗酒的人、有线电视修理工、牧羊人、印度乞丐、牧师……看到的都不尽相同。没有什么人能完全包揽人类所有的认知。认知产生于我们所创造的,我们彼此之间的关系,以及我们与世界的关系之中,永远不可能完整全面。而终极真理凌驾于一切之上,在其存在之处,播种者与收割者可以一同欣喜狂欢,正如礼拜天的《圣经》布道的最后。因为,终极真理之中,有句话说得清楚明白:“那人撒种,这人收割。”(16)我派你去收获你并未付出努力的东西;辛苦劳作都是别人的,你分享了他们的劳动果实。

在往后的生命中,你会有很多时刻,要去回顾自己的过去,罗列出你去过的地方,做过的事,对这个世界的意义。我衷心希冀,遇到这样的时刻,你一定不要忘了,你曾经让一个将死之人的余生充满了欢乐。在你到来之前的岁月,我对这种欢乐一无所知。我不奢求这样的欢乐永无止境,只觉得平和喜乐,心满意足。此时此刻的当下,这是我生命中最重大的事。


使用 小悦记 导出 | 2022年6月26日

算法的力量:人类如何共同生存?

《算法的力量:人类如何共同生存?》

作者 杰米·萨斯坎德

导论

我们都需要搭建一种智识上的框架,来帮助我们清晰且批判性地思考数字创新的政治后果。这本书希望使用政治学理论的思想和方法,来促成此种框架的形成。

有些事情看上去是无法言传的,或者干脆是无法想象的,那是因为常用概念库还没有发展出对它们的阐释。正如维特根斯坦(Ludwig Wittgenstein)所说:“我语言的有限性就是我世界的有限性。”

在工业革命期间,动力织布机、长筒袜和精纺机的发明就曾威胁要取代熟练的纺织工人的工作。一些被称为卢德派(Luddites)的工人发动了遍及英国乡村的猛烈攻击,他们在离开时摧毁了新机器。我们仍然使用“卢德派”一词来形容那些抵制具有破坏性的新技术到来的人。

卢德派的例子中可以看出,创新的经济后果常常要求政治给予回应,而新技术也会引发道德上的挑战。

所有政治秩序都建立在协调、合作和控制的基础之上。缺乏三者中的任何一个,组织集体生活都是不可能的。

确切地说,统计学的功能性定义,即“让先验的独立的事物结合在一起,从而将现实性和一致性赋予更大、更复杂的事物”,与政治的目的基本一致,一个是数值的抽象,一个则基于人类的现实。

退后一步,现在提出一个为阅读整本书提供指导的暂定假设已成为可能:我们如何收集、存储、分析并交流信息,本质上就是如何组织它们——这与我们组织政治的方式密切相关。因此,当一个社会开发出新奇的信息技术和通信技术时,我们便可以预见,政治上的变革也将到来。

第一章 日益强大的系统

下个世纪,政治将被三大发展所转变:日益强大的系统、日益综合的技术和日益量化的社会。

机器学习,借用多明戈斯的话来说,就是自动化本身的“自动化”。

机器学习算法有三种“学习”方法。在监督学习(supervised learning)中,人类程序员设置了一系列确定的结果并为机器提供反馈,告诉它们其判断是否与确定的结果相合。相形之下,在无监督学习(unsupervised learning)中,机器将获得数据,然后自行寻找其范式。因此,一个无监督学习的机器可以用来“发现知识”,即建立人类程序员完全没有意识到的连接。在强化学习(reinforcement learning)中,机器被给予“奖励”和“惩罚”,从而告诉它做得是否正确。机器实现了自我完善。

然而,我们在本书的不同地方都能见到,对有缺陷的现实世界数据的依赖也能对机器学习系统造成破坏。微软于2016年3月23日在Twitter上推出了其人工智能聊天机器人Tay。Tay可以模拟一个19岁的女孩说话,并能从与其他Twitter用户的交流中学习。在它面世16小时后,Tay被禁止继续运行,因其发布了一系列含有种族主义和色情内容的煽动性推文,其中还有一张希特勒的照片,照片上打着“前方高能”的说明,还有一条推文说:“去他妈的机器人爸爸!我就是这样一个淘气的机器人!”Tay从Twitter上其他用户的这种交流方式中“学习”了此类说法。这个例子表明,人类在社交媒体上如何表达,机器学习也能有样学样。

第二章 日益综合的技术

数字技术的发展还有五种潜在趋势:更无处不在,连接性更强,更敏感,更具构成性,更具沉浸性。

区块链的社会意义在于它可以在陌生人之间实现安全交易,而无须可信的第三方中介,如银行、信用卡公司或国家。它意图解决计算机科学(和政治学)中长期存在的问题:在没有通常所说的“人际关系”的人与人之间,如何建立起“信任”之类的东西。

现代机器人科学仍然是一个充满挑战的领域,部分原因在于“莫拉韦克悖论”(Moravec’s paradox),即(也许与预期相反)高层次推理只需要少量的计算,但低层次的感觉运动技巧则需要大量的计算资源。

第三章 日益量化的社会

数据“是对某种事物的描述,它使对这些事物的记录、分析和重组成为可能”。将现象转化为数据的过程被称为“数据化”。

四个因素促成了这个过程。第一,越来越多的社会活动通过数字系统或数字平台展开,可供收集的数据就更多了。第二,在过去五十年中,存储数据的成本每两年左右就减少一半,而其密度却增加了5000万倍。第三,算力的爆炸式增长使我们有能力处理存储的内容。第四,数字信息的复制几乎没有边际成本,它们可以相当廉价地复制数百万次。这些因素共同解释了为什么从基于印刷的信息系统过渡到数字化系统的过程中就产生了如此大规模的数据爆炸。

数据科学家一直在努力地通过清洗、处理和组织等方式,将原始数据转化为信息,然后对它们进行分析和解读,再将其转化为知识。

Facebook的商业价值主要在于它从用户处收集的数据,这些数据用途十分广泛,从定向广告到搭建面部识别人工智能系统。

日益量化的社会是一个更容易通过机器和控制机器的人来检查和分析的社会。

第四章 像理论家一样思考

我们正试图使用一种为昨天的世界创造的语言去掌握今天的世界。而且,过去的生活似乎更加反映了人类的天性,原因很简单,过去的生活是人类语言的更好反映。 ——安托万·德·圣艾克絮佩里,《风沙星辰》(1939)

过去,科学技术的进步帮助人类扫清了一些世界上的未解之谜。20世纪初,马克斯·韦伯的写作将现代性的中心化特征定义为“除魅”(Entzauberung),译为“启蒙”(de-magification)或“祛魅”(disenchantment)。这个过程就是理性观察取代魔法和迷信,成为解释生活中神秘事件的方法之过程。我们这代人也许是体验了相反效果的第一代——世界的“再神秘化”。随着时间的流逝,我们会发现自己被具有超凡力量的、微妙而复杂的技术越发紧密地包围起来;其中的大多数我们都几乎无法理解,更不用说控制了。阿瑟·克拉克(Arthur C. Clarke)说:“任何足够先进的技术都无法与魔法区分开来。”诚如斯言,若数字生活世界要为我们准备一场魔术表演,它必将与我们所见过的一切截然不同。

对于某些人来说,政治等同于政府:立法者决定社会集体目标并制定能实现这些目标的法律和政策的过程。根据这种观点,政治是在政客和公务员的控制下,在议会、政府大楼和市政厅里发生的事情。普通公民也能通过投票或行动主义或多或少地参与政治(可以这么理解),这取决于国家性质和公民意愿。

一种观点认为,政治无处不在,不仅存在于公共领域,还存在于私人领域:朋友和同事之间、家庭内部;俱乐部、团队和宗教机构;在政府中,也在艺术、建筑、科学、文学中,并嵌入语言本身。只要是存在合作、冲突或控制的地方,政治就存在;或是在所有某些特定的社会关系可能被另作安排的领域,从职场政治到性政治,政治也存在。这种观点认为,政治不是一种可以避免或忽略的东西。

阻止某事发生或被改变的最可靠方法,就是干脆不要把它提上日程。

我对政治的定义如下: 政治指的是人类的集体生活,包括我们为什么共同生活,如何安排和约束我们的集体生活,以及我们可以或应该以何种方式来有区别地安排和约束这种集体生活。 该定义不以任何特定形式的政治制度为前提。实际上,它所假设的只是(a)人类将继续集体生活,(b)人类的集体生活能够以不止一种方式组织起来,(c)约束集体生活的方式不止一种。这些都是最微小的假设,能让我们以一种开放的心态继续前行。

语言共同体在概念使用上的差别是至关重要的。当一个英国人听到“自由”一词时,他可能会想到弱化政府对经济和公民社会的干预的支持者。而如果是一个美国人听到“自由”一词,结果可能恰恰相反,他更可能想到主张扩大福利国家的社会主义者。

概念分析就是试图去了解当人们在谈论政治时,他们在谈论什么的过程。这就包括使政治话语经得起细致的调查和质疑,弄清定义和区别,从而使其变得清晰、一致、简单。

政治言论的目的经常就在于欺骗、叫停争论、混淆视听和迷惑别人;用奥威尔的话来说:“撒谎听起来很真实,让谋杀受人尊敬,为空中的风赋予固态的外观。”

概念分析还涉及试图理解概念的道德内涵及其意义。

“规范分析”即试图判断政治领域中是非善恶的方法,与道德哲学和伦理学紧密相关。我们对彼此负有何种正义的责任?我们是否有义务参与公共生活?我们享有做何种事情的自由,什么事情是应被禁止的?违反法律在任何情况下都是不可接受的吗?以上这些就是“规范性问题”。规范分析使我们能够通过反思和争论来确定原则,从而指导我们如何共同生活。

规范性理论用于阐明特定制度、政策或原则的道德正误。

语境分析是用来找出概念从何而来、为何能出现、在它们的构思过程中被赋予了何种含义,以及其含义是如何随着时间改变的。

第五章 代码就是力量

强者如何统治弱者?答案是施加权力,它是政治秩序的基石和政治概念的教父。

我认为,未来的权力将采用三种形式。第一种是武力(第六章),第二种是审查(第七章),第三种是感知控制(第八章)。数字技术将逐渐成为这三种形式的主要来源。

我们不妨从“对某人有控制权”(having power over someone)和“有权力做某事”(having power to do something)的简单区分入手开始讨论。控制权(power over)是这样一种权力:如老板告诉他的下属去完成一项任务,或是学校老师要求其学生安静地坐着。这是关于管理者要求被管理者遵守规则的过程。相反,行动权(power to)并不意味着“管理者和被管理者”的体系,它指的是一种能力、才能,或是某人得以做某事的能力,例如,沿着街道行走或是举起沉重的杠铃。这是一个广义的定义。有了行动权的某人或某个团体在自身强大的同时并不需要剥夺相应对象的权力。

若A对B有控制权,即A有能力迫使B做某些B原本不会去做的事情。