One of the main differences between NEO and Ethereum is their smart contracts. While both support smart contracts that can do various things, NEO smart contracts have the upper hand on Ethereum smart contracts for one simple reason. Developers can create NEO smart contracts using familiar programming languages.
Ethereum uses a new programming language called Solidity specifically made for writing Ethereum smart contracts. On NEO, however, developers can create smart contracts with familiar programming languages like C#, Javascript, Java, Python, and Go. Ease of development is important since smart contracts can hold lots of money in the form of cryptocurrency. Building complex applications using unfamiliar languages were proven to be dangerous with The DAO hack.