本文来自微信公众号:金捷幡(ID:jin-jiefan),作者:金捷幡,题图来自:视觉中国
小李飞刀李寻欢的孙子叫李坏,世间绝顶高手。但在一个夜晚,他痴痴地看着一把飞刀像一道美妙的月光插进自己的左胸。—-《飞刀又见飞刀》
上篇我们聊鸿蒙的时候,花了很大篇幅说方舟。那么这个思路到底对不对呢?做过学术的人都知道,什么想法都是你第一个,那是很难的。我们看看业界有没有类似的尝试。
有个叫FireMonkey的东东实现过类似方舟的理念,而且Win/Mac/iOS/Android统统支持。这个可以翻译成“孙悟空”的玩意儿,正是现在Delphi的一部分。
从Windows 11看,微软除了支持传统的Win32、.NET程序外,还支持Web程序PWA和安卓App 。再看最新发布的Windows 365,整个操作系统都可以作为SaaS在浏览器里跑。
各种平台的边界开始变得模糊,硬件架构的鸿沟逐渐被各种编译器翻译器填平。
本文按惯例扯乱一点,顺便续写一下《程序员之神》,即Anders Hejlsberg以外的那些诸神故事。阅读下去的前提,是知道Anders是谁,那个代码飞刀例不虚发的神。“孙悟空”的事儿,我们在文章后面再聊。
一、Delphi从崛起到衰落
很多人说Anders离开是Borland衰落的原因,但这绝对是夸大了。重量级的Delphi3研发,Anders并未主要参与。Anders在Delphi发布一年后的1996年就去微软了,Delphi由其最重要的战友Chuck Jazdzewski领导到2004年,所以Chuck应该算第一功臣。
从1995年以后的七八年时间,Delphi一直给微软Visual Studio强大的压力。张小龙也在那期间用Delphi开发Foxmail一战扬名,后来他用Web技术做了邮箱、微信,还有小程序和诸神汇合,我们暂且不表。有个小八卦的是,据说“Fox”是致敬令狐冲。
微软Windows的新版本总是给Borland沉重打击。如同OLE导致Borland C++败北,.NET使得Delphi跟不上脚步,毕竟Borland没有那么多资源做复杂的升级。
尤其在那时,Java的重要性已经明显超过了Windows原生程序开发,Delphi在Borland内部逐渐失宠。
二、Blake、Chuck和Danny(BCD)
上世纪末,Borland集中火力在JBuilder上,立Java奇才Blake Stone为CTO,据说这导致了Chuck离职去微软。Danny Thorpe接管了Delphi任总架构师。
Danny本身是个励志故事。他加入Borland时只是个助理测试员而且做了5年测试,但很幸运他是给Anders和Chuck做测试。
这告诉我们岗位不重要,和谁在一起更重要。
喜欢自己烧瓷碗的Danny说自己在Delphi 5的时候才开始去看编译器,传说那时没人敢动Anders的代码。而Chuck的早期主要工作是VCL组件,“组件”正是Delphi震动天下的杀器,也引发了后来Java、C#等后来开发工具的模仿。
三、从JBuilder到VS Code
得益于Blake Stone的勇气,JBuilder相当于是用Java重写的Delphi,这使Java程序更纯正兼容。在微软Visual J++提前出局的情况下,Borland JBuilder不负所望击败了几乎所有对手,包括IBM VisualAge for Java。
在2001年IBM接受了失败,把VisualAge for Java转给开源的Eclipse。一位远在瑞士的软件工程神级人物Erich Gamma加入了Eclipse团队,随后翻盘战胜了JBuilder。
聪明的微软挖走了Blake Stone,无心恋战的Borland随后卖掉了IDE产品线。
远在捷克的IntelliJ趁机靠着专注于不断优化IDEA等产品走出商业IDE的成功之路。IntelliJ(现在叫JetBrains)是三个俄罗斯程序员在互联网泡沫破灭时创建的。厉害的是,这几位创始人一直拒绝外部投资和上市,这使他们避免了Borland的覆辙。
财大气粗的微软再从IBM把Erich Gamma挖走(凑齐了ABCDE五颗龙珠?),而且许诺Erich仍在瑞士工作而且自建团队。Erich则再次完成了自我颠覆,用Web技术(Electron)为基础打造出另一神作VS Code。
我们以前提到过贝索斯允许Chris Pinkham在南非工作做出AWS EC2,Anders远在丹麦给Philippe Kahn工作,加上张小龙保持和Pony Ma的距离。这些故事告诉我们:如果你真心牛,可以勇敢要求老板让你夏天在丽江、冬天在三亚工作。
四、Web再聚首
VS Code的设计思想完全和Visual Studio不同,Web技术驱动是其核心,我们也能看到Web技术成为开发工具大神们再次碰撞的竞技场。
Chuck和Danny加入微软后在Windows Live团队合作过,但微软社交产品并不成功,两人后来又离开了。
Chuck目前在Google工作,在转到安卓前端做Jetpack Compose之前,Chuck参与的工作居然是和Anders的TypeScript配合打造Angular 2。
Angular反过来也促进了TypeScript的发展。
Angular的竞争对手是Facebook阵营的React和后来以中国阵营为主的Vue。加上VS Code,程序员的大神们再次聚首。
Vue的作者尤雨溪也出身Google。他是一个闪耀的例子,显示了中国程序员的强大以后,在新一代衣食无忧的情况下,也会像欧洲那样产生因爱好而在编程界封神的情况。
五、Borland为什么失败
Borland的ABCD四位大神都被微软挖走,Delphi也最终被卖掉。
Danny在Quora上曾经回答Borland为什么会失败:他认为Borland的管理层想从百万量级的程序员客户转到少数量高收入的企业级客户,方向上出了问题。而Borland被董事会踢出局的传奇创始人Philippe Kahn点了赞,Kahn认为Borland应该把目标放到亿万用户的桌面应用上。
Kahn的出身是逃到法国的犹太家庭,他到美国淘金时没绿卡也没工作(相当于半非法移民),就自己开了公司雇了自己。Kahn在瑞士ETH上大学时老师是Pascal语言的发明人Niklaus Wirth,这使他对Anders的Pascal编译器慧眼识珠。
Kahn是最早采用高质量软件定价很便宜策略的企业家,Borland的产品大都是迅速抢占了市场。在Delphi诞生前,Borland曾在多个战线和巨头们开战。
Borland的dBase数据库直接挑战微软的Access和ForPro。Borland的Quattro Pro和Lotus 1-2-3的法律大战直打到联邦最高法院并罕见地4:4战平,结果微软的Excel渔翁得利。
作为曾经单挑比尔盖茨的一代枭雄,Kahn此后仍执着于触达最终用户的应用而与Web渐行渐远,乃至流于平庸。
六、“孙悟空”和Xamarin
Borland把Delphi等开发工具卖给Embarcadero以后,新主人在随后十三年居然做到了一年一更新。
十年前的Delphi XE2中开始出现了FireMonkey(孙悟空),它实现原生代码的跨平台,就是用一套Pascal代码编译就可以在苹果和安卓,甚至Windows上跑。但每一个App都要内嵌一套FireMonkey runtime。
FireMonkey和方舟一样证明了静态编译在技术上是可行的。但是FireMonkey是否能灵活对付不同的屏幕尺寸和各种兼容性问题,甚至静态编译是否有意义,仍是充满争议的。方舟倒是有个FireMonkey无法具备的优势,就是可以提前把runtime内置到鸿蒙里,这样启动App速度能快很多。
微软为了让.NET可以侵入安卓、iOS包括Linux等,搞了个有点像FireMonkey的东西叫Xamarin。用这个东西不需要会Java,只要会C#也能编安卓App。Xamarin和FireMonkey或者方舟的区别在于,它更像个即时语言翻译器。
Xamarin由Nat Friedman和一个墨西哥兄弟Miguel de Icaza搞的,之前叫Mono。这俩老兄也不是一般人,Nat Friedman目前是GitHub的CEO;Miguel是大名鼎鼎的GNOME的创始人之一,而在2014年Anders宣布.NET Core开源时,Miguel就站在旁边,并受任.NET基金会第一任董事。
七、融合
天下大势合久必分,分久必合。在多种语言多种平台百花齐放后,Web技术逐渐众神汇聚的地方,也给我们带来更多的细分领域:PWA、AMP、SPA、WebAssembly......
尤其WebAssembly,由于实现速度在数量级上的提升,逐步侵入原本认为不可能的领域,让浏览器成为一切的中心成为可能。
Web技术在手机App的使用也是现在很多人争论的话题。Web技术天生是开放的,但原生App性能好,更重要是可以很流氓,更容易控制权限和流量。
现阶段原生和Web App谁也杀不死谁,很多Web App套上原生的壳,互相融合互相欺骗。
八、小结
在这篇文章里,我们提到了丹麦人、瑞士人、法国人、南非人、墨西哥人、俄罗斯人,当然还有中国人。对软件史没有兴趣的朋友,估计对这些名字已经痛苦不堪。
码农的生活有点像多神教:学不完的经书,拜不完的众神。
Delphi像中了飞刀的李坏,他没有死,但江湖里再没人提他的名字。
本文来自微信公众号:金捷幡(ID:jin-jiefan),作者:金捷幡