The Sol of Programming
Tags: solidity, web3, blockchain, programming
Published: 2022-08-18 22:32:23

With the high rise of interested participants in the blockchain and Web3 space, there has been a number of demanding skills flying around, skills for developers, designers, writers, you name it. That’s just how massive this space is. But today, we are going to talk about a skill for the developers, one I believe to be the most basic and required tool for any blockchain developer, and that is of course, the Solidity programming language.

## Little bit of History Lesson

Solidity was first proposed (publicly) in August, 2014 by none other, than the genius mind of one out of the two founders of the Ethereum Blockchain, [Gavin Wood](https://en.wikipedia.org/wiki/Gavin_Wood), and was later developed by the Ethereum project’s Solidity team led by another genius, [Dr. Christian Reitwiessner](https://www.linkedin.com/in/dr-christian-reitwiessner-594b0982/?originalSubdomain=de). (Pardon my continuous use of genius). Lo and behold, the Solidity language was born. Thank you Dr. Christian and Mr. Gavin and everyone at Ethereum.

## What is Solidity?

Solidity is a high-level, object-oriented programming language, which basically means its structure is based on the concept of Objects in programming. It was specifically designed for the Ethereum Blockchain network, and its programs are being run on the Ethereum Virtual Machine (EVM).
The one true sole purpose of the solidity is for creating unique blockchain programs(my words), otherwise commonly known as Smart Contracts.
Other alternatives to the Solidity language are Rust, Vyper, Yul and even Javascript can be considered as a smart contract language, if you know how to use it.

## How difficult is it to learn Solidity?

To be honest, I would say Solidity is one of the easiest languages to learn, its syntax is a combination of earlier languages such as JavaScript, Python and C++. It has a very friendly approach to developers, anyone with little to no experience in programming could definitely learn without much of a hassle.

## Features of Solidity.

Just as any programming language, Solidity has a ton of features as well, which cannot all be listed in this article, so few which i believe are unique features of the language would be listed:

- Contract Inheritance
- Specification of value and gas for function calls.
- Function modifiers
- Conversion between string and hash types
- Fallback functions
- Visibility specifiers
- Interface contracts
- Overloading  functions
- And so on.
Some of these functions may have similar names or use cases in regards to other programming languages, considering the origin story of the Solidity language, this is quite expected, but their uniqueness can only truly be felt when used.

## Solidity Frameworks

As is the case with many other languages, Solidity of course has its own frameworks. These frameworks are mainly centered on writing scripts for the smart contracts created, and also creating test cases for them. 
The most common and probably dominant of them is **Hardhat**. It is a javascript and solidity-based framework for the development of Smart Contracts. We’ve also got :

- Brownie ⇒ Python based. (Also supports Vyper)
- Truffle ⇒ Javascript based.
- Waffle ⇒ Javascript based.
- Dapp.tools ⇒ Haskell based. 

## Pros of Solidity

Having rolled out the features of the Solidity language, let’s talk about the good stuff, why anyone should learn this language, what makes the language so jolly to developers.

1. It has a similar syntax to Javascript, C++ and Python, making 
   it easy to learn and understand for developers with the 
   background of either languages.
2. Although it was originally developed for the Ethereum 
   blockchain, Solidity can still be used to program smart 
   contracts on other blockchains.
3. Being the first smart contract programming language, it has a 
   wide and accessible community.
4. Due to the implementation of the Application Binary Interface ( 
   ABI), it is able to support multiple type-safe functions.
5. It allows for the development of secure and reliable platforms 
   involved in settlement or agreement between two parties without 
   the inclusion of a third party.

## Cons of Solidity

Just like any aspect of technology, the solidity language also has its downsides and limitations, and perhaps reasons why certain developers would refuse to touch down on the language use cases.

1. Even though it has a large community where libraries and tools are created to help with its development, it is still a new language with so much to be done that programmers would have to find a way and complete themselves.
2. The language is strictly niched to one aspect of software development, which means anything out of blockchain development, the language becomes useless.
3. There is also the issue of overflow and underflow which is a prominent solidity security issue, due to the fixed size of integer data types that the EVM can support. 

## Summary

The Solidity language is an Object Oriented programming language developed for the Ethereum blockchain, but can still perform its functions for other blockchain networks. Its syntax is derived from previous languages like Javascript and C++, making it very easy to learn and understand.
Its features include Contract inheritance, function modifiers, contract interfaces and so on.
Solidity based frameworks are mainly for testing smart contracts, and writing scripts. Examples are Hardhat, Truffle, Brownie and so on.
Although the language has a lot of cool features to its advantage, it has a number of disadvantages that make development quite tiresome.


So, there you have it, i hope you have learnt a thing or two about Solidity (hopefully more), my name is Lawwee and thank you for reading my post, you can connect with me via the information below, and send a DM if there is anything you’d like to talk about or ask.

Have a good day.

LinkedIn: https://www.linkedin.com/in/mohammed-lawal/
Twitter: https://twitter.com/lawaldafuture1
Email: lawalmohammed567@gmail.com