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.
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.
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/
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.
IBM Blockchain Foundations Tutorial — https://developer.ibm.com/courses/all/ibm-blockchain-foundation-developer/
Ethereum Web Wrapper — http://web3py.readthedocs.io/
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.
Go Documentation — https://golang.org/doc/
Go Ethereum — https://github.com/ethereum/go-ethereum
Hyperledger Fabric — https://github.com/hyperledger/fabric-sdk-go
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.
Consensys Academy — https://consensys.net/academy/
Solidity Documentation — https://solidity.readthedocs.io/en/v0.4.24/
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?