揭秘未来最有前途的后端开发语言

发表时间: 2024-06-03 13:08

过去的十年可以说是应用的十年,但未来十年,DApp 有望取得更大的成功。应用是前端开发人员的专长,DApp 也离不开前端开发人员的参与。

2008年加入互联网行业的“CSS Magic”是一位拥有十年从业经验的前端老手,他认为区块链将是下一个重要节点,而他对区块链技术也有自己的理解和启发性的观点。

InfoQ:Magic兄弟,您可以向InfoQ的读者介绍一下自己吗?

大家好,很高兴在InfoQ平台上认识大家,我叫“CSS魔术师”,熟悉我的朋友都叫我“魔术哥”。

2008 年我来到上海,进入互联网行业,转眼间已经成为了“十年经验”的前端老手。闲暇之余,我会做一些开源项目,也经常在“CSS Magic”公众号上写教程、翻译技术文档。2015 年,我还翻译了一本前端领域的重量级书籍《CSS 揭秘》,也算是对中国技术社区的一点小贡献。

InfoQ:作为一名前端工程师,您经历过哪些关键点和转折点?

其实对于我来说,“前端”本身就是一个巨大的转折。来上海之前,我一直在传统行业工作,加入互联网潮流,算是一次急转弯。不过,当时对行业大势并没有太深入的洞察,转型的动机也只是兴趣而已——做互联网行业的产品,更贴近用户,更高效,更有影响力,真的很酷!

这次转行显然是正确的。每次我回到家乡见到老同事,他们总是夸我有勇气和远见。我其实很惭愧。我没有任何远见,只是跟着感觉走。

这几年在前端领域工作还算顺利,五年前加入百姓网也是关键时刻,感觉自己的职业终于走上了正轨。

今年上半年,我偶然接触到了区块链和DApp,没想到自己会如此痴迷,内心的小宇宙又开始燃烧,“投身互联网”的冲动仿佛又浮现出来。隐约感觉自己即将走向下一个重要节点,又一波不容错过的浪潮即将到来!

InfoQ:为什么区块链和DApp会引起您的关注?

我一直对很火的东西很冷漠,所以一开始对区块链没什么兴趣,甚至有些抗拒。前端领域那些新鲜玩意儿让我应接不暇,干嘛要看区块链?然而一次偶然的机会,我意外地发现,区块链除了记账,还能跑代码;作为开发者,我还可以在区块链上开发应用!

基于区块链开发的应用程序被称为“去中心化应用程序”,简称DApps。去中心化意味着你的应用程序不仅将数据存储在区块链节点上,而且你的应用程序本身也在区块链节点上运行!

这个“新世界”深深地吸引了我。简单来说,我是一个前端工程师,由于精力有限,对后端没有那么精通;但我还有一颗做产品开发的心,一直想着有一天能独立开发出一个完整的应用,为用户提供价值。然而只有前端,没有后端,能做的事情相对有限。当我遇到DApp时,我的眼睛亮了!

你不需要后端来构建 DApp。因为 DApp 的数据是存储在区块链上的,读写数据的逻辑也是在区块链上运行的,所以我不需要用后端语言写程序,也不需要搭建后端环境,更不需要维护数据库——区块链就是我的后端!

开发DApp的经历让我想起了Flash时代的个人创作者。只要掌握了Flash,就可以做动画的一切,包括导演、编剧、剪辑、美术、特效。同样,在区块链上,只要我有前端技能,就可以编写一个完整的应用程序。这种开发经历对于一个前端工程师来说相当有吸引力。

当然除此之外,区块链和DApp还有一些先天的优势——具体的细节我们后面会讲——这也是我关注它们的原因。

InfoQ:去中心化 DApp 和传统 Web 应用程序在架构上有何区别?

两者之间确实有明显的差异,但DApp的各个环节都可以和传统的Web应用进行类比:DApp是由客户端和合约端的配合实现的,类似于传统Web应用的客户端和服务端。

顾名思义,“客户端”就是提供给用户的产品界面,可以是网页、桌面、移动端等形式,对于前端工程师来说,网页端无疑是他们的拿手好戏。

“合约端”指的是“智能合约”。智能合约是DApp的灵魂,是DApp开发者部署到区块链上的一段代码,充当客户端与链之间的桥梁——合约端负责提供接口,客户端可以调用接口触发业务逻辑,或者增删改查数据。这听起来很像一个前后端分离的Web应用。是的,前端工程师可以很快理解并接受DApp的架构模式。

InfoQ:与传统的 Web 应用程序相比,DApp 有哪些优势?

这个问题问得好,我们经常听到“区块链会颠覆某某”的说法,其实这只是一个吸引眼球的营销口号,区块链的诞生不是为了取代传统互联网,就像智能​​手机的诞生不是为了取代PC一样。

但区块链在今天受到广泛关注的事实说明它确实具备一些传统互联网无法实现的特性,因此相较于传统Web应用,区块链和DApp所擅长的场景和方向肯定是不一样的。

我们先来谈谈DApp的一些固有特征:

大家可能注意到了,我一直在说“特点”,而不是“优势”。其实所谓的优势,就是把特点用在对的地方。区块链的魅力就在于它天生与众不同,并不打算取代任何人。如果你用现有的框架去套用它,可能得不到什么有意义的结论;但如果你抛弃固有的思维,拥抱它的“与众不同”,就可能创造出一种新的应用形态。

InfoQ:您刚才提到了应用形态,对于区块链的落地,您认为有哪些应用场景或者方向比较有前景?

作为新生事物,区块链和 DApp 仍在不断发展,我们对它们的认识也在不断演变。我很难预测区块链会以什么样的应用形态实现,但我可以简单说一下 DApp 在某些场景下展现出的潜力:

InfoQ:我们讨论的DApp一般都是部署在公链上的,你们选择公链的标准是什么?DApp这个概念最早是由以太坊提出的,你们如何看待以太坊等主流的公链平台?

确实,对于尝试DApp的开发者来说,首先遇到的问题可能就是公链的选择。选择链就相当于选择开发平台,就像开发一个手机APP需要决定是iOS还是Android一样。魔法哥认为,入门阶段选择好用、有前景的公链是最明智的。“好用”可以让你快速上手,快速获得成就感,而“有前景”则意味着你积累的经验不会被浪费。

以太坊确实是DApp概念的鼻祖,我非常敬佩它的创始人。以太坊上线已有数年,但仍在不断进化,目前它的一些技术参数明显已经过时,但其深厚的积累和发展潜力仍然值得期待。

接下来不得不提EOS,今年是区块链圈最受关注的平台,EOS拥有很多独特的设计和优秀的性能,获得了不少开发者的青睐。不过EOS定位于企业级市场,对个人开发者门槛较高,很多设计一直饱受争议,因此魔哥对此持观望态度。

InfoQ:当一个前端工程师着手开发一个最小 DApp 时,他们需要掌握哪些技能,需要使用哪些工具,以及如何选择编程语言

首先我们需要对区块链的原理、DApp 架构、DApp 产品形态有一个基本的了解,接下来我们会分别从客户端和合约端来讲讲需要的技能和工具。

DApp 客户端的开发和 Web 应用的开发基本一致,可以使用自己最熟悉的前端框架、编辑器、构建工具,不需要改变开发习惯。在实现客户端与合约端的交互时,往往需要用到链上 SDK,开发者需要对此有所了解。

合约端的开发一定要遵循链的设计和生态,链除了提供客户端 SDK 之外,往往还会提供合约端开发工具,比如合约开发框架、Web IDE、合约 Lint 工具等。如果我们只是开发一个小型的 DApp,不用工具,手写其实也是没问题的,只要看下相关文档就可以了。

最后说到编程语言,各条链使用的合约开发语言也各有不同。如果我们选择的链恰好使用我们最熟悉的 JavaScript 作为合约语言,那么基本就不存在语言学习成本。关于这些方面,魔法哥也会在《CSS魔法》公众号上发布教程,希望能为大家提供一些参考和帮助。

总之,对于前端工程师来说,DApp的开发成本并不高,而且前端工程师天然地最贴近用户,更懂交互,也更有可能开发出用户体验优秀的产品。

InfoQ:您觉得前端工程师有必要学习区块链并且转行从事相关行业吗?

我认为这取决于具体情况以及你属于哪种类型。

如果你是一个谨慎、喜欢循序渐进的人,不妨先专注于一步步走好自己规划好的路线。你可以关注区块链和DApp,也可以尝试,但不必一下子就跳进去。

这一方面是因为区块链行业还处于早期阶段,很多方面还非常不成熟,毕竟传统互联网发展了这么多年,该有的都有了,而区块链才刚刚走出极客的小圈子。另一方面,区块链天生就容易受到诟病,发展方向也远未明朗,所以从业者往往需要承受较大的压力。

另一方面,如果你是一个喜欢尝试新事物、探索未知世界的激进分子,那么区块链行业可能更适合你。

总的来说,这是一个因人而异的问题。但无论如何,如果你是一名技术人员,正在为自己的职业做短期或长期的规划,那么区块链值得你了解和关注。它或许就是你打破僵局的转折点。