mirror of
https://github.com/cheetahlou/CategoryResourceRepost.git
synced 2025-11-20 08:03:43 +08:00
del
This commit is contained in:
@@ -0,0 +1,208 @@
|
||||
<audio id="audio" title="热点观察 | 我看Facebook发币(上):区块链、比特币与Libra币" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/5c/85/5c31ff0bab5cc35e23f617e45659d585.mp3"></audio>
|
||||
|
||||
你好,我是七牛云许式伟。
|
||||
|
||||
Facebook(脸书)于6月18日发布了其加密数字货币项目白皮书。该数字货币被命名为 Libra(天秤座),象征着平衡与公正。
|
||||
|
||||
此前,BBC 报道说这个数字货币叫 GlobalCoin(全球币),但后来被纠正说这只是Facebook员工在内部对其的昵称。
|
||||
|
||||
不管是叫 Libra,还是 GlobalCoin,其实都透露出了Facebook的雄心壮志。
|
||||
|
||||
今天的Facebook 坐拥 27 亿的活跃用户,相当于全球1/3的人都在用 Facebook,这是一个比微信大得多的数字社群(微信月活为 11 亿,差不多全中国人民都在用微信)。
|
||||
|
||||
**我之所以叫它“数字社群”,而不叫“数字王国”,是因为用科学的态度来谈,“国家” 这样的称呼没法随便用,“国家”得符合国家需要具备的特征。**
|
||||
|
||||
国家有哪些特征?
|
||||
|
||||
武装是大家能够很快想得到的,国家得有自己的军队,但是数字世界毕竟是个虚拟世界,军队似乎没啥意义。
|
||||
|
||||
发行货币是国家另一个至关重要的权力。现在,拥有 27 亿人口的 Facebook 要发币,这意味着它离真正意义上的 “数字王国” 又靠近了一步,至关重要的一步。
|
||||
|
||||
整个世界将因此发生翻天覆地的变化。
|
||||
|
||||
今天我想借此机会,谈谈区块链和数字货币背后的社会需求动因、逻辑以及它们将产生的巨大影响。
|
||||
|
||||
我们的内容将会分为上下两部分,如下:
|
||||
|
||||
- 我看 FB 发币(上):区块链、比特币与 Libra 币;
|
||||
- 我看 FB 发币(下):深入浅出理解 Libra 币。
|
||||
|
||||
## 区块链
|
||||
|
||||
我们先从区块链谈起。
|
||||
|
||||
介绍区块链技术的文章已经有很多了,我们今天不谈技术实现的细节。简单说,**它是一个分散式防篡改的数字账本。**
|
||||
|
||||
但是,区块链到底有什么用?它想解决什么样的问题?
|
||||
|
||||
有人说,区块链是为了“去中心化”。
|
||||
|
||||
那么“去中心化”是趋势么?**互联网的趋势是“中心化”,而不是“去中心化”。**
|
||||
|
||||
效率为先。如果一个事情可以两个人干更好,那么最终的结果就是应该两个人去干,而不会是十个人去干,这是最朴素的经济学原理。
|
||||
|
||||
而微信和 Facebook 的成功,也证明了中心化是趋势。人们之所以向往着去中心化,是因为人天然对垄断有抗拒之心,被人生杀予夺的感觉怎么想都不太美妙。
|
||||
|
||||
**人们因为效率而中心化,因为垄断而去中心化**。所以是一个中心还是几个中心,这是自然平衡的结果。
|
||||
|
||||
历史告诉我们,**它选择的“去中心化**”是开辟疆土。前有哥伦布发现新大陆,今有“钢铁侠”马斯克寻求火星殖民。这才是真正的“去中心化”,找到全新的盐碱地去开拓。
|
||||
|
||||
地球相比于整个宇宙,只不过是一粒尘埃。这样的“中心化”,又算得了什么呢?
|
||||
|
||||
当然也有人说,区块链是为了“去中介”。
|
||||
|
||||
那么“去中介化”是互联网的趋势么?互联网会减少尽可能多的中间环节,但是不会“去中介”。
|
||||
|
||||
每个人有他自己的专长。把自己不擅长的事情交给中介,这是特别自然的一件事情,我们为中介的专业性买单。
|
||||
|
||||
互联网让中介可以 24 小时为你服务,远程为你服务。这些都是以前没法完成的。这会导致什么呢?一些中介会茁壮成长,变成行业中的关键节点。它也有可能会顺带合并掉上下游的一些分工,让服务链条更短。
|
||||
|
||||
那么,区块链价值到底是什么?
|
||||
|
||||
**我认为,区块链本质上是一种“共识机制”,或者说“契约机制”。**分散式防篡改的数字账本,保障的核心是事实的不可抵赖。这对双方形成共识是极大的效率提升。在大部分情况下,没有共识往往是因为争议的双方对事实的认定不同。
|
||||
|
||||
**从这个认知来看,一些鼓吹“区块链是下一个互联网基础设施”的人们可以洗洗睡了。**
|
||||
|
||||
区块链不会重造一个新互联网底层,但它最有可能重塑金融与供应链。
|
||||
|
||||
## 比特币
|
||||
|
||||
比特币,数字货币的鼻祖,区块链技术的第一个杀手级应用。
|
||||
|
||||
为什么会出现比特币?它希望解决什么样的需求?
|
||||
|
||||
**其一,希望能够解决政府动不动就发币,让你手头货币凭空贬值的问题。**
|
||||
|
||||
这应该是比特币创始人中本聪的本意。所以比特币发币的机制是挖矿,谁挖到就算谁的。成本是购买计算机的成本和运行计算机挖矿所消耗的电费。
|
||||
|
||||
从这个角度看,比特币不能类比法币,它没有法币的发行者,国家信用作为背书。它更像是黄金,基于资源本身的稀缺性作为背书。
|
||||
|
||||
**其二,希望能够解决经济全球化带来的货币跨境流通问题。**
|
||||
|
||||
这是数字货币的价值投资者们的共同期望。
|
||||
|
||||
随着互联网技术在全球范围的不断普及,越来越多的生意被放到了网上。旧的商业文明可以一言以蔽之:一手交钱,一手交货。而建立在互联网之上的新商业文明,我们一手下单付款,一手收钱发货,足不出户,货物就通过便捷的物流服务送到了你手上。
|
||||
|
||||
但建立在互联网之上的新商业文明,遭遇了国家与国家之间的边界挑战。这体现在以下两点。
|
||||
|
||||
**其一,汇率。**我们都知道,法币与法币的兑换是有损的。你把钱从 A 币换成 B 币,再把 B 币换回 A 币,钱就少了。
|
||||
|
||||
**其二,关税。**一个商品从一个国家买到另一个国家,成本就变高了。刨除物流成本带来的影响因素外,最大的额外代价就是关税。
|
||||
|
||||
物流成本是可以解决的。贸易全球化带来的结果是生产全球化。
|
||||
|
||||
以前国与国之间的贸易,主要成分在成品贸易,这个成品的原料和加工的零件都来自于同一个国家,我生产出成品后销往世界各地。
|
||||
|
||||
但是现在国与国之间的贸易,主要成分在原料与零部件的交易。这意味着供应链已经越来越全球化,成品的生产很可能就在销售地,或者靠近销售地。
|
||||
|
||||
这样的好处,一方面当然是产品品质的需要,可以全球寻求优质供应商。另一方面可以极大程度地降低物流成本。原材料的运输相比成品来说,更易于利用规模化效应降低单位运输成本。
|
||||
|
||||
关税问题,也是可以国家之间协调解决的。超低关税,乃至最终零关税是历史发展的必然。
|
||||
|
||||
那么汇率问题呢?
|
||||
|
||||
这个问题不好解决。提供兑换货币服务的金融机构不可能是免费服务,他们自身的成本也在那里。只要有跨境交易,就有“用什么结算货币”的问题,随之而来的就有结汇的问题。
|
||||
|
||||
除非,有一种世界货币,它能够流通于各个国家,被各个国家的市场所接受。
|
||||
|
||||
解决汇率问题最好的办法当然是不用换汇。
|
||||
|
||||
比特币能够满足这个需求么?
|
||||
|
||||
不能。比特币有这样一些软肋,我列在了下面。
|
||||
|
||||
**其一,没法按需增发,价格波动大。**货币发行量最理想的情况是按市场需求来。如果市场对货币的需求量暴增,但是又没法增加货币发行量来调节,必然会导致货币增值。
|
||||
|
||||
比特币就属于这种情况,它只能靠挖矿来增加,而没有其他手段。那么一旦人们对它的需求增加速度超过挖矿速度,就会出现价格暴涨。
|
||||
|
||||
投机性的行为可能会助长这一点。但是从更长远的维度看,比特币的价值与“市场需求量/比特币流通量”成正比。
|
||||
|
||||
**其二,性能低。**比特币基于区块链技术,参与的节点众多。节点多对比特币是有极强的正面价值的,因为参与的节点越多,其被人把控的概率也就越低。
|
||||
|
||||
但是,节点越多,比特币交易的性能也就越低。那么现实中,比特币交易到底有多慢?平均每秒2-3笔交易。
|
||||
|
||||
这意味着,比特币完全无法满足支持世界货币所需的交易频次。
|
||||
|
||||
## Libra 币
|
||||
|
||||
虽然比特币并不满足需求,但数字化的世界货币一定会诞生,只不过是谁的问题,这是贸易全球化决定的。
|
||||
|
||||
Libra 币就是冲着成为世界货币去的。在 Facebook 最近发布的《加密货币项目 Libra 白皮书》中提到:
|
||||
|
||||
>
|
||||
我们的世界真正需要一套可靠的数字货币和金融基础设施,两者结合起来必须能兑现“货币互联网”的承诺。
|
||||
|
||||
|
||||
可见,Libra 币其实不属于 Facebook,只不过是由Facebook 发起的。就像互联网一样,它期望的是一种开放式的架构。
|
||||
|
||||
“互联网”连接了世界上的所有人,但是国与国之间边界导致的“汇率”和“关税”问题,让贸易无法做到真正意义的全球化。
|
||||
|
||||
Libra 币旨在构建“货币互联网”,让贸易真正无国界,它如何做到?我们将在《我看 FB 发币(下):深入浅出理解 Libra 币》这篇文章中进行详细的介绍。
|
||||
|
||||
今天我们重点聊的是 Libra 币将带来什么。
|
||||
|
||||
**第一个问题:Libra 币会不会成功?**
|
||||
|
||||
我认为它会成功。唯一阻碍它成功的因素是美国政府。毕竟它给世界上任何一个国家的人们都带来了一个巨大的变化:
|
||||
|
||||
- 除了本国的法币,还有一个货币能够用于人们之间的日常交易。
|
||||
|
||||
虽然此前已经有比特币也能够做到这一点,但是比特币的低吞吐能力决定了它必然无法成为世界货币。
|
||||
|
||||
Libra 币最直接挑战的是美元的地位。某种意义上来说,在它之前,美元在承担着世界货币的作用。
|
||||
|
||||
但是我认为美国政府会支持 Libra 币。有两个重要的理由支持他们这样做。
|
||||
|
||||
**其一,世界货币一定会产生。**与其让它发生在其他国家,不如发生在美国,由美国人来主导这件事情的发生。
|
||||
|
||||
**其二,美元的物理属性,决定了美元对交易的渗透在非美元区(法币不是美元的地区)只能在线下,无法支持线上交易。**
|
||||
|
||||
但线上交易的比重越来越大,意味着美国需要一个数字货币能够渗透到其他国家。Libra 币刚好满足了这个需求,所以,Libra 币很容易与美元达成结盟。
|
||||
|
||||
一旦美国支持 Libra 币,这件事情就成功了一半。欧洲本来就有欧元,相当于已经有一个自己小范围的世界货币了,货币发行本来就已经和国家政权解绑了。改用 Libra 币带来的冲击并不大。
|
||||
|
||||
搞定了欧美,Libra 币基本上就算成功了。其他地区的国家很难真正去反抗这一潮流。
|
||||
|
||||
为什么?
|
||||
|
||||
不拥抱 Libra 币,意味着放弃由“互联网+Libra币”共同构建的世界自由贸易体系。这对任何一个国家来说,都意味着闭关锁国,放弃经济增长。
|
||||
|
||||
另外搞一个世界货币与之对抗?
|
||||
|
||||
难。货币有很强的网络效应。如果一个国家或地区已经被 Libra 币渗透,另一个货币进来就难了。
|
||||
|
||||
所以如果非要干,最佳的时机是现在。
|
||||
|
||||
假设,另一个世界货币干起来了,全球被分成了两半,一东一西。
|
||||
|
||||
它们之间没有贸易么?贸易用哪个世界币?这带来了新的汇率问题。
|
||||
|
||||
如果可以让企业自由选择,那么这会是大鱼吃小鱼的故事。因此,第二个世界货币很难真正干起来。
|
||||
|
||||
**第二个问题:如果 Libra 币成功的话,它会带来什么影响?**
|
||||
|
||||
最大的变化,是货币的大一统。就像欧洲已经发生的那样,国家政权和货币脱钩,政府再也无法用货币杠杆来宏观调控市场。
|
||||
|
||||
第二个大变化,是交易的透明化。链上的支撑节点都可以看到全球所有的交易往来。虽然 Libra 币是匿名的身份,但是开通 Libra 账户过程在很多国家很可能是实名的。所以某种意义上来说,交易还是会和现实身份对应起来。
|
||||
|
||||
**第三个问题:中国应该怎么应对?**
|
||||
|
||||
这个问题,有点像是中国该不该加入世贸组织(WTO)一样。我的答案是:应该认认真真考虑下如何加入,什么时候加入,加入前应该做好哪些准备。
|
||||
|
||||
## 结语
|
||||
|
||||
总结一下我对 Facebook 发币这件事情的看法。
|
||||
|
||||
- 世界货币一定会诞生,只不过是谁的问题。这是贸易全球化决定的。
|
||||
- 以前大家看好比特币,但是比特币有软肋。其一是波动大,其二是性能低。
|
||||
- Libra 币不属于 Facebook,只不过是由 Facebook 发起而已。它就像互联网一样,是开放式的架构。这也是其他巨头一拍即合,毫不犹豫地去支持的原因。
|
||||
- Libra 币会得到美国政府的支持,并逐步渗透到世界各个地区。它不只是流行于 Facebook 的 27 亿活跃用户,也会流行于其他如 PayPal、Booking 等主流服务。
|
||||
- “互联网 + Libra 币” 将共同构建全新的世界自由贸易体系。
|
||||
|
||||
站在未来看现在,Libra 币将会是极其重大的一个历史节点。我倾向于这样来描绘它的影响:
|
||||
|
||||
>
|
||||
计算机 => 互联网 => Libra 币
|
||||
|
||||
|
||||
货币有着巨大的网络效应,留给后来者的时间窗口极短。我想,我们都应该思考怎么面对这件事情了。
|
||||
@@ -0,0 +1,123 @@
|
||||
<audio id="audio" title="热点观察 | 我看Facebook发币(下):深入浅出理解 Libra 币" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/d3/88/d3563e2eda024006fcaa2ae8ff403888.mp3"></audio>
|
||||
|
||||
你好,我是七牛云许式伟。今天我们接着聊由 Facebook 推动的 Libra 币。
|
||||
|
||||
听到一个陌生概念后,人们往往习惯于把它和自己熟悉的东西做一个类比,方便和他人沟通的时候,用以表达自己的理解。
|
||||
|
||||
那么,和 Libra 最像的东西是什么呢?
|
||||
|
||||
## 货币储备
|
||||
|
||||
有人说,Libra 不就是腾讯的 Q 币么?但是,这种理解仅仅停留在非常表面的层次。两者共同之处,仅仅是因为两者都是一种虚拟币(甚至不能说它们都是数字货币,因为 Q 币是不能称之为数字货币的)。
|
||||
|
||||
首先,Q 币可以用货币购买,但是没法反向兑换现金。最关键的是,腾讯可以自由发行 Q 币,它说有多少就可以有多少,不需要被监管。所以如果 Q 币可以以稳定的价格兑换现金的话,相当于腾讯可以自由印钞票,这显然不会被政府所允许。
|
||||
|
||||
但是 Libra 并不是这样。Libra 可以自由兑换,另外 Facebook 也不能够自由发行 Libra 币。发行新的 Libra 币时,有两大核心约束。
|
||||
|
||||
**其一,发行新的 Libra 币需要保值的资产做为抵押,我们称之为 “Libra 储备”。**什么样的资产可以作为 Libra 储备?被 Libra 协会认可的,稳定且信誉良好的中央银行发行的货币,或者政府货币证券。也就是说,Libra 币锚定的是它认可的“一篮子货币”,而不是某一种货币。
|
||||
|
||||
**其二,由 Libra 协会来发行或销毁 Libra 币。**目前 Libra 协会执行这个动作完全是被动的。Libra 生态中,会有一些被授权的经销商,他们负责 Libra 币的买卖。
|
||||
|
||||
这些授权经销商会按照一定的汇率,以某种被 Libra 协会认可的货币,向 Libra 协会买入 Libra 币。这时,这些用于买入的货币就会成为 Libra 储备。
|
||||
|
||||
当然授权经销商也可能卖出 Libra 币,换成他所期望的某种货币。在这种情况下,被卖出的 Libra 币就会被销毁,相应地, Libra 储备就会减少。
|
||||
|
||||
所以你可以看到,Libra 并没有自己的货币政策,总共有多少 Libra 币完全是由市场的供需决定的。
|
||||
|
||||
关于货币储备更详细的内容,请参阅 “[Libra 储备](https://libra.org/zh-CN/about-currency-reserve/#the_reserve)”。
|
||||
|
||||
## 稳定币
|
||||
|
||||
既然 Libra 不像 Q 币,那么它像什么?比特币吗?
|
||||
|
||||
相比 Q 币来说,Libra 与比特币的确更有比较意义,毕竟它们都是一种数字货币。但是我们在 “[我看Facebook发币(上):区块链、比特币与 Libra 币](https://time.geekbang.org/column/article/102283)” 中,也已经谈到过两者一些根本上的不同。
|
||||
|
||||
如果我们忽略所有的技术细节,单从货币角度来看,比特币和 Libra 最大的区别是价格的波动性。
|
||||
|
||||
通过上面我们对 “Libra 储备” 的介绍,我们很容易知道 Libra 是一种稳定币,它看起来更像是由一些保值资产抵押所形成的 “债券”。而在币圈,大家可能都经常会听到一个词,叫做 “炒币”。
|
||||
|
||||
如果我们细想一下这背后的逻辑,就会知道这个词其实挺神奇的。
|
||||
|
||||
货币的核心价值是什么?
|
||||
|
||||
货币的价值显然不是增值,而是流通。而流通用的货币,最重要的是价格稳定。而币圈则不同,这些各式各样存在的币,现在它们的核心价值变成了 “炒”,这就完全被扭曲了。
|
||||
|
||||
我这么说当然不是认为比特币不好。只不过如果我们真的对比特币好,就应该把关注点放在比特币流通价值的构建上;而不是“喜看币涨”,涨了就奔走相告。
|
||||
|
||||
## 世界货币
|
||||
|
||||
那么,究竟 Libra 最像什么呢?
|
||||
|
||||
我个人认为,虽然目前的实现机制有所不同,但是 Libra 最像的是欧元。欧元的出现,对欧盟国家之间的自由贸易往来发挥了巨大的贡献。
|
||||
|
||||
欧元和 Libra 的初衷是一样的,都是为了构建跨国的自由经济贸易体系。两者不同之处在于,当前 Libra 还没有央行,不能凭空去发行货币。
|
||||
|
||||
凡事都有两面,“世界货币” 同样是有缺陷的。欧债危机导致欧元贬值,这个教训大家还记忆犹新。它告诉我们,一个国家经济出现问题,如果它采用的是独立的主权货币,那么只是导致本国的货币贬值。
|
||||
|
||||
但是 “世界货币” 意味着大锅饭,它会传导到整个经济体,连带整个经济体的货币贬值。
|
||||
|
||||
那么 Libra 会出现自己的央行么?短期当然不会,当前最重要的是流通,是地盘的扩张。但是长远看只要 Libra 成功了,就一定会有。毕竟,没有 Libra 央行,就没有机会解决 “大锅饭” 的问题。
|
||||
|
||||
所以站在更长远的未来看,今天的 Libra 协会,有可能就会是未来的 “Libra 央行”。
|
||||
|
||||
## Libra 协会
|
||||
|
||||
Libra 协会总部位于瑞士日内瓦,协会成员包括分布在不同地理区域的各种企业、非营利组织、多边组织和学术机构。初始协会成员共有28家(如下图),未来计划达到100家。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/f6/36/f609ac75b5fbff59d1cdef49990c6736.png" alt=""><br>
|
||||
加入 Libra 协会,需要支付不低于 1000 万美元来购买 Libra 投资代币,注意,它并不能简单理解为 Libra 币,两者有很大不同,它有很多特殊的权益。
|
||||
|
||||
**其一,整个 “Libra 储备” 的处置权。**比如, Libra 储备到底放在哪里会比较安全靠谱?这是由Libra 协会决定的。但是每个成员是不是都是一票?并不是,票数是由这个成员持有的 Libra 投资代币数量决定的。具体规则,我在下面会讨论。
|
||||
|
||||
**其二,整个 “Libra 储备” 的利息,会被用来支撑 Libra 协会的日常运转。**比如工资和奖金激励,也会用于派发分红。分红会按照持有的 Libra 投资代币的多少来分配。
|
||||
|
||||
**其三,各类事务决策的投票权。**权重按持有的 Libra 投资代币来计算,每 1000 万美元有 1 个投票权,但是为了防止投票权过于集中,任何成员的投票权不能超过总票数的 1%。
|
||||
|
||||
超出部分的投票权将由 Libra 协会的董事会重新分配,比如授予具有社会影响力的合作伙伴(称为 SIP)或研究机构,前提是:他们有能力并致力于验证节点的运作,从而参与治理,并且确实无法作出最低 1000 万美元的投资。
|
||||
|
||||
**其四,运行验证节点。**这一点可以被看作义务,但也可以看作权益。义务角度来说,显然这事是需要 IT 成本的,如果连这都做不到,就会被剔除出去。从权益角度来说,那么多的交易数据都被你拿到了,这是多么有价值的数据。
|
||||
|
||||
关于 Libra 协会储备更详细的内容,请参阅 “[Libra 协会](https://libra.org/zh-CN/association-council-principles/#overview)”。
|
||||
|
||||
## 发展目标
|
||||
|
||||
当前 Libra 的验证节点是有限制的,是许可型的,也就是所谓的 “联盟链”。但是,未来它会向非许可型治理和共识节点运营转变,降低参与的准入门槛,并减少对创始人的依赖。
|
||||
|
||||
Libra 将逐步进行网络的开放,变成所谓的 “公链”。这时,新成员也能够通过投资 1000万美元来自动获得验证节点的运行许可,并持有 Libra 投资代币,从而分享网络权益(但是我估计投票权之类是没有的,只有投资收益)。这部分的详细政策,或许未来才会逐步明朗。
|
||||
|
||||
Libra 协会致力于尽可能减少协会的干预权。比如完全通过市场机制来调节 Libra 币的供需。所以除了说服更多人加入 Libra 协会,协会最重要的工作是确定 Libra 的技术演进路线。
|
||||
|
||||
但这一点真实情况下显然并不会那么理想。货币互联网和互联网不同的是,它管的毕竟是钱。一旦 Libra 网络发展壮大,一些货币相关的治理问题就会暴露出来。
|
||||
|
||||
## 降维打击
|
||||
|
||||
Libra 的影响面绝对超乎大部分人的想象。我们先看看一些具备技术背景的知名互联网公司 CEO 是怎么看的。具体参见下面的截图。
|
||||
|
||||
<img src="https://static001.geekbang.org/resource/image/78/aa/78b46d87ae9809f58ebe40fab3056faa.png" alt=""><img src="https://static001.geekbang.org/resource/image/ce/f4/ce25963fa9847dab74240a63c2967bf4.png" alt="">
|
||||
|
||||
显然无论王兴还是王小川,都高度重视并反复评估 Libra 带来的影响和自己应该采取的行动。
|
||||
|
||||
Libra 带来的打击是全方位的,某种程度上来说甚至是极难抵御的降维打击。我们不妨从以下这些维度看。
|
||||
|
||||
- 弱小国家的货币主权会不会就此被取代?
|
||||
- 中国的汇率管控会不会失效?就算没有失效,会不会变成闭关锁国?
|
||||
- Libra 是否会成为美国取代美元的新货币霸权?
|
||||
- 从企业与企业竞争的角度,这会不会成为 Facebook 对微信、支付宝的降维打击?
|
||||
|
||||
想完影响面想对策。从对策的角度来说无非两种,一是对抗,一是谋求对等权力下的协作。当然,这两条路都不会太容易。
|
||||
|
||||
## 结语
|
||||
|
||||
今天,我们从分析 Libra 的运行机制重新去理解 Libra 币。这里面的关键是:理解 Libra 协会究竟如何工作的。
|
||||
|
||||
我们没有分析 Libra 的技术细节,比如它怎么改变区块链的底层实现机制,又为什么要引入 Move 语言。如王兴所说,评判 Libra 的实现技术好不好,就好比评价美元钞票的印刷技术精细不精细。这事本身是有价值的,但不那么关键。
|
||||
|
||||
为什么我会写这两篇文章?
|
||||
|
||||
站在未来看现在,Libra 币将会是极其重大的一个历史节点。我倾向于这样来描绘它的影响:
|
||||
|
||||
>
|
||||
计算机 => 互联网 => Libra 币
|
||||
|
||||
|
||||
货币有着巨大的网络效应,留给后来者的时间窗口极短。我想,我们都应该思考怎么去面对这件事情了。
|
||||
81
极客时间专栏/geek/许式伟的架构课/延展阅读/用户故事 | 站在更高的视角看架构.md
Normal file
81
极客时间专栏/geek/许式伟的架构课/延展阅读/用户故事 | 站在更高的视角看架构.md
Normal file
@@ -0,0 +1,81 @@
|
||||
<audio id="audio" title="用户故事 | 站在更高的视角看架构" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/51/e5/5173da78209baab60c01b2001c7yy8e5.mp3"></audio>
|
||||
|
||||
>
|
||||
你好,许式伟老师的架构课已经更新了一段时间,不少同学反馈这段时间的学习很有收获,于是我们邀请了Aaron同学来和我们做一次分享,看看他这阶段都是怎样学习课程的,又有哪些收获。今天这节课为加餐,形式和正式的课程内容不同,需要你阅读文稿来学习,好,我们开始吧。
|
||||
|
||||
|
||||
我是 Aaron,一名 Python 软件工程师, 目前主要从事运维开发DevOps工作。
|
||||
|
||||
一般开发的系统是内部使用的运维系统,最近主要的工作就是将产品需要的一些功能嵌入到类似CMDB系统当中,比如SaltStack、ELK(EFK)、Zabbix 等。
|
||||
|
||||
目前,运维自动化的困境是运维研发资源能力的不足,底层自动化的能力可以通过IaaS公有云来解决,但是在OS之上的运维自动化都是通过一些开源工具来解决的。开源工具的引入,加大了维护的难度和复杂度,而且,很多平台的可扩展能力非常薄弱。
|
||||
|
||||
理解这些开源工具的内部实现原理、优缺点,了解可以改善的地方,实现项目的深层次进化,是自己的额外追求。因为这个追求,学习架构设计就很有必要,从架构的思维来看这些迭代了五六年的开源项目,可以看到开源软件开发者的迭代开发流程和思考。发上等愿,结中等缘,享下等福,运维开发在公司偏辅助业务,我希望努力学习基础架构来实现自身价值。
|
||||
|
||||
## 我为什么要学习架构课?
|
||||
|
||||
极客时间推出《许式伟的架构课》的时候 ,我正在工作时间之外学习操作系统、计算机网络等课程。看了这门课的介绍觉得挺好的,知道作者是七牛云的许式伟老师,因为自己工作方向的原因,经常会接触到关于Go语言布道师(许式伟老师)的一些介绍,对于许老师非常崇拜 ,特别是许老师多年前就预测到 Go 语言会称霸云计算这一点,我特别佩服。
|
||||
|
||||
另外,**我也一直希望能借助许老师的视角和高度,来看看架构这件事。**
|
||||
|
||||
如何将用户的需求,一步步分解为程序员要实现的功能点,并展现给用户,这是架构师的职责。设计高可用、高性能、高并发的可靠系统需要匠心,悟心,保持谦和求取的心态。架构思维并不难 ,但是成为优秀的架构师却不易。我很想知道在许老师这样的高度上,他对架构的理解是什么样的。
|
||||
|
||||
我也希望可以通过对专栏的学习,能在工作实践中有所成长,成为优秀的架构师。所以我购买了《许式伟的架构课》,并开始学习。
|
||||
|
||||
## 我是怎样学习专栏的?
|
||||
|
||||
我学习这个专栏没有什么特别之处,无非做到了三点:**反复学习、动手实践、留言打卡坚持。**
|
||||
|
||||
许老师的课程是每周二、五更新,一般情况下我都会在当天先通读一下老师的文章 ,特别好的文章会通读好几遍 ,周末的时候会再拿出来细看 。 平时上下班路上的细碎时间,也会抽空看一次 、听一次来巩固学习。
|
||||
|
||||
具体算下来,整个学习的过程,基本上也和别的同学分享的类似,基本可以读懂的文章,学习两到三次;不是很精通的,云里雾里的,会至少看到五六次;听一遍不够,再看一遍也不行,那就再多读几遍,查看留言,看看其他同学的留言内容,来检验自己是否理解了,问题是否完全解决了。
|
||||
|
||||
许老师专栏中提到的实战项目, 像JS和Golang 的项目 ,**我都要自己仔细敲一遍 ,落实到代码上**。因为如果只是浮光掠影的话 ,不会理解到精髓的。知识还是要下苦工夫才能消化。
|
||||
|
||||
另外,**我基本一直坚持学**。可能很多同学可以看到我在老师课程下坚持留言,因为极客时间的课程我购买了不少,有些跟了一段时间就暂时搁置了,所以我在跟许老师的架构课程之初,就定下了Flag:一定要在老师正式的课程下多留言打卡,虽然留言质量未必很高,但是至少有一种方式可以让我尽量坚持下去。
|
||||
|
||||
## 专栏中最有收获的文章是哪几篇?
|
||||
|
||||
介绍几篇我个人觉得很有收获的文章:
|
||||
|
||||
- 《[01 | 架构设计的宏观视角](https://time.geekbang.org/column/article/90170)》
|
||||
|
||||
很多开发人员对众多系统背后是如何工作的,原理一知半解 ,知其然不知其所以然,成为架构师就是成长为造房子的建筑工程师,需要宏观的全局掌握能力。
|
||||
|
||||
- 《[17 | 需求分析(上)](https://time.geekbang.org/column/article/100140)》和《[18 | 需求分析(下)](https://time.geekbang.org/column/article/100930)》
|
||||
|
||||
为什么要做需求分析呢?一是为了满足用户需求,二是满足边界的需要 ,三是架构设计的需要,防止过度设计, 把简单的事情复杂化。
|
||||
|
||||
如果只是被动接受产品需求,以按图索骥的方式做架构师,是不足以成为顶级架构师的,用户需求的深层理解是很难传递的。
|
||||
|
||||
产品设计过程需要架构师的深度参与,而不是单向的信息传递。产品是桥,一端连接用户需求 ,一端连接了先进的技术。
|
||||
|
||||
产品经理和架构师其实是一体两面,都需要关心用户需求和产品定义。架构师需要三分之一的精力(我目前感觉可能会更多一些)在需求分析上。
|
||||
|
||||
许老师介绍的这些点,都很有价值:
|
||||
|
||||
“心态第一,装着用户,刨根究底,找到根源需求,理清需求,对需求进行归纳整理。需求分析,用户的需求反馈到架构师那里,需要对功能进行拆解,对于部分超前的需求,分期进行实现。”
|
||||
|
||||
- 《[22 | 桌面程序的架构建议](https://time.geekbang.org/column/article/105356)》
|
||||
|
||||
老师对 MVC 的讲解,当时看完了之后感觉到醍醐灌顶,看到下面留言说 ,这一篇文章就值回“票价”,我也是同样的感受。
|
||||
|
||||
后面的我就不一一举例了。
|
||||
|
||||
## 有哪些好的学习方法?
|
||||
|
||||
学习的方法无非就是坚持,坚持,坚持 !夯实基础,夯实基础,夯实基础!
|
||||
|
||||
去年的时候看到一位深度学习的大佬 Lan Goodfellow 的访谈, 说他人工智能本科阶段和博士早期阶段曾经多次咨询吴恩达老师寻求建议。 吴恩达建议他彻底精通这些基础知识和技能 (编程、调试、线性代数、概率论等等), 特别是基础数学。
|
||||
|
||||
以前的他特别不理解这个建议,觉得这些实在是很无聊 ,他以为吴恩达能建议他去学习超实数或者类似的东西 ,实践几年后,他发现老师当时给的建议实在是太正确了。
|
||||
|
||||
学习没什么捷径,不存在什么一蹴而就的高超技术,要真的能稳得住啃那些基础,能沉下心坚持再坚持。
|
||||
|
||||
**夯实基础,坚持下去**,就几个字,做到不易,愿你我共勉。每个开发者都希望能够有银弹,架构设计的其中一种是基础架构,涉及操作系统、分布式系统、嵌入式系统、数据库、计算机网络等,这些都需要扎实的基础作为后盾。研发底层基础设施,这个是自己近期的目标。
|
||||
|
||||
有很多人说 ,第一份工作带给你的能力,眼界,和圈子是非常重要的,一个人的能力决定他的上限,圈子决定了他的下限。
|
||||
|
||||
我对毕业之后的第一份工作没有足够的重视 ,发展不佳,但是非常庆幸参加了许老师的课程, “受益终生”四个字不足以完全表达我的谢意。 希望老师的公司发展蒸蒸日上, 也祝一起在极客时间学习的我们在努力坚持之后会心想事成 !
|
||||
|
||||
平时对外输出文字的机会不多 ,些许胡言,希望能够给大家抛砖引玉,谢谢大家。
|
||||
180
极客时间专栏/geek/许式伟的架构课/延展阅读/答疑解惑 | 想当架构师,我需要成为“全才”吗?.md
Normal file
180
极客时间专栏/geek/许式伟的架构课/延展阅读/答疑解惑 | 想当架构师,我需要成为“全才”吗?.md
Normal file
@@ -0,0 +1,180 @@
|
||||
<audio id="audio" title="答疑解惑 | 想当架构师,我需要成为“全才”吗?" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/4f/94/4fb89e35b975e84c56ba419fc2dea194.mp3"></audio>
|
||||
|
||||
你好,这里是极客时间编辑部。
|
||||
|
||||
不知不觉,“许式伟的架构课”专栏已经更新了3个多月,我们的后台收到了同学们数以千计的留言。许式伟老师每天都在实时关注着留言并回答同学们的问题,同时根据同学们的留言不断优化调整课程的设置。
|
||||
|
||||
老师和同学在留言区的互动也十分热闹精彩,今天我们就精选出一批留言,一起来看一看。
|
||||
|
||||
## 精选问答
|
||||
|
||||
**1.老师好,人精力有限,如果什么都懂,那不是不精了?通才还能做架构师吗?还是“一专多能”,先“专”,精通一样;再“多能”,了解其它技术?**
|
||||
|
||||
答:挺好的问题。架构师绝对不是要把自己打造为全才。架构师掌控全局的核心思想是打通经络,让自己的内力在全身自然流通,浑然一体。在不影响理解的情况下,你需要放弃很多实现细节的专研,但有一天你需要细节的时候,你能够知道存在这些细节,并且快速钻研进去。
|
||||
|
||||
**2.许老师,自己现在已经工作快三年了,想往架构师这个方向走,但现在自己有些迷茫,接触到的技术也算挺多了,但不知道该如何入手架构师,之前您也提到过先广度然后深度,但我想问达到什么算广度够了,怎么进行深度学习?**
|
||||
|
||||
答:架构师核心是把知识串起来,构建一个完整的认知,不留疑惑。大部分知识是不需要深入细节的,只在你需要的时候深入,但深入的时候要很深。
|
||||
|
||||
**3.如何来确定需求中哪些是稳定的?对架构角度,关注需求到什么层次?**
|
||||
|
||||
答:挺好的问题。需求分析的重要性怎么形容都不过分。准确的需求分析是做出良好架构设计的基础。很多优秀的架构师之所以换到一个新领域一上来并不一定能够设计出好的架构,往往需要经过几次迭代才趋于稳定,原因在于新领域的需求理解需要一个过程。除了心里对需求的反复推敲的严谨态度外,对客户反馈的尊重之心也至关重要。
|
||||
|
||||
4.**老师好,我有三个问题。**
|
||||
|
||||
- **现在运维开发基本上都用Go,Python慢慢变少了,Java也少用了……现在运维开发是要学Go吗?**
|
||||
- **架构师要学数据结构和算法吗?很多都说算法是“内功”,中小公司好像学了都基本用不到。**
|
||||
- **现在不是流行Docker+k8s、微服务、DevOps、AI等,那些主流技术都要了解吗?OpenStack云计算这两年基本不讲了,是否不用学习?**
|
||||
|
||||
答:关于你的三个问题,我的意见是下面这样的。
|
||||
|
||||
- 学Go挺好,建议学,生产效率很高的开发工具。
|
||||
- “算法用不到”其实更准确的说法是“想不到”,或者是已经有人实现了你只需要调用,不需要自己实现。但是只有你知道了背后的道理,你才能明白算法对应的限制在哪里,什么情况下应该用什么算法。
|
||||
- 高阶的技术可以按需学,按精力学,更根本的还是要打好基础,这也更有助于你判断是否应该深入学习某些技术。
|
||||
|
||||
5.**“你可以发现,引入了输入输出设备的电脑,不再只能做狭义上的计算(也就是数学意义上的计算),如果我们把交互能力也看做一种计算能力的话,电脑理论上能够解决的计算问题变得无所不包。”**
|
||||
|
||||
**交互能力也看做一种计算能力吗?这句话应该怎么理解呢?这种交互不就是输入和输出?哪有计算?**
|
||||
|
||||
答:广义的计算包含有副作用的函数(有IO的函数)。因为数据交换本身也是计算的需求,否则计算没有办法与现实世界相互作用。任何工具都需要解决现实问题才有用。计算器还有交互按钮呢,并不是只有纯正的计算。
|
||||
|
||||
**6.我要做一个最小机器人系统,需要考虑需求的变化点和稳定点。该怎么考虑呢?**
|
||||
|
||||
答:挺典型的问题。这个问法是一种典型的需求陈述误区。
|
||||
|
||||
描述需求需要有几个典型的要素:
|
||||
|
||||
- 用户,面向什么人群;
|
||||
- 他们有什么要解决的问题;
|
||||
- 我解决这个问题的核心系统。
|
||||
|
||||
只有满足这几个要素的需求才能进一步讨论变化点和稳定点。最小机器人可能符合上面的第三点,但是用户人群和要解决的问题没有描述,也就无法进一步去思考到底哪些因素是稳定的,哪些是易变的。
|
||||
|
||||
**7. 编程框架和编程范式具体有什么区别呢?感觉它们都具备约束、规范的作用。**
|
||||
|
||||
答:最主要的差别是:编程框架通常是领域性的,比如面向消息编程是多核背景下的网络服务器编程框架;编程范式则是普适性的,不管解决什么领域的问题都可以适用。
|
||||
|
||||
**8.老师提到了如果需要重修数据结构这门课程,大学里面学的数据结构是不顶用了。那应该学习什么呢,您可以给个建议吗?**
|
||||
|
||||
答:这方面的资料不太多。可以给你一个我当年翻过的资料: Purely Functional Data Structures
|
||||
|
||||
- [https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf](https://www.cs.cmu.edu/~rwh/theses/okasaki.pdf)
|
||||
|
||||
你可以参考看看。
|
||||
|
||||
**9.老师您好,我不太理解您说的继承是个过度设计的原因,我目前在架构过程中大量使用了继承,而且我也觉得继承功能将我的代码功能高度抽象化,给我带来了很大的方便。我想咨询下您如果不是用继承的话,用什么方法替代继承的功能呢?**
|
||||
|
||||
答:建议继承只使用接口继承;正常情况下,优先用组合;当然因为大部分语言的组合功能不够强大,有时候从便捷性的角度继承可以适度使用,但是应当意识到如果过度使用继承对工程来说是有害的。
|
||||
|
||||
**10.老师授课知识的角度很有深度,更贴切地说是一种思维方式,这种深度思考,从事情的本质重新推演与复盘的思考方式是很值得学习的。因为我们大部分人应该都没有想过自己去重新设计一个计算机的实现。不知道我这么理解的对不对。**
|
||||
|
||||
答:从无到有到万物,我们这个课的脉络之一就是重新从零构建整个信息世界,这一点在开篇词中提到过,这一点非常非常关键。另一个脉络是架构思维的递进,这一章重点是需求分析。这两个脉络相辅相成,交织在一起。
|
||||
|
||||
**11.许老师,您好,虽然自己是科班出身,但是对于下面这个问题困扰了我很久。**
|
||||
|
||||
- **一般来说程序的运行需要OS的支撑,那么在BIOS之前,选择运行哪个操作系统那一段程序是怎么运行的?再问一句,编译器可以独立于操作系统运行吗?**
|
||||
- **可以用C语言去实现很多其他的语言,比如说Python、Go等,那在C语言之前,这么一直追寻下去,会衍生成鸡生蛋的问题。但是编程语言又具有自举的功能,那自举是怎么实现的?比如目前版本的Go核心实现中,很多是用Go本身实现的,它是怎么做到自己编译自己的?**
|
||||
|
||||
答:先回答你的第一个问题,程序运行不需要操作系统支持,有BIOS支持就可以(把控制权交给它)。编译器可以独立于操作系统存在,而且它应该先于操作系统产生。
|
||||
|
||||
接下来是第二个问题,语言诞生的过程是这样的:机器码 =>汇编 =>C =>C写的汇编、C写的C(自举)。当然这个过程不需要每次新架构的CPU或操作系统都重新来一遍,因为人是聪明的,发明了交叉编译这样的东西,C =>新平台的C,这样就一下子完成整个语言的进化了。
|
||||
|
||||
**12.许老师:选择某种语言无关的接口表示;能举个例吗?**
|
||||
|
||||
答:先看看是网络协议层的接口,还是跨语言的二进制接口。
|
||||
|
||||
前者比如protobuf之类就挺好,后者可以了解一下IDL之类的东西,不过我觉得都有点重。如果要跨语言,我的建议在网络协议层跨,或者用操作系统的动态库机制(有点原始但很轻);如果语言内的接口,就别太复杂了,用语言自己的机制挺好的。
|
||||
|
||||
**13.请问每个应用的虚拟内存地址是怎么分配的?起始地址都是0吗?函数F可以跨多个虚拟内存页吗?**
|
||||
|
||||
答:操作系统会保留一个地址空间,0通常也在保留区间内,因为0开始往往是中断向量表的地址,其他的地址区间怎么分配其实应用自己说了算。函数和数据都可以跨内存页。
|
||||
|
||||
**14.老师您好,有两个问题希望解答。**
|
||||
|
||||
- **淘汰的内存页数据保存在哪里;是保存在外置存储设备中吗;**
|
||||
- **CPU加载对应程序的代码段到内存中,那么CPU是如何知道这个对应程序的代码段在什么位置的呢?**
|
||||
|
||||
答:第一个问题:是的,保存在外置存储中。对于unix系的系统往往是swap分区;windows则是一个隐藏属性的.swp文件。<br>
|
||||
第二个问题:代码段在哪里,是操作系统约定的,因为负责加载的人是操作系统,它设计程序文件的数据格式。
|
||||
|
||||
**15.使用Java四年了,看到封装,继承,多态的描述,特别精准,又有了更深刻的理解。不了解Go语言,比如有一个表单的基类,里面有基本的处理,子类继承这个基类,有自己特殊的实现。这种情况,如何用组合实现呢?**
|
||||
|
||||
答:这是受继承思维的影响了。其实继承实现了代码复用和多态两个东西,揉在一起。在Go里面,组合实现代码复用,接口实现多态,彼此完全独立,非常清晰。
|
||||
|
||||
**16.请问一下CPU是如何检查是否有中断的。是怎么及时知道发生了中断?每执行完一条指令都去检查一次吗?**
|
||||
|
||||
答:挺好的问题。硬件中断和软中断不一样。硬件中断你可以理解为总是会定期检查。软中断本身是一条指令,所以不存在检查这样的概念。
|
||||
|
||||
**17.交叉编译是什么意思,不是很理解,老师能讲讲吗?**
|
||||
|
||||
答:其实理解清楚一个实质:编译器就是把高级语言翻译成为机器码,更抽象说,它其实就是格式转换器。
|
||||
|
||||
目标格式是不是编译器正在运行的环境并不重要,只不过如果目标格式刚好是当前机器的CPU+操作系统,那么目标格式就可以直接执行,否则就编译出一个当前环境下无法执行的目标格式,这种情况就叫交叉编译。
|
||||
|
||||
**18.关于外存管理,有个问题从之前就困扰我。**
|
||||
|
||||
**磁盘的IO是由CPU完成的吗?但之前见到的说法是“CPU只能操作内存”。既然今天又提到了这个问题,文中提到“大量的磁盘 IO 操作,非常占用 CPU 时间”,那这两种说法是否矛盾?**
|
||||
|
||||
**还想知道磁盘中的数据是怎么被加载到内存上来的呢?另外,更多的文章是说,“CPU的速度远远大于磁盘IO,CPU经常需要‘等待’磁盘IO”,这明显也是一种将CPU和外存割舍开的一种说法,而且按这种说法,CPU不光无需分配很多时间片给IO,而且还有很多“等待”时间。这也和本文中“非常占用CPU时间”相矛盾吧?**
|
||||
|
||||
答:所有外设CPU都统一基于数据交换(IO)的方式操作。CPU并不知道数据的含义,但是设备的使用方和设备知道。
|
||||
|
||||
这种情况下你可以简单理解CPU只是一根网线,但是很重要的一点是它让设备使用方和设备可以交互。CPU并不负责磁盘IO,但是它要等它结束以接收数据。这方面当然也有一些新技术出现改善这一点,可以想一想可能的优化路径,这里不表。
|
||||
|
||||
**19.有一个疑问:协程属于用户态的线程,它跟线程之间怎么对应呢?协程之间也需要切换,那线程切换的那些成本它一样有啊,没想明白它的优势在哪。**
|
||||
|
||||
答:从单位时间成本来说,有一定优势但也不会特别大。主要少掉的代价是从用户态到内核态再回到用户态的成本。
|
||||
|
||||
这种差异类似于系统调用和普通函数调用的差异。因为高性能服务器上io次数实在太多了,所以单位成本上能够少一点,积累起来也是很惊人的。
|
||||
|
||||
**20.这种对需求的前瞻性探索挺重要,但同时感觉也是最难的,应该如何培养呢**
|
||||
|
||||
答:很多时候是思维方式的转变。首先要尝试去做前瞻,预测错了并不可怕,但可以事后复盘到底是缺失了什么重要的信息让你判断出现了什么偏差。
|
||||
|
||||
**21.隐隐感觉到架构的主要难点在于对需求的前瞻性判断,这要求的不仅仅是技术能力。目前几乎所有的架构课程,都是基于确定的需求来讲技术架构,例如秒杀系统怎么做高可用高并发。不知道我这么理解对不对。**
|
||||
|
||||
答:架构在于创造,如果你从事的事情总是重复别人,那这个公司又有何价值?即使有所参考,也应该有自己的精气神,这个精气神是需要架构师把它干出来的。
|
||||
|
||||
## 精选学习留言
|
||||
|
||||
恭喜@有铭和@Enthusiasm 两位同学,你们的留言被选为精选留言,极客时间将送出价值99元的专栏阅码一份。1个工作日之内,工作人员会与你取得联系。
|
||||
|
||||
**@有铭 同学留言**
|
||||
|
||||
对象范式的原始概念其实根本不包括类和继承,只有1.程序由对象组成,2.对象之间互相发送消息,协作完成任务。
|
||||
|
||||
最初世界上第一个面向对象语言是 Simula-67,第二个面向对象语言是 Smalltalk-71。
|
||||
|
||||
Smalltalk 受到了 Simula-67 的启发,基本出发点相同,但是最大的不同是Smalltalk是通过发消息来实现对象方法调用,而Simula是直接调用目标对象的方法。
|
||||
|
||||
Bjarne Stroustrup 在博士期间深入研究过 Simula,非常欣赏其思想,C++的面向对象思路直接受其影响,因为调用目标对象的方法来“传递消息”需要事先知道这个对象有哪些方法,因此,定义对象本身有哪些方法的“类”和“继承”的概念,一下超越了对象本身,而对象只不过是类这个模子里造出来的东西,反而不重要。
|
||||
|
||||
随着C++的大行其道,继承和封装变成了面向对象世界的核心概念,OOP 至此被扭曲为 COP ( Class Oriented Programming,面向类程序设计)。
|
||||
|
||||
但是COP这套概念本身是有缺陷的:每个程序员似乎都要先成为领域专家,然后成为领域分类学专家,然后构造一个完整的继承树,然后才能 new 出对象,让程序跑起来。
|
||||
|
||||
到了 1990 年代中期,问题已经十分明显。UML 中有一个对象活动图,其描述的就是运行时对象之间相互传递消息的模型。1994 年 Robert C. Martin 在《 Object-Oriented C++ Design Using Booch Method 》中,曾建议面向对象设计从对象活动图入手,而不是从类图入手。
|
||||
|
||||
而 1995 年出版的经典作品《 Design Patterns 》中,建议优先考虑组合而不是继承,这也是尽人皆知的事情。
|
||||
|
||||
这些迹象表明,在那个时候,面向对象社区里的思想领袖们,已经意识到“面向类的设计”并不好用。只可惜他们的革命精神还不够,Delphi 之父在创建.Net Framework 的时候,曾经不想要继承,在微软内部引起了很大的争议,最后是向市场低头,加上了继承。
|
||||
|
||||
2000 年后,工程界明确提出:“组合比继承重要,而且更灵活”,Go和Rust也许是第一批明确的对这种思路进行回应的语言,它们的对象根本不需要类本身来参与,也能完成对象范式的多态组合。
|
||||
|
||||
历史让 C++走上了舞台,历史也终将让 COP 重新回到 OOP 的本来面目
|
||||
|
||||
**@Enthusiasm 同学学习笔记**
|
||||
|
||||
总结:设计系统架构的前提是用户需求分析,用户需求包括分析出稳定需求点和变化需求点。从功能上看,稳定需求点一般是实现偏核心需求的需求点,变化需求点往往是实现偏扩展性需求的需求点。
|
||||
|
||||
从层次结构上看,稳定需求点往往在系统层次的底层,而变化需求点往往在更加抽象层(上层)。从从属关系上看,稳定点需要提供功能给变化点使用,变化点调用稳定点提供的功能。从时间顺序看,稳定需求往往先现是变化点实现的基础,变化点通过调用已经实现的稳定点提供的功能来实现更为抽象的功能。
|
||||
|
||||
系统架构类似于一个栈的结构,人机交互(变化点)放在栈顶,底层工作(稳定点)置于栈底。
|
||||
|
||||
这节课程让我联想到网络中的OSI 7层模型。大概其也体现了这种软件架构思想。好处就是架构清晰,职责明确,功能规范等等。
|
||||
|
||||
以往我认为的架构设计类似上面的描述,描述起来类似按自顶向下顺序,采用分治思想完成。但许老师的方法又有些巧:架构好比搭积木,许老师是先有了很多积木(需求点),然后把再确定这些积木放在哪一层次的格子里。这简化了架构设计的难度,好比用市场经济代替计划经济,很有趣。
|
||||
|
||||
架构设计博大精深,灵活多变,初学课程的我们,对架构设计的学习,也只能算是盲人摸象。
|
||||
|
||||
如果你在课程中有看不懂的地方,有想解答的架构问题,或者想分享的实战经验,都可以在文章下留言,如果你的留言被选中作为精选留言,我们将会为你送出价值99元的阅码一份。欢迎留言,与许式伟老师一起交流讨论,教学相长,共同精进。
|
||||
77
极客时间专栏/geek/许式伟的架构课/延展阅读/课外阅读 | 从《孙子兵法》看底层的自然法则.md
Normal file
77
极客时间专栏/geek/许式伟的架构课/延展阅读/课外阅读 | 从《孙子兵法》看底层的自然法则.md
Normal file
@@ -0,0 +1,77 @@
|
||||
<audio id="audio" title="课外阅读 | 从《孙子兵法》看底层的自然法则" controls="" preload="none"><source id="mp3" src="https://static001.geekbang.org/resource/audio/e0/e1/e0e77c5f0795fb876a1bcf596aca89e1.mp3"></audio>
|
||||
|
||||
你好,我是七牛云许式伟。
|
||||
|
||||
近日在读《孙子兵法》,颇有感触。作为我国现存第一部,也是世界最早的军事著作。《孙子兵法》一直为众多政治家、军事家及企业管理者膜拜,被当作军事外交、企业管理的圣典。
|
||||
|
||||
时至今日,新经济、科技和社会结构下,很多人认为我们身处一种复杂社会,需要全新的军事、商业和公共策略。然而,不管远古农耕刀兵还是高科技信息社会竞争,时代、人文环境和科学技术的变迁,并不能改变人类社会生存竞争所依赖的基础系统环境和人性思维的规则。
|
||||
|
||||
英国空军元帅斯莱瑟曾说过:“孙武的思想有惊人之处——把一些词句稍加变换,他的箴言就像是昨天刚写出来的。”
|
||||
|
||||
《孙子兵法》讲的是战争,骨子里包含的却是人类社会生存竞争的底层规则。案例会变迁,背后的道理却很难过时。我们作为架构师,需要做到对世界的认知可宏观、可微观。从对宏观的理解来说,背后所依赖的正是我们对这些底层自然法则的体悟。
|
||||
|
||||
## 明道
|
||||
|
||||
《孙子兵法》讲的是规则。它通过战争,结合环境和人性探讨竞争中生存的规则;然后,在确定目标下,它又将战争行为分解成为一系列细分的规则。
|
||||
|
||||
《始计篇》开端,全书先讲总规则,就是“道”。“道者,令民与上同意也,故可以与之死,可以与之生,而不畏危。”如同国家有纲领,企业必须明确愿景,使命或是价值观一样。明心方能正道,明道方知力之所指。事实上,明白道之所求,术方能有指引,追随者才能有方向、有激情。对国家、企业而言“道”不仅是方向,还是战斗力和吸附力的来源,明道和传播非常重要。
|
||||
|
||||
“慎战”。“兵者,国之大事,生死之地,存亡之道,不可不察也。”战争和企业竞争涉及系统存亡关系重大,是管理者每日都要考虑的事情。“自古知兵非好战。”这种行为不是个人名利或得失,而是关系到万户千家,或者全体员工和家庭,必须慎之又慎,不可凭个人好恶,更不可好大喜功和拍脑袋。“上兵伐谋”、“不战而屈人之兵”。要牢记初心,保存敬畏和责任感,求胜同时要避免己方生命和资源的巨大消耗。“善战者,无智名,无勇功。”正如“善弈者通盘无妙手”,或是扁鹊治病于未发,“立于不败之地”非常之关键。
|
||||
|
||||
“避害第一”,先考虑失败的后果;“先胜后战”,不打无把握的战争。“因利而战”,考虑成本和结果;“一战而终”,准备要充分,动手要迅捷,毕其功于一役。
|
||||
|
||||
“兵无常势,水无常形。”环境、资源条件,心态、优劣势这些都可能随时变化,不能教条主义,须将策略灵活应用于变化的实际。满口教义,如赵括那般纸上谈兵,一棒子打死算了。“君将士卒皆有其道”。公司内也应各司其职,人人满口战略、创新和文化,“所有人都举着旗帜,他们用哪只手来战斗?”这样的公司很危险。
|
||||
|
||||
## 庙算
|
||||
|
||||
“先胜后战”,就要“未战先算”。战与棋,一样考的算力,所谓政治经济环境人心都要纳入数据输入。
|
||||
|
||||
庙算,非治一战或局部。而是知己知彼综合所获数据,依据规则全面分析,很像是系统竞争成败的“大案牍数”。
|
||||
|
||||
庙算策略,不是单一事件的静态考量,而是复杂动态的综合考量。五事,道、天、地、将、法;七计,主、将、天地、法令、兵众、士卒、赏罚都要纳入进来。知己还要知彼。内外部环境,天时地形人才人心钱粮规章,所有影响战争胜负的东西,一切可以数据化,能算计的全都计算进去。
|
||||
|
||||
依据庙算可确定“势”,依据“势”决断是否有利并采取相应行动。拥有这样的洞察和决断力,知道了什么时候该打什么时候不该打,真正战争行为才会很简单。战争中要“致人而不致于人”。曾说“朕观诸兵书,无出孙武”的李世民,还有林彪都非常擅长集中优势兵力,通过忍耐和调动对手,“多方以误”,引敌人失误而获取最终胜利。
|
||||
|
||||
恰如“木桶理论”,庙算还可以消灭己方短板,寻找或者调动对方出现短板。当然,《孙子兵》并不是每战必胜,也不是以弱胜强,化不可能为可能的魔法书。不宜“知其不可而为之”。一系列庙算都在规则下,寻找到可能性,获得相对优势来战胜对手。如集中优势兵力,实现局部优势。“以迂为直,以患为利。”利用天时地形和行军,训练扎营做饭都有明确的目标。速战还是持久战,都是依据各种条件资源推演分析的结果。“故知战之地,知战之日,则可千里而会战。”唯有算胜,方可一战。
|
||||
|
||||
庙算为术,战术不能超脱于战略。“将在外君命有所不受”只是指根据实际情况可以灵活战术,正如当年毛主席要求林彪东北战役要服从大局,大战略不容颠覆。不能因一人之利,一地之利,一时之利而改变,只能随整个系统变化而调整。
|
||||
|
||||
## 感知
|
||||
|
||||
“不可胜在己”,立于不败之地,自己是关键,其他都是辅因;“可胜在敌”,看敌人的软肋和什么时候失误。“内省。知彼,但先要知己。”曾国藩作战,也首先讲明己第一,稳扎稳打立于不败之地,克敌才能实现。胜利也并非都是好事,很多时候当不是自己太强,而是对手太弱或其他因素,造就的胜利只会麻痹自己和埋下根本性失败的伏笔。
|
||||
|
||||
“知己知彼”就是自我和对手的感知。“天时地利人和”是对环境的感知。战争错综复杂风云变化,很多时候考较的都是随机应变的感知力和应对能力。“用兵者,合于利而动,不合于利而止。”对是否进行战争的条件的感知。还有对于细节的感知,“汲而先饮者,渴也。”需要通过经验学习感知获取信息,将规则载入情景化和有效利用。感知,可用于内部观察和防患未然,也可以用于判断对手并拟定对策。
|
||||
|
||||
“攻其无备,出其不意。”需要重视情报和传播。“兵者,诡道也。”情报和传播,等于数据的输入和输出,很多时候决定战争或组织的成败。依据情报奇兵制胜,如邓艾灭蜀;与对手虚假的情报,像蒋干盗书。更典型的是反间计。李牧、范曾罢黜,赵国、项羽败亡。
|
||||
|
||||
## 法度
|
||||
|
||||
“五事七计”都提到法令和奖惩。楚汉之争刘邦胜,“约法三章”以及陈平的有效奖惩体系都为功不小,胜在乎法令执行和奖惩公平。另一方面,用兵能“破釜沉舟”的项羽,然“印刓敝,忍不能予”是其失败的重要原因。
|
||||
|
||||
“五德,智信仁勇乎。”五德相须,缺一不可。但强调“智”,将人才放第一。而法度是规则,人才必须在法度内。
|
||||
|
||||
“主孰有道,将孰有能。”
|
||||
|
||||
“将之至任,不可不察也。”
|
||||
|
||||
“将听吾计,用之必胜,留之。将不听吾计,用之必败,去之。”
|
||||
|
||||
“令行素。”平时一样重视,战时才能发挥作用。
|
||||
|
||||
对于复杂系统,内部崩溃往往是其失败的主要原因。当然如前所述,这种内因也可由对手或外因推动演化。对于企业来说,领导者素质和人才队伍,中坚力量的支撑很重要,而成为中坚的标准就是一致的价值观和遵循规范。另外,还要建立适应自身、对手和战争形态的管理架构和组织体系,以及有效的规章和奖惩体系。
|
||||
|
||||
## 辨证
|
||||
|
||||
“以正合,以奇胜。”《孙子兵法》可能是辨证思维最早期的著作和运用。
|
||||
|
||||
《孙子兵法》里,强弱虚实迂直恩仇甚至胜败都是辩证的,是可以对立转化的。
|
||||
|
||||
事实上,无论战争或是组织发展,都不是直线的,而是曲线的,或者周期的,充满了变化。胜负也是辩证和变化的,便是拥有《孙子兵法》,吴国后期数战数胜,开始骄傲自负,百姓疲敝,胜负环境逆转,终致败亡。“水因地而制流,兵因敌而制胜”。所有策略必须依据时机、环境、对手、人心变化而变化。
|
||||
|
||||
兵法不可能写尽所有情况,任何行为和结果也不是简单对应,而是因果交错。战争和系统竞争要处理的是复杂数据。《孙子兵法》注定“学者生,像者死”,必须根据特定时空、自己和对手的具体情况灵活化用。
|
||||
|
||||
《孙子兵法》重规则轻案例,舍事而言理,因而得以破越时空和领域,成为竞争、管理和生存的基础规则。
|
||||
|
||||
《大败局》一书中,吴晓波将中国大多数企业失败归结为缺乏道德感和人文关怀,缺乏对规则和秩序的尊重以及系统的职业精神的缺乏,这些因果在《孙子兵法》中都能够找得到对应;相对的,所有基业长青的公司,又都具备一系列适应变化,可以持续指导成长的一般性规则,这些规则在《孙子兵法》中也都能够找到对应。
|
||||
|
||||
作为一种超乎教材而更类似于宗教的力量,《孙子兵法》的价值在于其提供了实用性同时引导了对规则的思考。跨域2500年时空岁月,它的思想精髓仍如星辰闪耀。而且随着数据、时代演进、新元素的输入还会不断推动其演进和发展,即便再过100年,1000年,只要人类、系统和竞争存在,它就永不会过时。
|
||||
Reference in New Issue
Block a user