建议和反馈

请填写你的反馈内容

开发者的区块链编程终极指南

2019-12-01 ·3735次阅读 ·读完需要26分钟

对于经验丰富的开发人员而言,区块链也会造成混乱。但是,对于开发人员而言,获得更多有关这项革命性新技术的知识很重要。本指南介绍了区块链的基础知识,并回顾了对区块链开发有用的几种语言。


一个偏爱老式C#语言,另一个偏爱使用Python脚本,第三个偏爱流行的JavaScript实现,第四个参与者兴奋地讨论了即将推出的特定于领域的NEO语言。


面板发布后,我有两个想法:


NEO编译器具有认真的多语言开发支持。

缺乏有组织的资源,特别是对于新开发人员,区块链编程的学习曲线是残酷的,并且非常恼怒。

本文旨在解决第2点问题。要最大限度地发挥本指南的有效性,就必须将预期的受众减少到一个狭n的领域:希望专门涉足区块链领域的新老程序员。对于资深的开发人员,程序员和软件工程师来说,以下部分可能会有所帮助,但是,您可能会发现它们很基础。高级工程师可以通过滚动到熟悉的所选语言来最大化他们的时间,并开始撕裂所附的学习资源和文档。


所以您认为您想闯入区块链编程,是吗?让我们从进一步定义确切的区块链编程开始。


新兴产业

一般而言,比起死记硬背,没有明确买入的东西,更容易学习个人感兴趣并与价值观保持一致的主题。我高度强调,该原则在与生俱来的,迅速发展的领域(例如区块链编程)中越来越多 地应用  。在开始之前,让我们检查一下区块链开发人员在新兴行业中面临的一些挑战。


首先也是最重要的是,在“区块链”到底需要做什么与不需要做什么之间存在持续的公共差异。花一些时间在加密货币推特上,这将清楚地表明部落加密货币社区是如何发展的,以及一小段时间,他们的开发社区已经变得如此。无节制的部落主义自然导致人们对应该成为客观内容的话题产生偏见,这为即将到来的开发人员增加了另一层困惑。


接下来,由于大多数项目都处于测试网络阶段,并且实时项目不断更新,分叉,并且经常遭受黑客攻击,因此看到文档不完整和教程未完成也就不足为奇了。这片土地正在迅速发展,需要一致的迭代-对于任何团队来说都不是一件容易的事。


最后一个真实的烙印是,区块链编程十分复杂,由多个相交领域组成,这些领域至少需要对以下方面有基本的了解:经济学,密码学,货币,数据结构,财务政策和物理学。仅学习这些领域中与区块链编程相关的部分就需要花费大量时间来理解-这里没有捷径。


部落主义,杂乱无章的文档和复杂的基础知识。陡峭上升的所有警告信号。为了通过这些进入壁垒充分激励自己,它有助于首先弄清区块链编程的确切   含义。此外,它可能有助于发现……


你为什么要学习区块链编程?您要专门从事哪个项目?您要解决什么问题?


解构区块链编程

如果您已经知道您热衷于从事哪个项目,那就赞誉—我建议您转到组织GitHub存储库或ctrl-Fing这里选择的语言以继续阅读。以下部分将使那些无法确切指出最适合他们的项目和所需技能/语言的人受益,这是未来潜在学习路线图的起点。


通常,区块链编程可能意味着三件事:


部署初始代币发行(ICO)

构建智能合约或去中心化应用(DAPP)

为现有区块链或部署新区块链做贡献

强烈考虑上述三个选项,因为它们每个都提供一系列不同的语言和学习曲线。此外,它们还可以帮助您更进一步地阐明自己的确切  偏好。语言标准的进一步细分指日可待;但是,不要忘记个人喜好是通过学习新技能来激励自己的全部。


假设第一天的软件工程师同样有兴趣了解所有三种类型的区块链编程-他们可以根据什么其他标准来阐明最友好的发展道路?


通用语言与领域专用语言

语法可读性和学习曲线

通过研究这三个标准,我们最终将获得一个可靠的上下文框架,并将其应用于语言列表。


通用与特定领域

很难对各种定性质量的工具进行分类—编程语言也不例外。在这里,我们将所有可能的区块链编程语言分为两个不同的类别:领域特定语言和通用语言。


通常,领域特定语言(DSL)是一种为特定应用程序设计并特别适合的计算机语言。顾名思义,通用语言(GPL)是一种广泛适用于许多编程领域的语言。


通用语言

通用语言是您可能听说过的语言,例如Java,Javascript,Ruby,C ++和Python。在通用语言中,人们可以通过定性和定量的差异和相似性(例如可读性,编译,严格类型化,前端/后端等)找到无限的方式对它们进行进一步的分类。基于首次友好的良好经验法则是如下:


Java,Python和Ruby通常对新手来说更容易,因为他们的学习曲线较少,而C ++和Java通常需要更多时间来学习。


请注意,编辑者切勿评论以一组语言或另一组语言开头的新人的第二和第三级后果。这些语言的其他功能存在很多争论,例如,迫使新来者首先通过一种严格类型的语言来理解变量类型,我们正在绕过这种严格类型的语言,以最大限度地利用这种语言,从而使新开发人员严格地接近区块链领域。


对于新手来说,选择通用语言的最大优势是可以立即在区块链编程之外的众多领域中应用该语言。不幸的是,同一枚硬币的反面为那些希望加入就业市场的新来者带来了不利条件,因为您可能会直接与具有多年使用通用语言经验的其他领域的高级和资深软件工程师竞争。


特定领域的语言

为了提供上下文,让我们从区块链编程中退一步。尽管这是一个相当新的编程领域,但新编程领域本身的概念并不是什么新事物–您不必为最近的流行语机器学习中的知识  而过头  。还见证了一种或多种领域特定语言的自然发展的一些其他编程领域是:统计信息(R,MatLab),数据库查询(SQL),Web UI(HTML,CSS)。


领域特定的语言区块链程序员需求量很大,供应很少:这些年轻的语言无疑是上面列出的三个区块链编程选项中的一个或多个的唯一目的,无疑为找到职业生涯提供了最清晰的途径。


由于这些语言是从头开始设计的,因此要考虑到区块链和智能合约工程,因此经验丰富的开发人员可能很难重新调整其他语言的参考框架。


虽然新手具有崭新的编程习惯,但他们却将所有必要的东西都整理出来,以开始在当前或将来的项目中部署代码。


同样,通过绕过通用语言中非常真实的编程基础,如果不赞成使用特定领域的语言,则可能会发现他/她处于明显的劣势。


下图从DSL / GDL细分中分解了可能的区块链编程入口点。透明/远距离语言是未 详尽介绍的语言  :


语法可读性和学习曲线

不同的编程语言根据其语法的简单程度,提供不同级别的可读性   。语法是指编程语言的指定拼写和语法规则。通常,语法的可读性与学习曲线的陡峭程度相关。难以阅读的代码使得难以学习的代码。同样,该规则当然也有例外,但是出于我们的目的,这种线性关系成立。


我们将使用两个关键但通用的编程语言语法功能来创建专门针对新开发人员和区块链编程语言的可读性理解。这些概念中最常见的是宽松类型与严格变量类型。


宽松与严格打字

所有编程都广泛使用变量。但是,不仅有一个普通的常规变量类型,还有很多,每个都有唯一的属性。您可能已经听说过其中一些变量类型,例如字符串,整数和布尔值。每种编程语言都在语法中利用了这些自然类型。但是,每种语言都使用自己的变量引用逻辑将这些变量类型分层。某些语言(例如Python和Javascript)允许开发人员仅使用单个“ var”变量:var  example =“ coincentral”。这种灵活性使开发人员可以避免繁琐的过程,以确保在每一行中正确设置每种变量类型。 隐藏低级变量分配的语言称为松散类型的语言。


后者是严格类型化的语言,由更冗长的,尽管更具描述性的语法组成。用严格类型语言声明变量包括专门声明开发人员打算使用的原始变量类型:  字符串  示例  =“ coincentral”。如果将其与以前的变量声明进行比较,请特别注意加粗的“字符串”。变量的类型化是松散类型语言和严格类型语言之间语法上的关键区别。语法上的差异并不仅限于声明变量,它是一种主要的语言设计功能,遍及每种语言。


松散类型和严格类型的语言都提供了很多利弊的权衡。对于新来者来说,最重要的折衷之一是与这两种类型相关的学习曲线。通常,松散类型的语言为新来者提供了更友好的语法,因此降低了进入门槛。但是,要考虑的最大的直接缺点是在与变量类型进行交互时,基础软件工程知识的严重不足。


利用这些信息(无论您认为合适),我们通过以下松散类型和严格类型的语法在视觉上将区块链编程语言库分开:


语言景观

我们终于在本文的核心部分,它是可用区块链编程语言的高级目录和调查。对于每个部分,我们将简要介绍该语言,总结其在区块链环境中的预期目的,概述当前正在生产的任何项目或框架,最后列出学习资源以获取更多信息。


C ++

让我们从列表中最古老的语言开始:C ++。C ++最初是由Bjarne Stroustrup先生于1985年提出的,其创建是对原始C语言的扩展。这个想法是为了保持C的灵活性,安全性和效率,但是为了简化面向对象的过程而简化语言。因此,导致C ++是一种面向对象的语言,而C仍然是面向过程的。


C ++是一种功能特别强大的老式通用领域语言,在核心区块链编程中非常流行。


但是,将警告新开发人员。作为一种严格类型的语言,其语法相对于同类语言而言已相对过时,因此学习曲线  非常  陡峭。对于新开发人员来说,使用语言可能是最困难的。但是必须指出,通过推动C ++学习曲线而获得的基本知识是首屈一指的。如前所述,区块链世界在很大程度上依赖C ++,因此您会发现学习资源不缺:


比特币核心

涟漪守护程序

C ++教程

的JavaScript

JavaScript是所有主要浏览器都支持的用于Web的松散类型的脚本编程语言。它是用于将静态HTML和CSS页面增强为完整UI的主要语言。这些常见的Web UI包括动画,刷新页面,用户菜单和对话框,交互式地图等。


这种语言支持现代浏览器中的所有网页行为,Javascript从来没有离开过Web应用程序的最高层表示层。但是不可否认的是,Java脚本以空前的方式起飞,特别是对于新手。Node.JS首先将Javascript放在服务器端,然后Angular / React / Vue基本上重写了客户端的HTML / CSS堆栈,全栈Javascript成了风行之物。不必太深入研究,可以肯定地说,至少有少数资深开发人员会为此建议而吟。尽管这些投诉可能有一些优点,但它不会使以下句子为假:


Javascript非常新手友好,已经成熟,并且现在已经在现代Web堆栈的所有部分中根深蒂固。


对于Javascript,区块链支持中最前沿的是Lisk区块链项目。他们的登陆页面表达了他们对使用Java构建整个区块链生态系统的信念:“ Lisk使开发人员可以轻松地在JavaScript中构建和部署区块链应用程序。”


作为一种相对现代的编程语言,Python经常是新人的最爱-这是有充分理由的!Python是由Guido van Rossum设计的,其  语法简洁性和可读性  高于一切。自发布以来,Python已发展成为一种简单而强大的语言,并得到了广泛的社区支持,从而使Python几乎可以集成到任何地方-从诸如Flask之类的Web UI库到诸如NumPy之类的机器学习要素。


尽管使用本地Python不能从技术上为现有区块链做出贡献,编写去中心化应用或持有初始代币发行,但将Python排除在此列表之外是一个错误,因为几乎每个区块链生态系统都有一个或多个公共用Python编写的工具。


GO语言

GO(GOLang的缩写)编程语言是Google于2007年开发的相对现代的领域通用语言,并于2012年公开发布。GO是一种健壮的多用途语言,旨在将语法和用户结合在一起现代语言(例如Python和Javascript)的友好性,以及较早的编译语言(例如C)的性能和安全性优势。


GO是一种编译语言–这意味着它可以直接在操作系统中运行。在将GO用于区块链项目的多个部分时,此功能可提供最大的灵活性。是否想直接为现有的区块链做贡献?以太坊有一个用GO编写的协议SDK。想写一份智能合约吗?Linux基金会的Hyperledger Fabric区块链已经涵盖了这一点。


Solidity是 由以太坊团队(Gavin Wood,Christian Reitwiessner,Alex Beregszaszi,Hiichi Hirai等人)制作的类似于javascript的  特定领域语言,用于在以太坊平台上创建分散式应用程序。它是迄今为止最适应和主流的DSL,在以太坊社区和区块链行业中得到了广泛的采用。


对于任何想要构建dApp或持有ICO的人来说,Solidity是最直接的方法之一,可以直接深入其中。自从以太坊硬分叉之前开始Solidity的开发以来,令人欣慰的是,它避免了部分民事分歧的任何工程影响,以太坊经典和以太坊都继续提供Solidity支持证明了这一点。此外,Cardano团队最近还宣布了Solidity支持–使Solidity成为多个区块链中支持的单个区块链编程DSL。


该语言本身是在开发人员采用优先级的情况下创建的,这导致了一种有目的的语法,该语法与流行的Javascript相似,当然也有一些曲折。


比特币和区块链技术将继续革新数据和资产的传输方式-显而易见,其影响将是全球性的,并且与行业无关。无论您从哪里开始,迈出学习这些语言中的一种的第一步已经是实质性的第一步。不能夸大此技能组的供需不匹配。


最佳估计是,全球活跃的开发人员数量  约为2000万。 然而,据业界估计,在多达1000名  活跃的开发人员中,只有不到1  名对自己的技能有信心,可以考虑自己成为区块链程序员并正在积极地申请空缺职位。对于算术较少的人来说,这意味着  大约有2万名区块链程序员。


如果看起来很多,让我们看一下拥有大约10  万名员工的 Microsoft-  假设他们每位软件工程师至少有一名支持人员,那么我们大约有5万名程序员。另一方面,  银行业巨头高盛目前拥有约9000名程序员和工程师。


关键是–区块链程序员的短缺是非常现实的,也是您内部对话的答案,  但是对我来说从头开始学习为时已晚? 是  不。 对于开发人员,投资者,监管机构以及其他所有人而言,这还处于初期。


评论(0)问答(0)
请先登录或注册

请先登陆或注册

相关推荐

从 Portal Wallet 到 PW-SDK,如何从互联网打开一个突破口

在区块链世界里,「如何增加链的用户」是一个公链们被反复被问到的话题。你的链相对于其他链有什么优势?其他公链上成功的应用和生态能否在你的链上同样复制?怎么更好把其他链的用户导入你的生态里?这些提问,可能......
非常刘佳妮 · 2020-10-13
487阅读 · 0赞赏 · 0问答

强势入局,区块链专利将成为银行下一个战场?

作为金融科技领域的一项重要技术创新,区块链应用悄无声息地落地开花,专利成为各大企业军备竞赛彰显技术实力的重要领域。近期,工商银行、中国银行等国有大行在区块链专利布局方面动作频频,意在争抢关键技术的掌控......
Mecoooo · 2020-10-05
665阅读 · 0赞赏 · 0问答

如何解释“我篡改了区块链”这个问题

区块链数据“全局一致”、“难以篡改”这两个特性已经广为人知,是区块链营造“信任”的基石。为了达到这两个效果,区块链的共识、同步、校验等技术细节足可大书特书,而本文要从“我篡改了区块链数据”讲起。“我篡......
Moon · 2020-07-03
2237阅读 · 0赞赏 · 0问答

漏洞分析 | 一千种死法之 智能合约函数调用错误

6.18期间正愁”千手观音“还不够剁,如果一觉醒来,突然发现爸妈的账户可以随便用了,前男友的钱因为权限设置错误而面对你以及他所有前女友开放了。不是天上掉馅饼,而是老天可能漏了个洞。我的是我的,你的还是......
Rooney · 2020-06-27
1744阅读 · 0赞赏 · 0问答

波卡启动 NPoS,几个知识点了解一下?

Polkadot 今日启动 NPoS(验证人选举),其技术方案也再次引发关注。关于 Polkadot 的几大技术知识点,我们都总结在此了:· Polkadot 网络,中继链、平行链和转接桥· XCMP......
多来A梦 · 2020-06-19
2195阅读 · 0赞赏 · 0问答

区块链 Go并发编程之Channel生产者-消费者模型及单向Channel

生产者与消费者关系在channel中生产者消费者关系可以简单的理解为:生产者和消费者一定是一一配对的状态存在先看一个简单的案例,生产者与消费者关系为1:2package mainimport......
· 2020-06-17
3203阅读 · 0赞赏 · 0问答

16044.0

LK币

36

粉丝

397

笔记

感谢"区块链社区"

这篇精彩的笔记,目前已经帮助

  • 0
  • 3
  • 7
  • 3
  • 5
喜欢0
链客社群 加入

微博进入

商务合作>

广告投放>

公司名称:北京链客行科技有限公司

联系方式:010-67707199

ICP备案号:京ICP备18032136号

Copyright:链客区块链技术问答社区 版权所有

感谢您的提问,问题被社区永久收入以便新人查看。一定要记得采纳最佳答案哦!加油!

感谢您的善举,每一次解答会成为新人的灯塔,回答被采纳后获得20算力和相应的LK币奖励

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!

您将赞赏给对方2LK币的奖励哦!感谢您的赞赏!