cs61c_lab1
Exercise 1: See what you can C
定义常量V0,V1,V2,V3使得程序输出符合要求,同时要求四个常量中不同的值最少。
V0,V1,V3只能是3,V2取3可以满足不同的值最少。
1 |
Exercise 2: Catch those bugs!
Exercise 1: See what you can C
定义常量V0,V1,V2,V3使得程序输出符合要求,同时要求四个常量中不同的值最少。
V0,V1,V3只能是3,V2取3可以满足不同的值最少。
1 | #define V0 3 |
Exercise 2: Catch those bugs!
在开始调查分布式账本之前,我对账本的历史做了一些研究。我的发现真的让我对区块链有了正确的认识。
如果你认为“区块链”和“比特币”只是“深度学习”、“智能城市”和“云”之类的技术迷因,那你是可以原谅的。加密货币的投机狂热甚至可能让它们看起来像是人类贪婪的产物,而不是创造力。在历史背景下,区块链只是创建分类账的一种新方法。这就是为什么我认为它会产生持久的影响。在这篇文章中,我举了三个新账本技术彻底改变社会的例子,并试图说明为什么区块链也会这样做。
象形文字板(公元前3200年)
5000多年前,古代美索不达米亚人开始在泥板上记录数量。他们把平板分成行和列。在每个单元格中,他们画了一张物品类型的图片,并在上面打了个洞,标明物品的数量。每种类型的物品都有自己的标准象形表示法,使这种分类账语言成为我们发现的最早的人类书写形式。它被称为“原始楔形文字”,因为它后来演变成一种完整的书面语言,称为“楔形文字。”。换句话说,古人在Word之前就发明了Excel!
最早的原始楔形文字大约在公元前3200-3000年来自乌鲁克。与此同时,乌鲁克成为世界上第一座城市,这是成千上万的人第一次在同一地区定居。许多象形文字的具体含义仍然是个谜。我们能做的最好的事情就是研究它们,并对它们的功能和重要性做出合理的猜测。
楔形数字图书馆计划(CDLI)拥有这些迷人平板的可搜索数据库。以下是一些我认为特别值得注意的东西:
W 05233,b: 分发不同类型的谷物产品,以庆祝女神伊娜娜和夜晚星星的 goddess Inanna. IMAGE, DESCRIPTION
MSVO 3, 11: 计算一份订单需要多少大麦粉和麦芽来满足几种啤酒的需求。在反面显示了从每种啤酒的不同量中获得膳食和麦芽总需求量的计算结果。IMAGE, DESCRIPTION
MSVO 3, 82: 上图。描述了两份大麦。每个孔代表10 gur。一个gur大约等于300升¹,因此每次分配的总量大约为6000升。它的正面和背面都有[圆柱形密封]的印记(https://en.wikipedia.org/wiki/Cylinder_seal)以证明真实性。[IMAGE](https://cdli.ucla.edu/dl/photo/P005393.jpg), LINE ART
MSVO 3, 29: 描述135000升大麦(生产、出借、借用?)超过37个月 IMAGE, DESCRIPTION
下面是我从中获得的功能的粗略列表:
每个交易/分配目的的象形描述和其他元数据。
将增量计算分为小计和总计,以便验证计算结果。
指定授权交易的官员的签名。
使用钢瓶密封进行认证的方法。
可以指定日期或持续时间的日期系统。
这是一个惊人的成就,但它们对文明的发展到底意味着什么?随着社会变得越来越人口和复杂,事件记录也变得越来越复杂。能够在记忆之外记录数据显然会使事情变得更有效率,更不容易出错。
我认为平板也有助于促进分工。为了放弃农业生活,拥抱城市职业,你必须能够信任这个系统来养活你。在大型社区中,建立信任可能很困难。在小型农业社区,你可以把大家庭作为你的社交网络,但在城市里,你需要更广泛的合作。原始楔形文字允许合同被写下来,这样以后就不会有争议了。气缸密封提供了一种技术信任机制,使其无可辩驳。一般来说,拥有行政记录可能会使该系统看起来可信、系统和公平。一旦建立了信任和稳定,人们就可以在不关心自身生存的情况下进入专业化。
当然,我们只能推测这些药平板对乌鲁克人口爆炸有多重要。我们可以说的是,分类账的发明与文明的曙光相吻合。
复式登录系统(公元1340年)
大约700年前,意大利北部的商人和放款人之间出现了一种新的会计方法。这种新的分类帐技术使其条目具有逻辑关系。每个项目必须输入两次,一次作为贷方,一次用作借方。根据一些学者的说法,它的传播导致了我们现在所说的“资本主义”。马克思主义经济学家Werner Sombart是最早建立这种联系的人之一⁴:
资本的概念就是从这种看待事物的方式衍生出来的;可以说,资本作为一个类别,在复式记账之前是不存在的。
很容易看出他为什么会这么想-复式输入本质上是一种算法,根据以下等式组织企业的交易:
资产=负债+资本
其中“资本”衡量企业所有者的权益。重新排列我们得到的方程式:
资本=资产− 债务
作为企业主,我们必须做的事情应该是显而易见的:在不增加负债的情况下获得更多资产,即最大化资本。因此,桑巴特认为双重进入是向以私人公司最大化资本(即资本主义)为基础的社会转型的必要条件。
该系统的工作方式是从商户的日记账(单分录分类账)中提取交易清单,并将其转移到复式分类账。通过在一个账户中添加一个贷方,在另一个账户添加一个匹配的借方,每个项目进入复式记账系统。对我来说,这是一个非常不直观的例子,所以这里有一个例子:你以5美元的价格卖掉了一件衬衫,而你最初是以3美元的价格买的⁵. 在复式输入系统中,您将:
贷记你的库存账户(资产账户)3美元。贷记,因为库存是一个资产账户,通过贷记而减少。这张信用卡将衬衫从你的库存中删除。
借记你的“销货成本”账户(资本账户)3美元。借记,因为你丢了一件衬衫,借记是资本账户的减少。
借记你的现金账户(一个资产账户)5美元。借记是因为现金是一个通过借记增加的资产账户。
贷记你的“销售收入”账户(资本账户)5美元。贷记是因为销售收入是一个通过贷记而增加的资本账户。
13世纪,中国皇帝忽必烈开始了一项大胆的实验。当时的中国被划分为不同的地区,其中许多地区发行了自己的硬币,阻碍了帝国内部的贸易。因此忽必烈颁布法令,从今以后,货币将以纸币的形式存在。
这不是一个完全原创的想法。早期的统治者批准纸币,但总是与硬币一起使用,硬币已经存在了几个世纪。忽必烈的大胆想法是让纸币(朝代)成为货币的主要形式。不久后,当意大利商人马可·波罗访问中国时,他惊叹于人们用劳动和货物换取纸张的景象。就好像价值是凭空创造的。
忽必烈汗走在了时代的前列:他认识到,金钱的重要性不在于它的外表,甚至不在于它有什么后盾,而在于人们是否相信它足以使用它。今天,这一概念是所有现代货币体系的基础,而现代货币体系建立在政府的支持和人民对它们的信任之上。换言之,金钱是一种完全抽象的东西,我们都非常熟悉它,但它日益复杂,难以理解。
今天,许多人渴望更简单的时代。这是对这样一个世界的自然反应:在这个世界中,货币不仅变得越来越抽象,而且越来越数字化和虚拟化,在这个世界里,复杂的计算机算法执行微秒级的市场交易,而完全没有人干预,在这种情况下,在视线之外的经济正在围绕着自己的替代货币涌现,在这种情况下,全球金融危机的原因在没有博士学位的情况下很难解析。当时,人们的想法是,金钱代表着某种东西:金币和贝壳具有真正的价值,因此他们不需要政府支持。
然而,事实上,金钱从来没有那么简单。尽管它的用途和意义在整个历史中都发生了变化和演变,但事实上,它不再与任何一种物质挂钩,这是一件好事。这就是为什么让我们从钱的用途开始。现代经济学家通常根据它在经济中扮演的三个角色来定义它:
这是一种价值储存,意味着金钱可以让你推迟消费,直到以后的某一天。
这是一种记帐单位,这意味着它允许您为不同的商品分配价值,而无需对它们进行比较。因此,与其说一块劳力士手表值六头牛,不如说它(或牛)值1万美元。
它是一种交换媒介,对你我和其他人来说,这是一种简单而有效的方式,可以相互交换商品和服务。
所有这些角色都与买卖有关,这就是现代世界对金钱的看法——如此之多,以至于以任何其他方式看待金钱似乎都很奇怪.
然而,在部落和其他“原始”经济体中,货币的作用却截然不同,与其说是价值的储存或交换媒介,不如说是社会润滑剂。正如人类学家大卫·格雷伯(David Graeber)在他的新书《债务:最初的5000年》(Debt:the First 5000 Years,Melville House,2011)中所说,在这些社会中,金钱是一种“安排婚姻、确立孩子的父子关系、消除仇恨、在葬礼上安慰哀悼者、在犯罪案件中寻求宽恕、谈判条约、获得追随者”的方式,不是为了买卖东西,而是为了帮助定义社会关系的结构。
那么,货币是如何成为贸易的基础的呢?公元前三千年,在美索不达米亚,当货币首次出现在书面记录中时,社会已经有了一个复杂的金融结构,商人们用白银作为价值标准来平衡他们的账户。但现金仍然没有被广泛使用。
真的是在公元前7世纪,当利迪亚小王国推出世界上第一枚标准化金属硬币时,你开始看到货币以一种可识别的方式使用。利迪亚位于现在的土耳其,地处地中海和近东的交界处,与外国游客的商业往来十分普遍。事实证明,这正是金钱非常有用的情况。
为了理解原因,想象一下在没有钱的情况下,通过易货进行交易。(让我们撇开这个事实,没有一个社会曾经完全或甚至在很大程度上依赖易货贸易;这仍然是一个有启发性的概念。)易货贸易的主要问题是经济学家威廉·斯坦利·杰文斯(William Stanley Jevons)所说的“需求的双重巧合”。假设你有一束香蕉,想要一双鞋;找一个有鞋的人或想要香蕉的人是不够的。为了进行交易,你需要找到一个有鞋子愿意交易并且想要香蕉的人。这是一项艰巨的任务。
不过,有了共同的货币,任务就变得简单了:你只需把香蕉卖给别人,换成钱,然后用钱从别人那里买鞋。如果像在Lydia一样,你有外国人想从他们那里买东西,或者想卖给他们,那么拥有一个共同的交换媒介显然是很有价值的。也就是说,当你和你不认识的人打交道时,金钱是特别有用的。
Lydian系统的突破是标准化的金属硬币。由一种叫做银银合金的金银合金制成,一枚硬币和另一枚完全一样——不像牛。与牛不同的是,硬币不会随着时间的推移而老化、死亡或发生其他变化。而且它们更容易携带。其他王国效仿Lydia的榜样,硬币在整个地中海无处不在,王国在铸造的硬币上印上自己的徽章。这产生了双重效果:它促进了贸易的流动,并确立了国家的权威。
现代政府仍然喜欢在货币上盖章,而不仅仅是在钞票和硬币上。总的来说,他们更希望货币,无论是实物现金还是数字货币,只由官方实体发行和控制,而且金融交易(特别是国际交易)是可追踪的。因此,比特币(见本期《加密无政府主义者对现金的回答》)等替代货币最近的兴起,这种货币基于一种允许匿名交易的密码,迄今为止已被证明是不可破解的,这往往会让政府非常不高兴。
货币在整个地中海的传播并不意味着它被普遍使用。远非如此。大多数人仍然是自给自足的农民,基本上生活在货币经济之外。
但随着货币变得越来越普遍,它鼓励了市场的传播。事实上,这是历史上的一个经久不衰的教训:一旦你的经济中哪怕是一小部分被市场和货币所占据,它们就倾向于占领经济的其余部分,逐渐迫使易货贸易、封建主义和其他经济安排。这部分是因为货币使市场交易变得更加容易,部分是因为使用货币似乎重新定义了人们的价值观,促使他们从经济角度而非社会角度看待事物。
各国政府很快接受硬通货,因为它促进了税收和军队的建设。公元前三世纪,随着罗马的崛起,货币成为统一和扩张帝国的重要工具,降低贸易成本,并为维持皇帝权力的军队提供资金。
罗马帝国的衰落始于公元前三世纪,货币的使用也有所下降,至少在西方是如此。前帝国的部分地区,如英国,只是停止使用硬币。在其他地方,人们仍然用钱来平衡账户和记录债务,许多小王国铸造了自己的硬币。但总的来说,随着城市规模缩小和商业萎缩,货币流通变得不那么重要。
封建社会的兴起也削弱了金钱的作用。主人和附庸之间的基本关系不是通过支付服务费,而是通过宣誓忠诚和承诺支持来调解的。土地没有买卖;它最终属于国王,国王将土地的使用权授予了他的领主,而领主又将土地提供给了他们的附庸。封建主义阻碍了贸易;封建领地通常是一个封闭的社区,旨在自给自足。在这样的环境下,钱几乎没有用。
金钱在封建时代的衰落值得注意,因为它揭示了金钱的本质。首先,金钱是非个人的。有了它,你可以和一个叫杰夫·贝佐斯的家伙达成协议,你不认识他,可能永远也不会认识他,这没关系。只要你的钱和他的产品好,你们俩就能做生意。同样,金钱培养了一种奇怪的平等:只要你有足够的现金,所有的门都向你敞开。最后,金钱似乎鼓励人们只根据市场价值来评价事物,将其价值降低到一个数字。
这些特征使得货币对于现代金融体系来说是无价的:它们鼓励贸易和分工,降低交易成本——也就是说,执行经济交易所产生的成本,使经济更加高效和富有成效。然而,这些同样的品质就是为什么金钱往往会侵蚀传统的社会秩序,以及为什么人们普遍认为,当金钱进入市场时,经济关系会压倒一切。
因此,封建领主对这些东西几乎没有用处就不足为奇了。在他们的世界里,维持社会等级远比经济增长(或者,就这一点而言,经济自由或社会流动性)更重要。货币的广泛使用,以及它的非个人交易、均衡效应和计算价值,将颠覆这种秩序。
当然,钱的贬值并没有持续。到了12世纪,中国人正在尝试纸币,欧洲人也开始接受一种新的货币观:钱不是用来囤积或消费的,而是用来投资的,用来工作以赚取更多的钱。
这个想法是随着人们对商业的重新兴趣而产生的。贸易展览会在欧洲各地兴起,许多商人开始在欧洲大陆做生意。这一时期,意大利城邦也出现了银行业。这些新机构引入了一系列我们今天仍在使用的金融创新,包括市政债券和保险。银行促进了信贷和债务的使用,随着国王借钱为军事冒险提供资金,商人借钱为长期交易提供资金,信贷和债务在经济中变得越来越重要。
汇票的发明,为西方纸币的出现奠定了基础,也发生在这一时期。汇票是旅行支票的前身:一种代表一定数量的黄金的文件,可以在不同的城市兑换成实物。旅行商人喜欢这些钞票,因为它们携带起来的风险(和费力)远低于贵金属。
到了16世纪,在欧洲,塑造我们今天思想的许多关于金钱的观念已经到位。尽管如此,金钱仍然是一种有形的东西,即一块黄金或白银。金币不是价值的象征;这是它的一个体现,因为每个人都相信黄金具有内在价值。同样,经济中的货币数量仍然是可用黄金和白银数量的函数。然而,西班牙和葡萄牙的统治者并不完全理解这一制度的局限性,这导致他们掠夺新大陆殖民地,积累了大量的贵金属储备,这反过来又引发了一段时期的恶性通货膨胀和欧洲经济的巨大动荡。
如今,各国都有中央银行来监督货币供应,以及设定利率、打击通货膨胀和控制货币政策。美国有联邦储备系统,欧元区有欧洲中央银行,马尔代夫有马尔代夫货币管理局,等等。当美联储想要增加货币供应量时,它不必去寻找埃尔多拉多。它也没有打电话给美国铸币局,要求它开始印制更多的美元;事实上,在美国大约10万亿美元的货币供应总量中,只有大约10%的货币供应量(约1万亿美元)以纸币和硬币的形式存在。
相反,美联储在公开市场上购买政府债券,如国库券,通常是从普通私人银行购买,然后将这些钱存入银行账户。随着银行放贷、投资和以其他方式消费这些新资金,流通的总体货币供应量会增加。另一方面,如果美联储想减少货币供应量,它会做相反的事情:它在公开市场上出售政府债券,通常是向私人银行出售,然后从银行账户中扣除销售价格。银行的钱越来越少,货币供应也在萎缩。
央行用来维持经济运行的复杂且相对不透明的阴谋可能会让西班牙帝国的通胀弱点看起来有点幼稚。但事实上,货币政策的微调——利率、货币供应和其他金融机制之间的微妙平衡——使经济以稳定、可控的速度持续增长,而不会出现过度的通货膨胀、失业、债务或繁荣与萧条周期——仍在进行中,正如欧洲和美国持续的经济困境所表明的那样。
回到17世纪:货币作为商品的观点开始转变,只是随着纸币的广泛使用,纸币在美国殖民地受到了最热烈的欢迎。例如,1690年,马萨诸塞湾殖民地发行纸币来资助一场军事战役,但没有明确承诺将纸币兑换成黄金或白银。
后来,在美国独立战争期间,大陆议会印制了“大陆债券”来支付新国家的战争债务。这些纸币原则上是由黄金支持的,但发行的纸币太多了,以至于它们的总价值远远超过了可用的黄金。当士兵和商人发现他们得到的是几乎毫无价值的纸币时,这引发了对纸币的强烈反对;例如,美国宪法禁止各州使用除金币和银币以外的任何其他货币。直到1862年南北战争期间,国会终于通过了一项法律,允许政府印制纸币或“美钞”。
这并不是说在那之前纸币是不可用的。就在美国政府只铸造硬币的时候,通常被称为“野猫”的私人银行开始发行实际上变成了数千种货币。就像战时的大陆一样,这些纸币理论上是由黄金支撑的,但很难知道一家银行是否真的有足够的黄金来支撑纸币,因为当时几乎没有银行监管。不出所料,野猫时代是欺诈的温床。令人惊讶的是,大多数银行在保持货币和黄金储备平衡方面做了合理的工作,美国经济增长迅速。
与此同时,英格兰银行采取了更为冷静的做法。1821年,它采用了金本位制,承诺根据要求将纸币兑换成黄金。随着其他国家效仿,金本位成为发达经济体的普遍规则。19世纪发现的主要新金矿确保了货币供应持续增长。
金本位制,正如它的初衷,给价格带来了稳定,对房地产持有者和贷款人带来了巨大的好处。然而,它也带来了通货紧缩——也就是说,价格普遍下跌,因为随着国家人口和经济的增长,政府没有办法增加货币供应,除非开采更多的黄金,因此货币实际上变得更加稀缺。通货紧缩对农民和借款者来说很困难,他们渴望有一点通货膨胀来帮助他们偿还债务;当货币逐渐失去一些价值时,人们的债务也会随之失去。
金本位制也没有阻止经济陷入衰退,当它们在1873年至1896年的全球经济衰退中陷入衰退时,遵守金本位制使得很难做出任何可能很快纠正问题的事情,比如降低利率或向经济注入更多资金。因此,经济体需要很长时间才能从衰退中复苏。
当然,聪明的金融头脑总能找到绕过规则的终点。事实证明,金本位制并没有完全限制货币的增长。银行仍然可以用黄金储备贷款,而且他们可以自由地这样做。经济历史学家现在认为,流通的纸币数量使银行手头的黄金和白银的实际数量相形见绌。因此,尽管人们心中的金钱仍然与黄金挂钩,但它已经开始脱钩。
第一次世界大战最终使金本位制脱轨,各国政府的军队需要比黄金更多的资金,因此他们只是开始印刷。尽管战后许多国家试图恢复金本位制,但大萧条却彻底结束了这一试验。
结果是什么?今天的货币是“法定”货币,这意味着它们有发行政府的权威支持,仅此而已。例如,在美国,这意味着政府只接受美元作为税收支付,并要求债权人接受美元作为债务支付。但如果人们对美元失去信心,不再在日常交易中接受它,它最终会变得一文不值。
许多人认为这种情况令人不安,这就是为什么人们一直呼吁回归金本位制。我们被告知,对法定货币的依赖给了政府太多的权力,政府可以肆无忌惮地印制任意数量的货币。然而事实是,这一直是可能的。即使采用了金本位制,各国政府也会不时地对其货币进行重估,实际上是规定了黄金的新价格,或者,当标准被证明过于限制时,比如在第一次世界大战期间,政府会忽略该标准。
更重要的是,黄金比纸币更“真实”的想法是海市蜃楼。黄金是有价值的,因为我们共同决定它是有价值,我们将接受商品和服务作为交换。归根结底,这与我们的集体决定没有什么不同,即彩色矩形纸是有价值的,我们将接受商品和服务作为交换。
现实是,我们已经摆脱了金本位制,不再认为货币需要与其他东西挂钩,这是一件好事。首先,这是诚实的:一旦我们摒弃了用牛换大麦的习惯(两者都有内在价值),金钱就成为了一种社会习俗,纸币只是让这种习俗变得显而易见。如今,我们不必担心在哪里能找到更多的黄金和白银,而是可以专注于如何明智地管理货币供应,造福于更大的利益。
第二,更重要的是,放弃金本位制让央行在应对经济衰退方面有了更大的灵活性。经济衰退是一种螺旋式下降:人们和企业不再消费和投资,而是继续持有现金,这会收缩总体需求,迫使企业削减开支,这会造成报复,从而进一步缩减需求。
一个解决方案是政府通过增加支出来弥补差额。但利率下降和货币供应量增加也很重要,从而使人们更容易借钱,帮助克服他们不愿意花钱的心理。当美联储和其他央行不必担心维持金本位时,这样的行动更容易实施。自金本位制度被废除以来,经济衰退持续时间更短,痛苦也减轻了。即使是最近的全球经济衰退,尽管很严重,与大萧条相比,也微不足道。
当然,所有这些关于央行行长修补货币供应的言论正是法定货币体系的批评者所担心的,因为他们认为这将不可避免地导致失控的通货膨胀。历史确实表明,当一个政府大规模而粗心地扩大货币供应量时,最终会导致恶性通货膨胀和毫无价值的货币,就像1923年魏玛德国和几年前津巴布韦发生的那样。
但这样的事件是罕见的。在过去90年中,美国和欧洲在20世纪70年代只经历了一次持续的高通胀。这一记录应该会产生一些信心;总的来说,央行官员的行为是负责任的,健康的工业经济不容易出现定期的螺旋形通胀。但这种信念显然很难树立;相反,对我们许多人来说,通胀似乎总是要失控。
这种非理性的恐惧最终是金钱进化方式的遗留:我们坚持认为金钱需要有“坚实”的东西作为后盾。从这个意义上讲,我们就像马可波罗一样,仍然有点惊讶于一种想法,即你可以把整个经济建立在一张小小的纸上。
但我们确实如此。80多年来,我们生活在一个金钱可以凭空创造的世界里。正如我们已经讨论过的,央行可以创造货币,但普通银行也可以。当一家银行贷款时,它通常只会把钱存入借款人的银行账户,不管它手头是否有足够的钱,银行都被允许借出比其储备金更多的钱。因此,每笔房屋净值贷款、汽车贷款和抵押贷款,银行都会逐步增加货币供应。
当然,这一切都有点怪异,比如最近的房地产泡沫时期,银行发放了大量不良贷款,应该提醒我们信贷失控的危险。但渴望为货币体系建立一个更“坚实”的基础是错误的。金钱是一种社会创造,就像语言一样。这是一种可以很好或很差地使用的工具,我们最好有更多的自由来使用它。
在历史的进程中,金钱的物质属性变得不那么重要,以至于现在人们很容易谈论无现金社会的可能性。计算机和电信、智能手机和社交媒体、加密技术和虚拟经济的强大结合,正是助长了这种讨论的原因。这种进步是有意义的,因为金钱最重要的不是它是什么,而是它做了什么。毕竟,成功的货币是人们使用的货币:它们润滑商业,允许人们交换商品和服务,从而鼓励人们工作和创造。德国社会学家乔治·西梅尔(Georg Simmel)将金钱描述为“纯粹的互动”,当金钱按其应有的方式运作时,这种描述似乎是恰当的,与其说它是一种事物,不如说它是个过程。
这也许是忽必烈七个世纪前所理解的。这是我们今天仍在努力理解的。
考古学家和人类学家说,几千年前,金钱是偿还债务的一种手段
无论你走到哪里,金钱都会说话。这已经持续了很长时间。
然而,可悲的是,资金对其来源一直保持沉默。对于我们生活中如此重要的元素,金钱的古老根源及其发明的原因尚不清楚。
随着像比特币这样的加密货币成群结队的出现,研究人员仍在为钱是怎么来的以及在哪里来的而争论不休。一些人将最新的、流行的加密货币与密克罗尼西亚一个岛屿社区开发的一种不适合任何人的钱包、口袋或钱包的货币进行了有趣的比较。
然而,当谈到钱的来源时,冲突占主导地位。数百年来,经济学家对货币的起源持有一种观点。但越来越多的人类学家和考古学家持修正主义观点,认为经济学家的标准故事已经破产。
经济学家和修正主义者一致认为,被定义为货币的物体有四种作用:首先,它是交换商品和服务的一种手段。货币能够偿还债务。它代表了一种通用的价值衡量标准,使得计算各种物品的价格成为可能。最后,钱可以作为财富储备储存。
从那里,两组人分裂了。主流经济学家认为,商品和服务的易货交易激发了货币的发明。人类学家和考古学家认为,早期国家发明了货币作为偿还债务的手段。
弗雷德里克斯堡哥本哈根商学院的社会文化人类学家丹尼尔·苏莱尔斯表示:“许多学术研究都假定(货币体系)在过去200至400年内在民族国家兴起。”。但金融化交易和债务在更远的时间里出现在许多地方。
来自美洲的最新研究为辩论增添了新的问题。这些调查表明,从几千年前开始,在世界许多地方,货币独立出现的原因不同,并呈现出不同的有形形式。
债务押注
自1776年亚当·斯密(Adam Smith)的《国富论》(the Wealth of Nations)出版以来,经济学家们达成了一个共识,即人们的自利贸易决定会自动平衡供需,几乎不需要或根本不需要政府参与。经济学家认为,人类以一种产品换取另一种产品的自然倾向,比如用土豆换取陶器,导致了古代欧亚国家货币的发明。
人类学家和考古学家说,这个老生常谈的故事让人大错特错。纽约奥尔巴尼大学的考古学家罗伯特·罗森斯威格(Robert Rosenswig)表示:“亚当·斯密(Adam Smith)对金融系统的“创造神话”是基于对过去实际发生的事情的无知。”。
罗森斯威格认为,早期政府创造资金来偿还公共工程债务和征税。易货与此无关。取而代之的是,货币来源于古老的信用和债务体系,人类学家已经记录了一个多世纪。在小规模社会中,债务涉及对他人的义务。例如,在狩猎采集者和农场主群体中,婚后送出的女儿会产生债务,这些债务可以用称为“新娘财富”的商品部分偿还。全额还款要求第一位新娘的接受者提供新娘作为回报。不需要现金。
修正主义者认为,至少5500年前,美索不达米亚和埃及的农业州开始向新形式的货币友好型债务过渡。在美索不达米亚,银谢克尔(一块金属,而不是一枚硬币)是一种基本的货币计量。统治者颁布法令,一谢克尔的银币重量相当于一蒲式耳的大麦。银、金和其他金属的谢克尔用于其他古代社会。谢克尔的精确重量似乎各不相同,难以确定。农民被征税以支持王室生活方式和公共工程。农民和其他平民无法支付的货物被记为以谢克尔为单位的债务。商人和商人从寺庙和宫廷官员那里赊购货物。
美索不达米亚时代的商人在欧亚大陆旅行时,可能会用银块来支付一些交易,银块以粗略标准化的谢克尔衡量。但这些银块能否解决债务尚不得而知。
大约2600年前,印有动物或统治者形象的硬币首次出现在现在的土耳其的利迪亚王国。不久之后,希腊、波斯、印度和中国的城市和国家开始铸造自己的硬币。从一开始,硬币就资助了军队和征服战争。在此过程中,硬币成为各种交易的法定货币。修正主义者认为,市场是这一制度的结果,而不是其原因。
伦敦经济与政治学院(London School of Economics and Political Science)的人类学家大卫·格雷伯(David Graeber)在2011年出版的《债务:前5000年》(Debt:the First 5000 Years)一书中提出了这一观点。
格雷伯主要依靠来自非洲、亚洲和欧洲社会的证据。但他的书激发了越来越多的人对金钱在美洲的模糊起源进行研究。4月,在华盛顿举行的美国考古学学会年会上,许多研究人员会面讨论了他们的发现。
一些人认为,格雷伯对债务的关注对于理解古代玛雅和附近社会何时以及如何将可可豆和纺织棉等商品转化为货币至关重要。但在同样的社会中,易货交易不能被排除为易腐支付的前兆。目前,问题多于答案。
新泽西州纽瓦克巴德高中早期学院的人类学考古学家乔安娜·巴伦说:“债务在古中美洲和墨西哥扮演了巨大的角色,但不清楚货币是如何出现的。”。
玛雅市场
在16世纪,西班牙人写道,在从墨西哥到中美洲的社会中,包括阿兹特克人和玛雅人,他们观察到了一个繁荣的市场体系。西班牙编年史者描述了货币,尤其是可可豆和编织布,广泛用于购买商品、纳税和债务、计算货币价值和存储家庭财富。
研究人员长期以来一直怀疑,玛雅市场和商人以及各种用作货币的商品早在1100年左右就出现了,这是在经典玛雅文明的国王和城邦垮台之后。然而,现在的证据表明,这种易腐烂的货币形式出现得更早,在经典玛雅全盛时期,从250到900。
伊利诺伊州立大学(Illinois State University in Normal)人类学考古学家凯瑟琳·桑佩克(Kathryn Sampeck)表示,将各种物品转换成法定货币“发生在古美洲,而不仅仅是欧洲”。想想十年前在墨西哥卡拉克穆尔的一个小金字塔里发现的一组七世纪中期的壁画。这些场景展示了一个强大的经典玛雅中心的市场交易,该中心控制着一系列卫星站点(SN Online:4/17/18)。考古学家怀疑,卡拉克穆尔绘制的金字塔位于一片空地的中央,其中包括一个大市场。
金字塔墙壁上的壁画描绘了不同社会阶层的人,从他们的衣服和珠宝可以看出,他们显然在交换玉米粉饼、烟草和陶器。一些绘画场景展示了各种尺寸和颜色的织物,供交换。其中一幅画描绘了一名妇女穿着村民的简单衣服,向一名男子提供一杯热巧克力,以换取塔梅尔面团。
巴伦在考古学会议上表示,在接下来的几十年里,玛雅统治者要求可可和纺织品作为贡品,这是一种向臣民征收的税收,这两种产品成为了具有标准价值的货币。一个可追溯到691年的彩绘花瓶描绘了已知最早的纺织品和可可豆作为对国王的致敬。国王脚下的一个袋子被标为“3 pik”,研究人员将其翻译为24000可可豆的术语。
691年后,其他经典玛雅遗址的彩陶和雕刻纪念碑越来越多地在贡品场景中展示可可豆袋和布袋。巴伦说,皇家法庭可能储存了贡品,并用它来支付法庭成员和购买市场商品。
巴伦在三月的《人类学考古学杂志》上提出,在经典的玛雅人中,易货交易可能是可可和布料货币的直接先驱。在对考古证据和西班牙官员的描述进行分析后,她得出结论,在国王开始收集布匹贡品之前,所有社会阶层的人都在卡拉克穆尔市场交易精美的纺织品。巴伦说,在卡拉克穆尔的竞争中心蒂卡尔,在各个社会阶层的家庭中发现的专门织布工具表明,高质量的缝纫始于国家建立市场和收集布匹之前的几十年或更长时间。从600年代后期到700年代的贡品收藏,导致在卡拉克穆尔、蒂卡尔和相关的玛雅遗址为纺织品的特定尺寸和颜色设定了价值。与此同时,玛雅精英对可可作为贡品的需求不断增加,影响了以可可豆计数计算的货币价值的出现。
巴伦说:“最初的易货物品可能已经成为经典玛雅人的货币。”。
奥尔巴尼的罗森斯威格在4月的会议上提出,货币体系可能在传统玛雅文明出现之前几个世纪就在墨西哥南部和中美洲的一些人口中发展起来了。但罗森斯威格表示,在世界上的那个地区,确定货币的出生地尤其困难,因为可可和布料等货币通常不会保存在古代遗址。
他从陶器和壁画中寻找关键证据,再加上大型宫殿建筑的遗迹、公共工程和战争的书面记录。他说,中央集权政府和他们需要对主体征税,并将贵重物品转化为货币,以支付战争和昂贵的建筑费用,这为玛雅货币体系奠定了基础。这些类型的政府活动可以在考古遗址记录下来。
可可现金
在条件允许的情况下,经典时代的玛雅货币在树上生长。可可树在塔巴斯科和其他地方生长茂盛,河谷潮湿,雨量充沛,不受阳光和风的影响。卡拉克穆尔和蒂卡尔的玛雅统治者每年都会用可可豆来致敬。
以伊萨帕为例,它是墨西哥南部、危地马拉和萨尔瓦多太平洋沿岸的一个城邦网络,大约在2800年至2100年前崛起。伊扎帕位于可可、棉花和其他资源丰富的地区。那里的统治者显然委托修建寺庙和其他大型建筑。雕刻的纪念碑显示了国王为了维护统治而进行的仪式性杀戮。伊扎帕和邻近地区的国王要求大量可可、棉花和其他两种物品作为贡品,而经典玛雅人后来可能会将其用作货币:脊椎贝壳和盐。
罗森斯威格说:“货币对于这些距离很近的王国之间的贸易是有用的。”。
雅典乔治亚大学的人类学考古学家斯蒂芬·科瓦列夫斯基表示,从墨西哥中部到中美洲大部分地区的中美洲古代城邦似乎在欧洲人和亚洲人开始制造硬币的同时建立了自己的货币体系。科瓦列夫斯基对古希腊和中美洲的国家规模、政治组织和商品交易市场进行了调查。
他表示,越来越多的玛雅研究人员认为,旧世界和新世界的社会独立地创造了自己的货币体系和货币。
科瓦列夫斯基在考古学会议上断言,流通易腐货币的古代美国社会无法让一些个人和家庭积累古希腊人那样的财富,或许是最著名的早期铸币厂。在希腊世界,个人可以将土地、货物和奴隶作为私人财产进行积累和出售。这使得一些希腊人从卑微的出身走向了巨大的财富。科瓦列夫斯基说,在中美洲,农业社区管理土地所有权,特别是在土壤肥沃的地方。这使得皇室以外的个人更难致富。
随着货币体系的繁荣和财富的积累,奴隶制应运而生。并不是每个人都同意,被迫成为奴隶的人被视为货币的血肉单位。但列克星敦肯塔基大学的考古学家斯科特·哈森在4月的会议上表示,在欧洲人抵达中美洲之前,商业交易包括使用奴隶作为人类货币。
例如,经典时代的玛雅铭文表明,战俘可以作为贡品送给国王。一些俘虏被勒索以换取可可和其他被认为对玛雅王室有价值的物品,包括尖刺的脊椎贝壳。在大约500年前阿兹特克帝国的一部分,墨西哥中部的纳华社会,农民家庭有时会在困难时期把孩子作为奴隶卖给富人。即使他们的财富有所改善,纳华农民也往往无法获得足够的贵重物品来买回他们的孩子。
但科瓦列夫斯基说,奴隶制是中美洲统治者的副业。在希腊和其他古代地中海社会,奴隶被大量出售和交易。学者估计,奴隶约占古希腊雅典城邦人口的一半或更多。希腊奴隶开采银币,耕种土地,甚至成为高级公务员。
科瓦列夫斯基说,奴隶制可能为地中海最早的民主和资本主义形式提供了资金。
贝壳游戏
然而,地中海和中美洲的古代国家并不能解释关于金钱根源的一切。以丘马什印第安人为例,他们生活在中美洲社会以北2000多公里的地方,现在是加利福尼亚南部。
从大约800年前开始,Chumash集团开始用橄榄形蜗牛壳厚厚的中心雕刻的货币向其首领偿还债务。居住在加利福尼亚海岸附近的海峡群岛上的Chumash人越来越多,对大陆商品的需求激增,这可能刺激了空壳货币的发明。
加州大学圣巴巴拉分校的考古学家林恩·甘布尔(Lynn Gamble)在今年4月提出了一个案例。
甘布尔说:“Chumash贝壳钱是在海峡群岛大量生产的,而海峡群岛在大陆上缺乏很多可用资源。”。她建议,海峡岛民可能会用货币来换取结婚伴侣以及各种商品,比如鸟羽毛作为仪式服装。
甘布尔说,丘马什人在把杯状珠子变成钱之前很久就用各种珠子装饰和交易。在Chumash遗址的挖掘中发现了8000多年前由石头、骨头和贝壳制成的珠子。甘布尔解释说,这些珠子并不像后来用作货币的珠子那样大量分布在整个定居点。
她说,贝壳钱珠出现得很晚。当时,许多家庭都出现了成堆雕刻成杯状的贝壳珠。贝壳钱也散落在Chumash墓地,并埋在坟墓里。被视为金钱的珠子直到当时的Chumash定居点人口达到800至1000人时才出现。Gamble怀疑,这种规模的团体需要一种标准货币来简化越来越多的经济交易。
甘布尔补充道,从空壳货币一开始,Chumash平民可能就一直欠酋长及其助手的债。18世纪末的西班牙记述描述了Chumash酋长组织的盛宴,在那里,工作人员被要求携带食物、贝壳和其他贵重物品来支付活动费用,并作为贡品送给领导人。
Chumash人主要用他们的海洋货币购买和销售商品,这种货币与长期的贸易惯例共存。甘布尔怀疑,一旦空壳资金发展成为追随者,它可能会被包括在支付给酋长的债务中。
Chumash的钱是否更多地来自经济交换,而不是主要的债务,一个更大的谜团仍然存在。一些古代社会,如印加和安第斯山脉的早期帝国,对各种货物和贡品都有详细的会计记录,但没有钱。Gamble说,研究人员不知道为什么钱在Chumash人相对简单的狩猎采集社会中发展起来,而不是在16世纪早期的印加州。
在古代,金钱在某些地方说话,在其他地方却一言不发。
在前面的模块中,我们讨论了事务的ACID属性。在本文中,我们将讨论如何使数据库具有故障恢复能力。我们将在本注释中学习如何实施的两个ACID属性是:
持久性:如果事务完成(提交),我们将永远不会丢失事务的结果。
原子性:事务中的所有或所有操作都将保持。这意味着我们永远不会让数据库处于中间状态。例如,在CalCentral中交换类。有两个操作:删除旧类和添加新类。如果数据库在添加新类之前崩溃,您实际上不想从旧类中删除。
如果我们使用强制策略,持久性可以是一个非常简单的属性。强制策略声明,当事务完成时,在事务提交之前,强制将所有修改的数据页发送到磁盘。这将确保持久性,因为磁盘是persistent1;换句话说,一旦页面进入磁盘,它将被永久保存。这种方法的缺点是性能。我们最终做了很多不必要的写入。我们更喜欢的策略是不强制,即只在页面需要从缓冲池中退出时才写回磁盘。虽然这有助于减少不必要的写入,但会使持久性复杂化,因为如果在事务提交后数据库崩溃,某些页面可能尚未写入磁盘,因此会从内存中丢失,因为内存是易失性的。为了解决此问题,我们将在恢复期间重新执行某些操作
在最后一个注释中,我们介绍了作为ACID性质之一的隔离概念。让我们在这里重新审视我们的定义:
本说明将详细介绍DBMS如何能够在保证隔离的同时交错许多事务的操作。
什么是锁,为什么它们有用?锁基本上允许事务读取和写入数据。例如,如果事务T1正在从资源A读取数据,则需要确保没有其他事务同时修改资源A。因此,想要读取数据的事务将请求在适当资源上的共享(S)锁,而想要写入数据的事务则将请求在相应资源上的排他(X)锁。只有一个事务可以对资源持有独占锁,但许多事务可以对数据持有共享锁。两阶段锁定(2PL)是一种确保数据库使用冲突可串行化调度的方案。2PL的两个规则是:
交易必须在读取前获得S(共享)锁,在写入前获得X(独占)锁。
在释放任何锁后,事务无法获取新锁——这是通过锁定实现可串行化的关键!
这样做的问题是它不能防止级联中止。例如
T1更新资源A,然后释放对A的锁定。
T2从A读取。
T1中断。
在这种情况下,T2也必须中止,因为它读取了未提交的值A。
为了解决这个问题,我们将使用严格的两相锁定。严格的2PL与2PL相同,只是当事务完成时所有锁一起释放。
在现实中,我们通常不会一次只有一个人访问数据库。许多用户可以一次向数据库发出请求,这可能会导致并发问题。当一个用户写入,然后另一个用户从同一资源读取时会发生什么?如果两个用户都试图写入同一资源,会怎么样?如果不小心,当几个用户同时使用数据库时,我们可能会遇到几个问题:
–用户1更新表1,然后更新表2。
–用户2读取表2(用户1尚未更新),然后读取表1(用户1已更新),因此它以中间状态读取数据库
例子:
–用户1将玩具的价格更新为价格*2。
–用户2将玩具的价格更新为价格+5,取消了用户1的更新
–用户1更新玩具的价格,但这会被中止。
–用户2在回滚之前读取更新。
我们解决这些问题的方法是定义一组关于操作的规则和保证。我们将通过使用事务来实现这一点。transaction1是应作为单个逻辑原子单元执行的多个动作的序列。交易保证ACID特性,以避免上述问题:
原子性:事务以两种方式结束:提交或中止。原子性意味着Xact中的所有动作都发生,或者没有发生。
一致性:如果DB开始一致,则在Xact结束时结束一致。
隔离:每个Xact的执行与其他执行隔离。实际上,DBMS将交错许多XACT的动作,而不是按顺序依次执行。DBMS将确保每个Xact的执行就像它自己运行一样。
持续性:如果Xact提交,其影响将持续。承诺的Xact的效果必须在失败后仍然存在。
当我们讨论SQL时,我们为您提供了一个关于如何执行查询的有用的心理模型。首先在FROM子句中获取所有行,然后在WHERE子句中过滤出不需要的列,依此类推。这很有用,因为它可以确保您将获得查询的正确结果,但数据库实际上并不是这样做的。数据库可以更改它们执行操作的顺序,以获得最佳性能。记住,在这个类中,我们根据I/O的数量来衡量性能。查询优化就是寻找查询计划,以最小化执行查询所需的I/O数量。查询计划只是一系列操作,这些操作将为查询获得正确的结果。我们使用关系代数来表示它。这是查询计划的示例:
首先,它将两个表连接在一起,然后过滤掉行,最后只投影所需的列。我们很快就会看到,我们可以提出更好的查询计划!
查询优化的一个重要特性是,在执行一个计划之前,我们无法知道该计划将花费多少I/O。这有两个重要的含义。首先,我们不可能保证找到最佳查询计划-我们只能希望使用启发式和估计找到一个好的(足够的)查询计划。第二,我们需要某种方法来估计查询计划的成本。我们将用来估计查询计划成本的一个工具称为选择性估计。运算符的选择性是一个近似值,表示通过运算符到达其上的运算符的页面百分比。这一点很重要,因为如果我们有一个操作符可以大大减少进入下一阶段的页面数量(如WHERE子句),我们可能希望尽快这样做,以便其他操作符必须处理更少的页面。
大多数选择性估算公式相当简单。例如,为了估计X=3形式的条件的选择性,公式为1/(X的唯一值的数量)。本说明中使用的公式如下所示,但完整列表请参见讲座/讨论幻灯片。在这些示例中,大写字母表示列,小写字母表示常量。以下示例中的所有值都是整数,因为浮点具有不同的公式。
让我们从最简单的问题开始:连接到底是什么?如果您还记得SQL项目,您将记得在R.name=S.name上编写R内部连接S和其他类似的语句。
实际上,这意味着,你需要两个关系,R和S,并从它们在连接条件上的匹配中创建一个新关系——也就是说,对于R中的每个记录$r_i$,找到S中与我们指定的连接条件匹配的所有记录$s_j$,并将<$r_i$,$s_j$>写入输出中的新行(R的所有字段后面跟着S的所有字段)。SQL讲座幻灯片是一个很好的资源,可以让您更清楚地了解连接实际上是什么。
在讨论不同的连接算法之前,我们需要讨论当由<$r_i$,$s_j$>组成的新连接关系形成时会发生什么。无论何时计算联接的成本,我们都会忽略将联接关系写入磁盘的成本。这是因为我们假设连接的输出将被稍后执行SQL查询时涉及的另一个操作符使用。通常,此运算符可以直接从内存中使用连接的记录。如果这听起来让人困惑,不要担心;我们将在查询优化模块中重新讨论它,但现在需要记住的重要一点是,最终写入成本不包括在联接成本模型中
求和并没有告诉我们任何我们不知道的事情;我们需要通过每一轮,准确地找出读写的内容。最后的2X部分表示,为了构建哈希表,我们需要在分区通过后读取和写入每个页面。
以下是一些重要属性:
属性1表示我们必须在第一次分区过程中读取每个页面。这直接来自算法。
属性2表示,在分区过程中,我们将写出至少与读入一样多的页面。这直接来自上面的解释——我们可以在分区过程中创建额外的页面。
属性3表示我们不会读取比之前分区过程中写入的页面更多的页面。在最坏的情况下,pass i中的每个分区都需要重新分区,因此这需要我们读取每个页面。然而,在大多数情况下,一些分区将足够小,以容纳内存,因此我们可以读取比上一次生成的页面更少的页面。
属性4表示我们将构建哈希表的页面数量至少与我们开始时的数据页面数量一样多。这是因为分区过程只能增加数据页的数量,而不能减少它们。
让我们从最简单的策略开始。假设我们有一个B页缓冲区,我们希望在连接条件θ下连接两个表R和s。从最自然的策略开始,我们可以在R中获取每个记录,在S中搜索其所有匹配项,然后生成每个匹配项。
这称为简单嵌套循环连接(SNLJ)。您可以将其视为两个嵌套的for循环:
这将是一件很好的事情,但该类的主题实际上是围绕优化和最小化I/O。因此,这是一个非常糟糕的方案,因为我们在R中获取每个记录,并在S中读取每个页面以搜索匹配项。这样做的I/O成本将是[R]+|R|[S],其中[R]是R中的页数,|R|是R中记录的数量。虽然我们可以通过在for循环中切换R和S的顺序来稍微优化,但这确实不是一个很好的策略。
注意:SNLJ不会产生|R| I/o来读取R中的每一条记录。这将花费[R]I/o,因为它实际上更像是“R中的每个页面$p_r$:$p_r$中的每个记录r:S中的每个页$p_s$:$p_s$中每个记录s:join”,因为我们不能一次读取少于一页。
有时,排序对于这个问题来说有点过分。在许多情况下,我们只想将相同的值分组在一起,但实际上并不关心值的出现顺序(考虑分组方式或重复数据消除)。在数据库中,将类似的值分组在一起称为哈希。我们无法以您在61B中学习的标准方式构建哈希表,原因与我们无法在最后一个注释中使用快速排序相同;我们无法将所有数据存储在内存中!让我们看看如何构建一个高效的基于外存的散列算法。
因为我们不能一次将所有数据放入内存,所以我们需要构建几个不同的哈希表并将它们连接在一起。但这个想法有一个问题。如果我们构建两个单独的哈希表,每个哈希表中都有相同的值(例如,“Brian”出现在两个表中),会发生什么?连接这些表将导致一些“Brian”不在彼此旁边。
为了解决这个问题,在用内存中的数据构建哈希表之前,我们需要保证,如果某个值在内存中,那么它的所有出现都在内存中。换句话说,如果“Brian”至少在内存中出现一次,那么我们只能在数据中每次出现“Brian”,当前都在内存中的情况下构建哈希表。这确保了值只能出现在一个哈希表中,从而使哈希表可以安全连接。