v2ba(v2巴啦啦)

v2ba(v2巴啦啦)

说这话的人,一定是技术达人,不信往下看

前言

跨平台就像OOP,是很多技术人口中的希腊。其实挺不想说这事的,说起来有些伤人,毕竟BtOfficer也是个技术爱好者。但是有些话又不吐不快,有人看懂了技术意义,却看不懂社会意义,所以才会被35岁中年危机所困惑。

广大VB/VBA用户们,在使用过程中,难免不会遇到这样『专业而友善』的提醒。VB/VBA用户所代表的业余编程者们,在计算机专精深方面投入甚少,很容易被这样高大上的特性所吸引。那本篇,索性将视角放得更开一些,来码一码跨平台那档子事儿。

一、跨平台的诉求来源

跨平台的诉求,有两个来源,一个是纵向的技术迭代升级导致的兼容问题,另一个是横向的技术竞争导致的兼容问题。

纵向的兼容问题属于内部问题(难道不该理所应当么?这也叫跨平台,是有点不太合适的),比如操作系统因为硬件升级而在不同版本添加新特性。任何一个设计成熟的系统,都会考虑纵向升级的兼容问题,从而使得投入产出最高(能最大程度提高生态链价值),是技术发展的理想模式。

横向的兼容问题则属于外部问题,是多个厂商为了竞争,规避非己专利而导致的。横向兼容是条条大路通罗马,却是曲线救国式的。虽然能有效遏制恶性垄断,但各自高墙林立下的消耗,都是抢人头的游戏。消费者虽然可以从一个阵营跳脱到另一个阵营,但每个阵营都在增加离开的成本。如果消费者本身无法左右阵营,那么垄断只不过是重新划分地盘而已,蛋糕(消费者)只是换了个食用者。

二、跨平台的社会路径

纵向的跨,一般鲜有人提及,坊间广为传唱的恰恰是后者(横向的跨)。在西方市场经济的作用下,纵向的跨,会必然导致超级垄断。微软曾几度因该问题而险些被肢解,但最终通过游说,保住了Win系统以及IE、Office等产品的超级垄断地位。英特尔,就没这么好运了,被迫将技术授权给AMD以及Cyrix,亲手扶植起了一个强大的竞争对手。

当纵向技术日趋成熟,利润足够引起旁人眼红的时候,就会有其他人进入这一市场,硬件层面如此,软件更是如此。无论是软硬的那个层面,新进入者,都会充分利用先前的基座,并在后继的道路上以专利形式抢占最有利的据点。

是硬件及与硬件配套的基础软件(如系统)厂商们的竞争,导致了消费中转层面的困惑。要想在各大堡垒都挣上钱,不得不花费巨大,用于兼容各大平台。否则,就像现今的自媒体平台一样,但凡有个平台你自己的内容,你自个儿又没有搬运时,那就有的是力量帮你搬运。抄袭者投入在生产上的时间更少,而可以将更多的时间投入到营运,所以收效往往比原创者更丰。

横向兼容,这种Cao蛋的事,对于老板们而言,只能用苦不堪言来形容。已经丢入垃圾桶的IE,横向兼容问题又何曾不是补刀者呢!谷歌统一标准,集中力量内部进化,取得了巨大的成功,当然#下面要说的话了。为了解决同一业务多种实现的问题,于是有人提出了跨平台技术。

三、跨平台的实现及现实意义

纵观蓝色星球,跨平台无一例外都是基于字节码,这一中间层来实现的。说白了,用的其实还是纵向兼容的套路。以中间不变的标准,锁死源码端,将变化的敞口交给相对源码创作者透明的虚拟机。

从此,广大的源码编写者,无需再面对纷繁的硬件端,而是在统一的虚拟机抽象逻辑里,以一而贯之的方式无限畅游。从此,软件才算真正地摆脱了躯壳的束缚,找到了上游厂商难以左右的法宝。于是,我们看到了JAVA的崛起,给微软造成了巨大的心理阴影。

这种跨平台,能有效地避免代码逻辑的重复投入,与纵向兼容如出一辙。但这种横向的跨平台,并非跨物种,要解决的也并非什么惊天地泣鬼神的壮举,只不过是利益争抢过程中的苟且而已。

从社会意义上来讲,一定程度的竞争有利于驱动进步,但过度竞争又会增加资源的消耗。跨平台虽然可以一定程度上减少重复投入,但并不会改变上游重复投入的事实。所以,很多所谓技术栈的全平台兼容重构,本质上跟市政重复修补没什么两样。利益导致的欲望,总是贪婪的。只是老板们,终于找到了既无视上游厂商,又无视程序员个性差异的好法子。

如果,技术人员非要说,他们不用再苦恼于不同平台的适配搬砖,双手得到了极大解放时,是该给技术员说恭喜呢?还是该给老板们鼓掌呢?

四、跨平台终究难敌底层左右

过度竞争带来的繁荣是假,带来的资源浪费却是真,这迟早不符合资源匮乏的人类。雨后春笋般的上游厂商,在统一的半导体理论体系下,重归整合才是历史所趋。所以,我们看到,无论是复杂指令还是精简指令,他们之间的界限越来越模糊。

没有大而全的硬件,就没有大而全的系统。过去大而全条件不具备时,跨平台是有利于降低投入,提高生产效率的。可是,大而全的硬件要是来了呢?当各自风华已逝,全新的整合体系会不会作为新的追求呢?所以说,软件端的千变万化,终究是抵不过硬件的釜底抽薪的。

直面硬件的,正好是操作系统该干的事,但恰恰操作系统和虚拟机存在着竞争关系,否则谁会容忍他人在自己的城中构建城中城呢?现有跨平台尚且如此,那大而全的体系来临之时,又岂有还手之力?

五、跨平台陷阱

很多互联网从业者,无论是因为自身的年龄,还是随着时间的自然推演,最后总是会有前浪的无力感。但是的确很难归因于跨平台技术毕竟自己就曾推崇备至

要BtOfficer说,操作系统和虚拟机无非都是在给代码撑起运行环境,但不同之处在于,操作系统之下就是半导体的物理世界了,而虚拟机则是架在操作系统之上的空中花园。

前者虽然不至于让每个程序员徒手撸芯片,数电路,但优秀者至少可以理解这些物理设备的工作原理,能够操作他们提供的接口。C为什么难?指针的晦涩不只是语法层面的晕头转向,而是更广阔的半导体产业。

虚拟机锁死了源码端,将其从一个横向兼容问题,演替为纵向兼容问题。为了实现偷梁换柱,它不得不将操作系统的那一套再做一次简化抽象。大家都学过数学,在各个专业领域里面都有数学的身影,相信大家都见识过国内各大专业概论改写数学术语的事儿。

虚拟机同样如此,它构建了一系列专属于虚拟机的专业概念,很多技术著作不得不花费巨量篇幅,只为在这些专有概念中自圆其说。正如有人说,Java很简单,上个培训班就可以找工作了。但也有人说,Java的体系太庞大了,即便终其一生,也很难有人做到非常的精通。

在解决横向兼容的虚拟机出现之前,现今的框架的叫法还没那么流行。但是当主导横向兼容的虚拟机肆虐编程界时,越来越多的人开始感叹,框架更新迭代的太快了。很多都还没有弄明白,替代者就已经排上队了。

每个框架,其实就是一门开发语言,每次迭代都意味着需求边界的扩张,攻城掠地的事能不快么?每一个开发语言,其实就是一个圈子。程序开发的上帝视角,很容易给广大开发人员造成一种误解,那就是自己撸的肯定是香的。现实中甚至更极端,即便同一个圈子,也只有自己亲拉的才不叫屎,其余的都是屎。

这样的割据和虚拟机投射出来的伪专业概念,究竟会消耗多少无谓的精力?或许,国内35岁的困惑,能够说明一些问题。跨平台技术,被广泛地认可为,解放了程序员双手和降低了老板投资的双赢技术。但是,往往5年不到的一个周期里,程序员所学就折旧了,甚至连残值都不剩。人生有几个5年精力旺盛的周期呢?这就是跨平台存在的陷阱。

我国的互联网繁荣,在地球村上首屈一指,互联网从业人员满大街都是。但我们却算不上是互联网强国,也更算不上软件工程师强国。我们是深陷跨平台陷阱的互联网生意强国。

六、回头再看VB/VBA是否真的落伍?

硅基电子计算机一直在向更微观方面深耕,而基本结构却是一成不变。尤其是X86架构下的电子计算机,程序员可以天然迎合『越老越吃香』定律。

一方面,操作系统的投入和持续周期,是远超跨平台框架的。另一方面,无论是未来大而全的硬件还是系统,都不太可能出现太大的变异。这就意味着,持续投入有着底层保证。所以,C这样的Native语言,才会一直是现代电子计算机软件工程的基座。

Native语言的潜台词,就是面向操作系统背后的硬件的,而语法是针对编译器词法分析体系的。别看VB/VBA是多么容易让人吐槽,但它是Native的。很多人批评这门工具的时候,更多是从语法层面的表现出发,很显然他们是没有理解到Native的潜台词。

所以,二十年前的VB/VBA,和现在的VB/VBA,才能任他风云变幻,让每一个热情的探索都得以保值!

欢迎关注BtOfficer,让我们一步步来揭开VB/VBA语法背后的故事,让VB/VBA越老越香!

(0)

相关推荐