They’re working on Marlowe and Blockly to reduce that barrier though. I spoke to Charles a while back and got the sense he’d have used a different language if he’d done it again.
On Ethereum, Solidity has access to the global state of the blockchain and it's very hard do create secure program with it. Cardano's language Plutus has only access to UTXOs ( bitcoin way to manage account) and store a local state in it. It's really functional programming applied to the blockchain space. The language is functional ( Haskell subset ) and the ledger too. One advantage of this design is that fees are deterministic. For a given transaction input you will have exactly the same fees.