Blockchain Programming for New Developers — II

The Language Landscape

November 16, 2018

Code & Design

What’s the best language to kick-start a career in blockchain programming? That’s the question we set out to answer in Part I of this series. Before listing out the possible languages, in Part I we took a valuable detour of concepts. First, we defined the the three main paths that one can take towards contributing to the blockchain & cryptocurrency industry. Then later introducing a few core computer science definitions necessary to understanding the trade-offs that stem from all possible languages.

The Language Landscape

We’re finally at the heart of our topic, which is a high-level catalog & survey of available blockchain programming languages. For each section we’ll briefly introduce the language, summarize its intended purpose within the blockchain environment, overview any projects or frameworks currently in production, & finally list out learning resources for further information.

C++

Let’s kick off with the oldest language in the list first: C++. Introduced first by one Mr.Bjarne Stroustrup in 1985, C++ was created as an extension of the original C language. The idea was to maintain the flexibility, security & efficiency of C, but to streamline the language for more object-oriented processes. Thus, leading to C++ being an object-oriented language while C remains process oriented.

C++ is a particularly powerful, oldschool, domain-general language that’s quite popular for core blockchain programming.

However, the new developer be warned. As a strictly-typed language with a relatively outdated syntax relative to its peers, the learning curve is very steep. It’s likely the hardest to language for a new developer to jump into; yet it must be stated that the fundamental knowledge attained through pushing the C++ learning curve is second-to-none. As previously stated, the blockchain world heavily leans on C++ so you’ll find no shortage of learning resources:

Bitcoin Core: https://github.com/bitcoin/bitcoin

Ripple Daemon: https://github.com/ripple/rippled

C++ Tutorial: http://www.cplusplus.com/doc/tutorial/

Javascript

JavaScript is a loosely-typed, scripting programming language for the web supported by all major browsers; it is the primary language used to enhance static HTML & CSS pages to full-fledged UIs. A few of these common web UIs include animations, refreshing pages, user menus & dialog boxes, interactive maps, etc…

This language powering all webpage behaviors in modern browsers, Javascript, was never supposed to leave the highest-level presentation layer of a web app. Yet it’s undeniable that Javascript took off, especially for newcomers, in an unprecedented way. With Node.JS first placing Javascript server-side, then Angular/React/Vue basically rewriting the HTML/CSS stack client-side, full-stack Javascript has become all the rage. Without delving too deeply it’s safe to say at least a handful of veteran developers will groan at this recommendation. While there may be some merit to these complaints it doesn’t render the following sentence false:

Javascript is very newcomer-friendly, maturing, & now entrenched in all parts of the modern web stack.

For Javascript, the forefront runner in blockchain support is the Lisk blockchain project. Their landing page speaks volume in terms of their belief in building an entire blockchain ecosystem in Javascript: “Lisk makes it easy for developers to build and deploy blockchain applications in JavaScript.”

Learning Resources

Lisk: https://lisk.io/

Python

A relatively-modern programming language, Python is often the favorite for newcomers — and for good reason! Python was designed by Guido van Rossum with syntax simplicity & readability above all else. Since it’s release, Python has exploded as a simple yet powerful language with massive community support leading to Python integration literally everywhere — from web UI libraries such as Flask to machine learning essentials like NumPy.

While with native Python one can’t technically contribute to an existing blockchain, write decentralized apps, or hold an initial coin offering, it’d be a mistake to leave Python out of this list as almost every single blockchain ecosystem has one or more public tools written in & for Python.

Learning Resources

IBM Blockchain Foundations Tutorial — https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/

Ethereum Web Wrapper — http://web3py.readthedocs.io/

GO

The GO (short for GOLang) programming language is a relatively modern domain-general language developed at Google in 2007 & unveiled for public use in 2012. Designed as a robust, multi-purpose language, GO was an attempt at combining the syntax & user-friendliness of modern languages such as Python & Javascript, with the performance & security advantages of older, compiled languages such as C.

GO is a compiled language — which means it runs directly within an operating system. This feature allows maximal flexibility when it comes to using GO for multiple parts of a blockchain project. Want to contribute directly to an existing blockchain? Ethereum has a protocol SDK written in GO. Want to write a smart contract? The Linux-Foundation Hyperledger Fabric blockchain has that covered.

Learning Resources

Go Documentation — https://golang.org/doc/

Go Ethereum — https://github.com/ethereum/go-ethereum

Hyperledger Fabric — https://github.com/hyperledger/fabric-sdk-go

Solidity

Solidity is a javascript-like domain-specific language made by the Ethereum team(Gavin Wood, Christian Reitwiessner, Alex Beregszaszi, Yoichi Hirai & others) for creating decentralized apps on the Ethereum platform. It’s by far the most adapted & mainstream DSL that has seen ample adoption within the Ethereum community & blockchain industry

Image for post

For anyone looking to build a dApp or hold an ICO, Solidity is hands-down one of the most straightforward ways to dive directly into the heart of it all. Since the development of Solidity began prior to the Ethereum hard-fork, it thankfully averted any engineering effects on part of the civil disagreement, as evidenced by both Ethereum Classic & Ethereum continuing Solidity support. Furthermore, the Cardano team also recently announced Solidity support — making Solidity the single blockchain programming DSL supported in multiple blockchains.

The language itself was created with developer-adoption prioritized, which led to a syntax purposefully similar to the ever-popular Javascript with, of course, a few twists.

Learning Resources

Consensys Academy — https://consensys.net/academy/

Solidity Documentation — https://solidity.readthedocs.io/en/v0.4.24/

In Closing

Bitcoin & blockchain technology will continue to revolutionize the way data & assets are transferred — it’s clear that the impact will be global & industry-agnostic. No matter where you start, taking the first step in learning one of these languages is already a substantial first step. The mismatch in supply-demand for this skillset cannot be overstated.

Best estimates place the number of active developers worldwide, at around ~20M. Yet industry estimates state that less than 1 in a whopping 1000 active developers feel confident in their skillset to consider themselves blockchain programmers & are actively applying to open positions. For the less-arithmetically inclined, that means there are roughly around 20 thousand blockchain programmers.

If that seems like a lot let’s look at Microsoft — with a headcount of roughly 100k — let’s assume they have at least one support staff per software engineer, that leaves us with around 50 thousand programmers. On the flip-side, banking giant Goldman Sachs currently staffs ~9 thousand programmers & engineers.

The point is–this shortage of blockchain programmers is very real & the answer to your inner-dialogue but is it too late for me to start learning from scratch? is NO. For developers, investors, & regulators, and everyone else involved it’s still very early days.

The only question is what project do you want to start working on & what problem do you want to start solving?

References

Mastering Bitcoin: Programming the Open Blockchain

Mastering Ethereum: Building Smart Contracts and DApps

Blockchain Applications: A Hands-On Approach