Hi I have superfical knowledge on both Ethereum Blockchain and Python. And I want to be an ethereum blockchain and smart contract developer.

Before getting into solidity, which languages should I learn first? Would I face any difficulties if I start directly with solidity?

  • There's no objective answer. Everyone has its own approach to learn a new technology. Solidity has a C like syntax, but it has its own quirks and that familiarity is sometimes deceiving.
    – Ismael
    Jul 14, 2021 at 16:50

2 Answers 2


Knowledge of certain languages provides a good basis for learning Solidity, e.g. having worked with C and possibly even with assembly languages comes in handy when reasoning about bits and bytes, storage layout, fixed-width signed/unsigned integer types, etc. in Solidity. Having worked with an OOP language like Java will make it easier to understand concepts like contract inheritance, overriding of contract methods, etc. But this doesn’t mean that you should first study either of these languages before getting into Solidity — If you want to get into Solidity, then go for Solidity directly.

Then, as mentioned in the other answer, Solidity code doesn’t live in isolation, but you will need to develop code peripheral to your contracts. Altough you may be able to find libraries for several languages, including Python, your best bet is going to be JavaScript, because the leading libraries to interact with contracts (ethers, hardhat, etc.) are written for JavaScript. The tools in other languages often lag behind these in terms of features, Solidity language support, etc. Moreover, you will be better off in the long term if you make that extra initial investment to set yourself up with TypeScript instead of JavaScript.

Have fun!


You actually need to know two languages:

  1. Solidity to code the dApp itself.
  2. A language used by a library to interact with the blockchain and your dApp.

For 2, popular libraries are web3.js, etherjs, and web3.py (javascript and python). Since you already know python, you could go with web3.py

  • Thank you very much, I will consider this. Both of you helped me a lot! Jul 14, 2021 at 17:14

Not the answer you're looking for? Browse other questions tagged or ask your own question.