老万故事会

【老万】后 C++ 演义(第一回、第二回)

第一回

比雅尼喜降生奥胡斯港
老修士神预言救世秃头

奥胡斯港东逝水,
浪花淘尽英雄。
是非成败转头空。
代码依旧在,
几度夕阳红。

秃发异人比雅尼,
惯看秋月春风。
一壶浊酒喜加加。
业界多少事,
都付笑谈中。

-- 调寄《临江仙》

话说天下大势,分久必合,合久必分。万事万物,皆循此理。譬如计算机行业,编程语言层出不穷,各领风骚数年,鲜有能一统天下永立潮头者。而 C++ 语言自呱呱坠地,便矢志演进,时时偷师其它一众语言,自强不息与时俱进,任四十回春去秋来,仍屹立排行榜前列,堪称一绝。如各位看官不弃,小可便将 C++ 之历史未来梳理一番。

溯源 C++,须从二战后之欧洲讲起。

Image

单表西洋有一王国曰丹麦,位处北欧,乃美人鱼之故乡。其三面环海,气候宜人,北望瑞典挪威,南接德意志。那丹麦国定都哥本哈根达斯。提起哥本哈根学派,一众先贤玻恩、海森堡、泡利、狄拉克无不令识文断字之人肃然起敬。丹国人收入颇丰,生活闲适,有丝竹之悦耳,无案牍之劳形。这端的是个修身养性含饴弄孙之好所在。

Image

却说丹麦国都西北有一港城,唤做奥胡斯。此城东临沧海,百草丰茂,集日月之精华,聚天地之灵气,更有往来通商船只络绎不绝,将那万国奇珍汇聚一隅,奥城人得以见多识广,宠辱不惊,亦不乏博学之士。

七十二年之前,那奥胡斯有一夫妇,祖传姓氏斯特劳斯特鲁普,比那斯特劳斯竟然还多出一特鲁普。旧年将逝之时,斯特劳斯特鲁普太太诞下一足月男婴。夫妇二人好不欢喜,给男婴取名比雅尼,比那雅尼竟多了一比。

Image

比雅尼满月之时,天降瑞雪。老斯特劳斯特鲁普夫妇大宴宾客,一时斯府高朋满座,人声鼎沸,热闹非凡。酒过三巡菜过五味,来客依次献词,祝福小比雅尼前程无量。这个曰:公子天庭饱满,必为大福之人。那个道:令郎地阁方圆,势将威震四海。一时间,斯特劳斯特鲁普老俩喜不自胜,连声称谢。

Image

忽有一人上前,朗声道:此子日后必秃!众皆惊诧,何方狂徒如此不识好歹,口出妄言?那老斯特劳斯特鲁普更是一口老血涌上喉头。定睛一看,却是隔壁基督礼拜堂之一老修士。老斯怒曰:

兀那小人,我与你往日无冤近日无仇,每周礼拜,奉献不曾少与你。今乃我儿大喜之日,我这厢给你好生招待,白面的馒头紧着你吃,红高粱的烧酒紧着你喝,不想你出口伤人,婶可忍叔不可忍。来呀,烦各位高邻齐动手把他叉将出去!

众人正待上前,那修士却微微一笑,道声且慢,于怀中掏出一物,徐徐展开,却是一副绣像,图中七名男子,发量由密渐稀。

Image

修士道:斯老息怒,出家人不打诳语,容我细细道来。列位可知图灵君?众人闻言,面面相觑。修士又言:

昔年万国二次大战,盟国能胜出,此君功不可没。想那德意志帝国,兵强马壮,更借英尼格玛(Enigma)密码机千里传音,令盟国束手无策。艾伦·图灵君面壁三载,十年前始制成神器,曰破壁(Bombe)。此物神谋妙算,破德军密码如探囊取物,助盟军反败为胜。图君尝言:百年之内,计算之机必发扬光大,计算之技必成经天纬地之道。操控计算机之人,谓程序员也。试看明日之环球,得计算秘技者得天下,程序员正当其时。吾观公子奇人异相,疑似救世主降临,日后必成程序员之大统领。凡程序员者,头发愈短见识愈长,秃发乃程序员之无上境界。是以谓小比必秃,不秃不足以立威也。

Image
图灵君及破壁机

老斯闻此言,怒气顿消,喜极欲泣,将那修士一把拉过,曰:

贤侄金玉良言,老朽茅塞顿开。图灵图灵,不秃不灵。他朝若吾儿如斯言,必倾囊以出,为耶稣菩萨重塑金身也么哥!

众人闻之,击节点赞。

那小比雅尼,果然冰雪聪明,自小便博闻强记,举一反三,四乡八里无人不服。却说寒暑更替,斗转星移,不觉比雅尼已及弱冠之年。其人不负众望,折桂于奥胡斯大学。也是上天眷顾,奥大教授克利斯登·奈加特正是面向对象编程技术发明者。他见比雅尼面相清奇,便生了爱才之意,耳提面命,悉心栽培。未几,小比便获数学与计算机科学之硕士。

Image
奈加特日后因其为程序员找对象之卓越贡献喜获图灵奖,暂且按下不表

丹国虽好,难容比雅尼万丈雄心。小比既得硕士,便毅然辞别父母恩师,负笈英伦,追随祖师爷图灵入剑桥去也。凡四年,比雅尼喜提计算机博士学位,意气风发。时西元一九七九年,距图灵君因性向不为社会所容含冤弃世二十又五岁矣。

第二回

离英伦情切切欲成霸业
入贝尔喜加加初出江湖

经二战洗牌,大英帝国渐已式微,美利坚合众国后来居上,赫然新世界之老大矣。却说比雅尼习得屠龙技,便欲卖与帝王家。列位看官,物以稀为贵,是以北京大白菜运往浙江,便用红头绳系住菜根倒挂起来。其时计算机博士之稀缺,远胜于江浙之白菜。这边美国贝尔实验室正欲网罗天下英才,将稀缺资源尽入彀中,那边比雅尼有奇货可居,价高者得,双方一拍即合。比雅尼旋即易洋迁徙,落脚于美利坚合众国之新泽西州。

Image

贝尔实验室放任麾下科学家自由探索,其之于比雅尼,有如海阔任鱼跃。比雅尼亦不负良机,潜心发力,誓将昔年恩师奈加特之面向对象技术推行天下,泽被苍生。

小比深谙曲高者和寡之理。奈师对象虽好,其载体 Simula 语言却是小众,是以世人难亲芳泽。恰似一艳绝天下之女子,招婿以精通埃塞俄比亚语为前提,知难而退者必百之九九。幸喜贝尔实验室卧虎藏龙,数年之前,德尼斯·里奇君于此发明一新编程语言曰 C,问世之初便广受追捧,渐成星火燎原之势。那 C 语言,语法简洁,不似汇编语言之佶屈聱牙,又接地气,善于发掘硬件潜力,未几便编译器遍天下。美中不足,C 语言尚无对象也。

Image里奇君日后亦获图灵奖,可喜可贺

小比合计:若将奈师对象引入 C 语言,强强联姻,天下英雄谁敌手!便有了借鸡下蛋借壳上市之意。是以着手开发新版带对象之 C,名曰“新C”(new C)。后又更名“带类的C”(C with classes)。研发之初,小比无力从头开发编译器,便使了一计四两拨千斤,造出一工具曰 cfront,能将那带类的 C 源码转换为 C,再借力 C 编译器转为机器语言,妙哉妙哉。

西元一九八三年,带类的C 羽翼渐丰,比雅尼便有了自立门户之意,遂改名 C++,以示其青出于蓝胜于蓝。C++ 号令江湖之大幕,自此徐徐拉开。

Image

各位,科技之创新仰仗高级人才之交流。资讯愈发达,交流愈自由,则创新愈频繁。闭关锁国固步自封终将贻笑大方。若小比恪守父母在不远游之古训,寸步不离奥胡斯,不知世上有 C,纵其为万古一见之天才,亦难获 C++ 之成功。

世上有那食古不化之原教旨主义者,奉祖宗遗训为圭臬,以为一字不可易。殊不知祖宗亦摸石渡河也。河已改道,仍恪守旧制,河水进脑乎!比雅尼是何等睿智人物,超脱于名利之外,不拘于窠臼之中。他尝曰过:吾发明 C++,乃是要解决真实之问题。不管黑猫白猫,但凡符合 C++ 之原则,能为我所用,皆可奉为上宾。如此霸业方可成就。

比雅尼尝将其设计理念分享于世人,曰:

  • 汝当支持多种程序设计风格(过程化程序设计、数据抽象、面向对象、函数式、泛型)。

  • 汝当给程序员多重选择,即使可能引发选择困难症。

  • 汝当兼容 C,以利和平演变。

  • 汝当避免无普遍用途之鸡肋特性。

  • 若某特性需额外开销,汝当确保不用此特性时不需为其买单。


每有改动,比雅尼必以此数原则验之,不符者弃之如敝屣。此诚为老同志治国安邦之定海神针也。

诸位,软件设计如政治之理,极右极左皆致万劫不复。试想比雅尼若一味保守,止步于将奈师对象引入 C 中,C++ 必已被一众后起之秀弯道超车矣。若其放任兼收,则又物极必反,必沦为杂乱无章之一盘散沙。若论 C++ 之具体设计,见仁见智,然其开放又不失规矩之哲学,放之四海而皆准之真理是也。

便有人要问:C++ 果如此牛叉,其他人莫不该洗洗睡去了事?此言差矣。人无千日好,花无百日红。万物皆有其兴衰之理数。四十年来,无数语言前赴后继,以武林至尊为己任,成名者亦不乏其人。C++ 虽借 C 之东风得先发优势,亦负 C 之包袱具先天不足,所谓成也里奇败也里奇。沧海横流,系统编程语言扛把子之争远未落幕。欲知后事如何,且听下回分解。

~~~~~~~~~~

猜你会喜欢:

~~~~~~~~~~

关注老万故事会公众号:

本公众号不开赞赏不放广告。如果喜欢这篇文章,欢迎点赞、在看、转发。谢谢大家🙏