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”:
https://docs.cardano.org/projects/plutus/en/latest/tutorials/basic-apps.html

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?

3 Likes

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

4 Likes

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

3 Likes

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.

1 Like

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.)

2 Likes

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.

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

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.

1 Like

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:
https://playground.plutus.iohkdev.io/tutorial/index.html

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.

3 Likes

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.