Understanding Plutus: Forced to learn Haskell from scratch or wait for KEVM?

Sorry for my lack of background knowledge, but this question is just about getting started with Cardano smart contract development.
Although I do have a solid knowledge in several other programming languages, I felt overwhelmed by this “basic apps tutorial”:

For me, it is very hard to follow this Plutus code.
I understand only parts of the code and the syntax is still a mystery to me.
Also it is unclear to me which things are part of the language and which things are parts of the libraries/SDKs.
In contrast, I found it a lot easier to understand simple Solidity contracts, because those are more similar to the languages that I already know (TypeScript, Kotlin and others).

So what does it take to develop smart contracts for Cardano?
Do you need to be an expert level Haskell developer?
Or would you wait until this KEVM thing is ready?


I 100% agree. No one on here answers anything, I have no idea what is going on or what to learn. I spent like two days watching solidity tutorial and felt pretty comfortable with it. I’ve spent like 2 weeks trying to learn haskell and still have no clue what the hell is going on


Perhaps the problem is that I did not learn Haskell until now.
But anyways, it would be nice if the tutorial was more geared towards Non-Haskell-developers who might learn Haskell at a later point in time.

To learn Haskell I’ve been reading Learn You a Haskell for Great Good! and highly recommend it.


I have to agree too, and no it’s not your fault. It’s great that you’re interested, and the job of any product to ensure your first experience is positive. I too found the examples assuming some level of API knowledge, leaving me googling trying to piece things together.

Personally I’ve been deep in developer experience land for many years and the idea of selecting a language very few people know outside of academia (relatively speaking) as a primary SDK language would be a non-starter in most product companies.

Very few experienced devs have time on top of their day job and family commitments to be learning an entirely new language + APIs just to try something out. Huge barrier to entry. Can you imagine Stripe launching with just a Haskell SDK?

Widespread adoption means allowing as many developers to onboard as quickly and painlessly as possible. They then become your advocates. If instead they hit a wall, well they’re likely to go and find a product with an easier onboarding experience (unless you have Apple level market share of course).

Anyway I can see this will be addressed later in the year, and I understand the thinking behind the decision given what’s at play in this domain, but it’s going to slow the initial adoption curve down a little.

The question is: is it worth learning a new language for a new kind of software if it can do something significantly better than anything that came before? And the past clearly shows: yes, it is worth it.

If you want to leverage all the features of the Cardano main chain, you need to learn Plutus/Marlowe since KEVM will live only on the side chain. It can not have native tokens or any “fancy” things because it is/has to be compatible with EVM. (But of course the sidechain will also develop and more and more things will be possible here.)


Thank you for your answer, it is always good to see when members of the team are active within the forums.
I apologise if my previous statements were too harsh because I agree that Haskell can teach valuable lessons.

But I have one more question:
What are the consequences if KEVM will live only on a side chain?
Are “native tokens” a critical feature for future smart contracts?

Thank you for your patience.

The fact that KEVM network is “only” a sidechain was never planned otherwise. If you think this through: you cannot be fully compatible with one chain and run in a completely different chain at the same time. There needs to be some sort of bridge.

There are some advantages and disadvantages to this. Regarding the native tokens, one consequence is that you can’t move native tokens back and forth between networks. (at least not easily, technically there are ways to solve this: tokens would have to be locked on one side and generated on the other side) Simply because there is no native token concept on the EVM side. You need smart contracts to implement tokens.

I am not sure if I understand you correctly:
Native tokens are harder to move because the EVM does not operate with native tokens?

With regard to sidechains:
Running the EVM on a sidechain is not necessarily a bad thing. Even Ethereum plans to move the entire mainnet to a shard-chain once Ethereum 2 gets ready.
For me, the important thing is how well these side chains interact with the rest of the ecosystem.

1 Like

Precisely, moving between main chain and a side chain means on the KEVM side, you have to do this with smart contracts.

So the EVM does not operate with native tokens, which seems to be pretty obvious.
But I am not sure whether native tokens are lacking the flexibility of the EVM.
The EVM is a globally distributed state machine that operates with turing-complete languages during state transitions (new blocks).
This seems to be the gold standard with respect to flexibility, and therefore I am not sure what native tokens are actually providing.

I think Haskell is a really good choice. But the Plutus tutorials are really weak and sadly no one can answer any practical questions here because no one here actually knows Plutus. So I guess we have to wait some months for usable information.

If we look at the recent DeFi exploits, then it seems pretty clear that Solidity is not a perfect longterm solution.
Nevertheless, we need solutions for people who are developing smart contracts right now.
Right now, Ethereum is still the way to go for smart contract development, and based on the current Plutus tutorials and sample apps, I don’t see Cardano as a serious competitor right now.

There is some kind of references where I can follow and learn more about Plutus.

If you would like to learn Plutus, the smart contract platform of the Cardano blockchain this is a good start:

1 Like

Thats where I’ve started at the moment and I’m writing up tutorials of what I’ve learn and committing mini projects to Github for users to follow. I hope they make sense.


Great article here: Why Cardano chose Haskell — and why you should care | by Cardano Foundation | Medium

I am curious how ostracizing the majority of developers will work out long term.

There is a very small percentage of us that think syntax is irrelevant. I for one am learning Haskell and Plutus but as a C/C++ programmer who has done a lot of C#/Java/JS/TS/and other trivial languages recently I was surprised I was not able to learn this in a few days like Smalltalk, SQL, VB, Python, Perl, and other tertiary languages I have used in my 20 year career as a software engineer.

This does not bode well for newbies. Full disclaimer I also taught Scheme and other functional languages at the collegiate level so I am not completely clueless to purely functional languages I just have never seen it used in the professional world. I am a little worried that a slightly above average software engineer such as myself meeting resistance may mean the bar is a tad high for global adoption.