Solidity is a domain-specific language of choice for programming contracts in Ethereum. There are, however, other languages that can be used, such as Serpent, Mutan, and LLL but Solidity is the most popular at the time of writing this. Its syntax is closer to both JavaScript and C.
Solidity has evolved into a mature language over the last few years and is quite easy to use, but it still has a long way to go before it can become advanced, standardized, and feature-rich like other well-established languages such as Java, C or C Sharp. Nevertheless, this is the most widely used language available for programming contracts currently.
It is a statically typed language, which means that variable type checking in Solidity is carried out at compile time. Each variable, either state or local, must be specified with a type at compile time. This is beneficial in the sense...