In the world of computing there are currently at least a few 8900 different programming languages and many of them have uses in the Web3 world. This is a huge number of languages, especially if we take into account that the list of most used programming languages is much shorter (less than 100). This gives us a clear idea that programming languages are a widespread tool in the world of general computing and the same goes for the Web3 world.
The world of programming languages for Web3 can be said to have started with Bitcoin script, and this is so for a simple reason: Web3 is the decentralization of the Web, and Bitcoin Script even with its limited capacity, allows to build such decentralization.
In fact, developments like the colored coins, projects like Counterparty or BCOPD of ChromaWay (which would become part of OpenAssets), are just the first attempts to make Web3 a larger reality built on Bitcoin. Currently, these attempts are replicated in projects such as RSK and Bisq, which make it clear that Web3 on Bitcoin is possible, and projects under construction such as RGB and Taro Protocol, reaffirm this idea.
However, the arrival of Ethereum gave a huge boost to the idea of building Web3. This is due to the arrival of the smart contracts and Turing Complete programming languages, such as Solidity. In this way, the possibilities were expanded and we now have the ability to use a huge number of programming languages to build Web3.
The 10 Programming Languages You Need To Know To Build Web3
We have already seen that the list of programming languages is very extensive, but the most used to build Web3 are:
HTML5
HTML5 can't really be defined as a programming language itself (it's strictly a markup language), but as a union of standardized tools designed to build Web environments. It is, to put it more simply, the framework on which to build the visual and interactive Web that we know today.
HTML5 unites HTML, JavaScript and CSS to create and design applications in both Web2 and Web3. For example, every time you visit Facebook, HTML5 is present. But when you visit Uniswap, HTML5 is too, after all they are both web pages, only their inner workings make them different.
Hence, the first "language" that you must take into account when creating services in Web3 is precisely HTML5, since it will give you the tools to develop the visual section of your Web application.
Solidity (or the language of Smart contract of the blockchain)
The second language to take into account when programming in blockchain is solidity, the programming language of smart contracts of a large part of the most used blockchains.
Solidity It is the language par excellence, since most of the Web3 projects are developed on Ethereum or networks compatible with the Ethereum Virtual Machine (EVM). So, knowing Solidity helps you not only to schedule smart contracts on Ethereum, but on a wide selection of blockchains that Solidity and EVM use to create their smart contract solutions.
For example, Solidity is used in:
- Polygon
- BNB Chain
- Avalanche
- Arbitum
- Fantom
- Cronos
- Klaytn
- GNOSIS
- Kava
- Zeal
- Moonbeam
- RSK
- Astar
- moonriver
- Metis
- Oasis
- Telos
- Theta
- Wanchain
- Harmony
And this is a short list of 100+ EVM supported blockchains, which makes clear the fact that knowing Solidity opens up huge possibilities in Web3 development.
Of course, the other side of this situation also comes into play: there are Web3-capable blockchain platforms that are not compatible with Solidity. In this case, other programming languages come into play, such as:
- C++ used in EOS and Ontology.
- Haskell used in Cardano.
- Missile used in NEO and its NEO Virtual Machine, which offers native support for .NET (C#, VB.Net and F#) as well as Python, Go, Java, Kotlin and JavaScript.
- Rust is used in networks like Cosmos, through CosmosWASM, although there is also support for other languages.
As you can see, the support for programming languages in the blockchain is very broad, and the possibilities of creating smart contracts using them are practically endless.
Python
Python is a programming language with enormous possibilities, not only for building desktop applications, but for fields as diverse as scientific research, data analysis, AI, and of course, blockchain.
In blockchain, Python is widely used for data analysis, developing Web applications (using frameworks like Django or Flask), desktop applications (Electrum Wallet, is an example) or simply to enable access to Web3 APIs using this widely adopted language in the world of computing (for example, Web3 Python allows to create decentralized applications compatible with EVM).
It is precisely the great versatility of Python that makes it so widely used in the ecosystem. And indeed, now with the advent of powerful AI interfaces, most of them developed in Python, this language will see a huge explosion of usage to more effectively integrate Web3 and AI.
Rust
Rust is another programming language that is being used in the world of the blockchain, since it is designed to be safe by default at the memory level (memory-safe). This means that programs created in Rust have protections that by default make them more secure without losing speed.
Rust is widely used in blockchain for generate the well-known Virtual Machines (VM) or for smart contracts that seek to avoid problems related to the management of memory spaces and variable management. In addition, it is also used in the implementation of nodes and infrastructure software that seeks to be more secure to serve users eager for decentralization.
A good example of this use can be seen in Rust-Web3, an implementation of Web3 for Ethereum. We can also find it in the build of SputnikVM, a WASM-capable EVM for Ethereum-based networks that is implemented in Rust.
CosmosWasm or CosmWasm is also capable of using Rust to generate smart contracts with multi-chain or multi-chain support. Solana and NEAR also use Rust for the generation of their smart contracts.
In fact, Rust is one of the most used programming languages to build privacy systems such as zk-SNARKs and zk-STARKs on different blockchains, which is considered the future of many of these networks.
TypeScript
TypeScript is a superset of JavaScript, that is, TypeScript is JavaScript with vitamins in the form of slight syntax changes, strong typing, and a number of additions intended to improve readability and code purity.
Being a superset, whoever knows JavaScript quickly adapts to TypeScript, and generally whoever gets to TypeScript doesn't abandon him. After all, what you can do in JavaScript, you can do in TypeScript, usually much easier and with better tools if you're interested in have more secure code.
Here we will not talk about the typical JavaScript vs TypeScript flamewar, since in the end both are perfectly capable programming languages that developers can use for their projects.
But the growth of TypeScript in the industry puts it on the list for a reason: Many Web3 projects are migrating from JavaScript to TypeScript. A good example of this is the web3.js library itself, which was initially written in JavaScript and since 2020 the migration to TypeScript began (from version 1.3.0).
Go
Go or Golang, is another programming language that has undergone a rapid expansion in its use due to a situation very similar to what we see in Rust: safety.
Go is a programming language focused on provide a secure memory environment, a great system of garbage collector, facilitate cross-compilation (Cross-chain, enabling cross-platform support quickly), among other features that make it efficient at a computational level.
In the blockchain and P2P world there are two large projects that stand out for their use of Go as the main programming language. The first project is Go Ethereum or GETH, the leading software for Ethereum nodes and compatible networks. While the second project is IPFS or Inter Planetary Filesystem, the main platform for storing decentralized data used in DApps.
Enough reasons to learn Go? The truth is that there are many more, especially if you are interested in deploy blockchain infrastructures. For example, Docker one of the most widely used container software in the world is written in Go, so knowing the language helps programmers create custom tools (indoor solutions) for their infrastructure if they use Docker.
Projects such as Kubernetes, InfluxDB, OpenShift, and lnd (an implementation of Bitcoin's Lightning Network) are other projects related to the blockchain world that are also built on Go.
Ruby
Ruby is one of those most misunderstood languages in the programming world. Many will tell you that it is not worth learning, that it is complex and difficult. The reality is that Ruby is widely used in the industry for create reliable solutionsIn fact, many exchanges rely on Ruby to develop the software that runs their platforms, and make no mistake, the same is true in the decentralized world.
Networks like Ethereum have everything necessary to use this language in the development of Dapps. The same happens in other networks such as NEO, Cosmos, Avalanche or Polkadot. A well-known project that uses this language is Peatio, considered one of the largest open-source projects for the development of exchanges and that can be used to create decentralized exchanges (DEX).
GraphQL
GraphQL is not a programming language as such, but a language for creating data requests through APIs.
GraphQL allows you write request schemas that use APIs of a platform to obtain access to such information. In this way, it is easier for programmers to access the data that is within a platform, using a standardized structure for it.
GraphQL began its life as an in-house development of Facebook, and since its release as free software, it has been used in different projects with the same goal: to make life easier for developers.
In the blockchain, GraphQL is used to access third-party data that is accessible through APIs. For example, Bitquery has a GraphQL-compatible API access with which you can access data from blockchains such as Bitcoin, Bitcoin Cash, Ethereum, Litecoin, and other cryptocurrencies and blockchains.
The utility of this is that you can access that information without directly having that infrastructure, reducing costs and accelerating development. If you don't like centralized solutions, you can go to other projects like The Graph, which also offer this potential but using decentralized solutions.
SQL and noSQL
The latter, of course, can be complemented with knowledge of languages such as SQL and noSQL. Both languages are useful for developing Web3 applications or non-Web3 applications but still useful in the blockchain space.
For example, a block explorer is especially useful for cryptocurrency users, but they wouldn't be as useful if it weren't for the SQL databases that support their operation.
In this world there are many choices to make, but the most important are:
- SQL: MySQL, MariaDB, MSSQL, OracleDB or PostgreSQL
- noSQL: MongoDB, Redis, Cassandra, Firebase, InfluxDB.
Conclusions
As you can see in this list we have named more than 10 languages (especially when programming smart contracts) but even so, we have mentioned the main areas of interest that you should take into account when developing Web3 applications.
The reality is that the world of programming is constantly changing, that there are tools that may or may not be better suited to a certain task, but that is something that you should study when starting to develop an application, in order to to finally decide what languages and tools you will use to make your project a reality.