Solidity is a open-source programming language for smart contracts, originally developed by contributors to the Ethereum project, and still today used for Ethereum. Solidity is by far the most used smart contract programming language in the world. In the meanwhile, several other blockchains also made use of Solidity, for example Binance Smart Chain and Avalanche.
As a high-level language, Solidity does away with the need to type code in ones and zeros. Solidity makes it much easier for humans to write programs in ways they find easier to understand, using a combination of letters and numbers.
The programming language is statically typed, with support for libraries, inheritance, and complex user-defined types. As Solidity is statically typed, the user must specify each variable. Data types allow the compiler to check for the correct use of variables. Solidity data types are usually categorized as either value types or reference types. Also interesting to know: There are no NULL values.
A major difference between value types and reference types can be found in how they are assigned to a variable and stored in the EVM (Ethereum Virtual Machine). While changing the value in one variable of a value type does not affect the value in another variable, anybody referring to changed values in reference type variables may get updated values.
One of the key components that makes the execution of Solidity code possible is the EVM. The EVM is described as a virtual computer on the blockchain which turns people’s ideas into code that runs applications on the blockchain. Under the hood, Solidity creates machine-level code that is executed on the EVM.