Fixing the world 修复代码的世界——ZeroMQ的哲学

译注:ZeroMQ是一个在2009年末发布的网络编程通信库。经过多年的发展,如今的它是一个集套接字通信、消息队列、异步编程的网络开发框架。

在其官方文档的第一章,有这样一段引人启发的的一节《Fixing the world (Pieter Hintjens)》,这也是笔者在进入技术行业以来受影响最深的一段文字。在文中,作者指出了一种思想,一切代码都是互相连接的,它们最终连接人类的大脑,并提到一些网络、异步等的编程难题,都可以通过“连接”来更容易的解决。笔者经过翻译整理,带大家感受ZeroMQ作者的构想。

在多年以后今天、迈入人工智能时代的今天,理解作者的这些思路,能带给我们对人工智能的未来全新的认识。


怎样解释ZeroMQ是什么?我们可能会说出所有它能展现的美好功能:它就像打了鸡血的Socket套接字、就像会路由分发邮箱,它的性能卓越!一些人可能尝试分享他们愉悦的使用感受:编程变得更简单了,复杂性消失了,它打开了我们的心灵。一些人会尝试跟以往作比较:它更小,更简单了,但是,又有点似曾相识。就我个人而言,我也希望解释起我们最初为什么要开发ZeroMQ,因为,这是身为读者的你也很想知道的问题。

编程是一门伪装成艺术的科学,因为我们中的大多数压根不明白软件的本质;即使学过这方面的知识的话,也学的很少。
软件的本质,不是算法、数据结构、编程语言和抽象形态。这些只是我们制造的工具,我们用完就忽略掉的工具。软件的真实本质,其实就是人类的本质——具体来说就是,当事情变的复杂的时候,一个人的能力有限,我们会通过协作,来把大的问题分成小的问题来处理。这才是编程科学:人们将制作好的一块块的容易理解、使用的小构件,把它们砌在一起来解决大问题。

我们身处一个互联的世界,现代软件必须要畅游这个世界。因此为未来设计的的这些超大型软件里的小构件,都是互相连接并且是大规模并行的。“健壮、沉默”的代码是远远不够的。代码之间必须要会交流。代码之间必须是善于交际的。代码的运行必须像人类的脑袋一样,数以万亿计的神经元互相传递消息,一个大规模并行的去中心化的网络,没有单点故障,还能解决重大困难问题。毫无疑问,未来的代码就像人脑一样,一定程度来说,网络发展的最终连接点,就是连接人们的大脑

如果你做过线程,协议或者网络相关的工作,你会意识到要做好它们是相当不容易的一件事情。即使通过很少的Socket(套接字)去连接少量的程序,你也要在日常生活工作中面对各种令人厌烦的问题。想连接更多的,数以亿计的程序? 这个成本根本令人不敢想象——那是一个遥不可及的梦想。连接计算机是如此的困难,这造就了软件服务业这样一个数以几十亿美元的产业。

目前我们所在的世界里,网络布线能力比我们能够使用它的能力更加超前。而在20世纪80年代,我们遇到一个软件危机,Fred Brooks等卓越的软件工程师认为再没有“银弹”可以让“任何一项技术或方法可使软件工程的生产力在十年内提高十倍。”

译注:所谓的没有银弹是指没有任何一项技术或方法可使软件工程的生产力在十年内提高十倍。

Brooks错过了免费和开源软件时代,它们解决了这场危机,使我们能更加有效的分享知识。今天我们面临着另一个软件危机,一个我们还没有讨论广泛的问题。只有最大最富有的公司才有能力去创建互相连接的应用程序。尽管有云计算的出现,但是它是企业专有的。我们的数据、我们的知识正在从我们的个人电脑里消失,并转移到我们无法访问和与之抗衡的计算云中。谁拥有我们的社交网络?这就像大型计算机革命的反转剧情。

译注:当年计算机革命,追求个人更大的空间更好的性能,在云计算时代,剧情完全反过来了,空间、性能和越来越多的软件服务的已经转移到了云上,个人电脑被弱化

这些政治哲学的东西我们就留给其它书来讨论吧。关键的一点,虽然互联网为大规模代码连接提供可能性,但现实是要实现它,对我们多数人来说还是遥不可及的。大量引人关注的问题(在健康,教育,经济,交通等领域)依然没有解决,因为没有办法把代码连接起来,因为没有办法连接所有的这些大脑使其可以协同工作来解决这些问题。

人们做过很多的尝试去解决代码连接连接的问题。制定过的上千的IETF规范,每一个都在尝试解决部分难题。(译注:IEFT,互联网工程任务组,是全球互联网最具权威的技术标准化组织)对于应用开发者而言,HTTP可能是一个足够简单的工作解决方案,但是它也可能使问题更糟糕——因为它鼓励开发者和架构师们以超大型服务器和瘦小愚蠢的客户端的角度来考虑问题。

所以今天人们仍然使用UDP、TCP、专有定制协议、HTTP和Websockets来连接应用程序。这是痛苦的、低效的、难以扩展的,并且是中央化的。分布式P2P架构主要用于娱乐,而不是工作。你有见过应用程序使用Skype(P2P 语音通讯软件)和Bittorrent(P2P下载软件)来交换数据的吗?

这让我们重新回归编程科学。为了修复这个世界,我们需要做两件事。一,解决“怎样让任何代码在任何地方互相连接”这种普遍性问题。二,封装尽可能最简单的构件来让人们理解和简单的使用。

这听起来简单得荒谬,但也许其实就是这么的简单。

译注:ZeroMQ目前是一个应用广泛的网络编程库,常见的应用场景用于多个服务器、多个进程节点之间的网络通信,也就是作者所倡导的“互相连接的代码”的应用。此外,官方更强调其是一个可取代多线程异步编程的异步编程框架。


查看原文:Fixing the World

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容