我讨厌面向对象的软件开发思想,很多年。
但非让我讲出个一二三来,却始终无法找到合适的理由,更无法说服别人远离“面向对象”。
这股执拗,反倒让我成为了一个“异类”,被他人认为一直在走极端。
依赖导致的复杂性,是我讨厌这种开发方式的根源。
我想做出改变。
基于“实现在框架当中做到任何两个类之间没有依赖”的诉求,我创建了 Hero 软件开发框架。
从面向对象到面向轮子
依赖有多可怕?
我写了一个工具来分析某个 APP 源代码类之间的相互依赖,发现平均10万行源代码的APP之间的相互依赖超过了5000个,如果将每个对象罗列,并在依赖之间加上连接线,整个软件就非常互联“网”了——像一张用过的渔网,密密麻麻,乱七八糟。
而彼时最佳的处理方案是,将架构好点的软件做得更加清晰,但带来的结果是网越织越大。
仔细思考后,我得出了这个结论——
框架本身存在问题,而非使用者。
这只是面向对象编程的问题之一,另一个则是“面向轮子”编程。
说来好笑,10年前的我在呐喊不要重复造轮子,今天的我却为轮子的滥用恐惧不已。
近期热映的印度电影《厕所英雄》传达了一个观点——改变植根于人心的文化观念,是最难的。
这也是我的感受。
关于面向对象编程带来的问题思考,我曾试图传递给身边的同事,但结果却不尽如人意。讲的次数多了反而显得自己像个絮絮叨叨的老太婆,招人烦。
去中心化和去中心化开发
去中心化的软件需要去中心化的软件开发方式。
如今,我们惊喜地发现区块链这个信任平台,正在创造无限价值。但同时也有一个思考——信任是否是完全的?
In math we trust 是否等于 we trust who use math?
说人话就是:为你开发软件的人是否值得信任?
以 imToken 为例。
你之所以信任它,盖因不得不信任。
信任它每一次的迭代,信任它依赖的每一个软件包,信任二级依赖的更多的软件包和他们背后的人。
去中心化的信任带来了严重的安全问题。
传统软件开发没有问题,安全问题再中心系统中即可解决,但 Dapp 一但失去私钥就意味着失去了一切,一行代码就可以使得万亿资产无处寻迹,无法找回。
Hero 软件框架自诞生之日起就坚持无依赖的软件开发方式,哪怕是界面上的一个 UI 元素也是独立的无依赖的,而且每一个类都是有且唯一的一个 JSON 对象接口,接收 IN,发送 OUT,当把这个类打包为HASH地址后,这和以太坊的智能合约基本是一样的。
因此,Hero 框架开发出来的应用是绝对可信任的,Hero Node 也是第一个将前后端代码都按照以太坊智能合约标准来开发的应用软件。
借助以太坊智能合约来理清这个概念。
以太坊上的每个应用(智能合约)只有一个地址,这与 Hero Node 应用被打包为一个 HASH 地址是一样的,而且地址对应的功能是唯一确定的,它依赖其它确定的智能合约,但不依赖任何不确定的数据(如时间,随机数等)。
每一个智能合约有一个开发者自主暴露的 ABI,类似 Hero 框架每一个类的 JSON 接口。
如果你能意识到把这样的应用交付到用户手中会有很多问题,我想你理解了一些我所做的东西和它可能面对的问题。
具体问题
1. 软件升级
智能合约正在创造巨大的价值,但基于智能合约的 Dapp,技术角度讲是无法进行产品迭代的,合约的每次更新必须重新部署,合约地址就会发生变化,实际上就变成了另一个 Dapp。
Hero Node 应用是直接交付到用户手中的,不能没有产品迭代,这样也没法做复杂软件。Hero Node 框架有一个工具会支持自动新版本 HASH 发现,所以开发者只需要将新版本 HASH 地址写入固定智能合约,应用会自动发现并提示用户是否使用新版本,当然用户可以选择不使用,我们把选择权交给用户。
2. 目前只做完全去中心化应用,场景是否太少?
场景其实不少,但是应用开发者很难转换过来,学一个技术开发很容易,换一个思维模式是很难。
Hero Node 目前也可以支持半中心化应用,开发者可以在一个黑盒类中使用中心化数据和他现有的业务逻辑,但是这样的行为会被系统默认拦截,除非用户选择信任这个“中心”,我们也希望通过渐进的方式推进完全去中心化应用的发展,值得一提的是,Hero Node 官方应用市场会给完全去中心化应用绿色推荐标志。
3. 这样完全去中心化的应用没有人维护,如何保证他们的存在和可运行?
这就是 Hero Node 所做的事情,建立完全去中心化应用的服务节点,并且这些节点是自由的、任何人可运行的、被经济激励的。
回到软件开发思想,你能认同目前的软件开发方式不能适应去中心化软件生态吗?
如果能理解,并且有兴趣可直接发送邮件给 hr@heronode.io。
我期待更多开发者加入 Hero Node 共建去中心化大生态。
作者:刘 国 平
区块链应用技术专家、比特币第一批矿工、Hero 移动跨平台框架开发创始人,Hero 理事会会长。曾任职万得资讯、第九城市、点融网等知名互联网公司负责技术研发、并深度参与点融网区块链应用场景开发。
深耕 Hero 框架开发和区块链应用场景开发多年,于17年将二者相结合,创建全新的 Hero Node,致力于让天下没有难开发的 Dapp,坚信 Dapp 时代将让生活更加美好。
本文来源于微信公众号“HeroNode”。
网友评论