The Haskell question comes up regularly. I think
and
were the last larger threads that maybe contain some pointers.
Additionally, the Ethereum Virtual Machine (I suppose that is what you mean by “EVM”) cannot be compared directly to Haskell. One is an environment, in which contracts can be executed on the Ethererum blockchain, the other is a programming language, two totally different things.
Yes, Cardano could have chosen to use the same language for its contracts/dApps as Ethereum. It’s called Solidity. But the choice was to use a language – Plutus – that is more tightly integrated with the rest of the Cardano code, which is already written in Haskell. Moreover, an additional, less complex language – Marlowe – will be provided on top of that.
In the end, I think it’s less important than people tend to think. Pure users should never come in contact with the languages used to implement a cryptocurrency ecosystem. And even for developers in decentralised fincance, “smart” contract, dApp projects, the on-chain contracts will be the smallest part of their code by far. It’s much more important to have a good use case, marketing, user interface (written in totally standard languages), …
The contract will not be a project with thousands of lines of code in hundreds of modules. It cannot be, since it has to be deployed redundantly (some would say inefficiently) to thousands of nodes that run the blockchain. They all have to redundantly compute every step of the contract. Moreover, such projects should document their contracts for all their users to understand, where they should put their money in. That’s another reason, why contracts should be so short and have such a low complexity, that it hardly matters if it is written in Marlowe, Plutus or Solidity.