Starknet / Cairo >>>>> EVM / Solidity Sistema di tipi: Cairo ha tipi forti, generici, tipi di dati algebrici, tratti. Solidity non ha generici e ha un pattern matching più debole. Proprietà / controllore di prestito al momento della compilazione: Cairo lo ha, semantiche di spostamento con proprietario singolo e regole di prestito che catturano l'uso dopo lo spostamento. La sicurezza della memoria di Solidity si basa sulla disciplina dello sviluppatore. Sicurezza aritmetica: Cairo utilizza matematiche verificate per impostazione predefinita. Solidity ora ha aritmetica verificata ma può essere disattivata. Cairo viene fornito con una rappresentazione intermedia (Sierra) che non può esprimere comportamenti indefiniti o un'asserzione che fallisce, ogni funzione è dimostrata per terminare al momento della compilazione. Modelli di aggiornamento: In Cairo si fa con syscall nativa per sostituire l'hash della classe mantenendo lo storage, imposto dalla prova, senza rischi di collisione nello storage proxy. In Solidity, i proxy sono realizzati a mano, le collisioni negli slot di storage e gli errori di delegatecall rappresentano un rischio. Cairo omette deliberatamente alcune funzionalità presenti in Solidity, come i modificatori, l'ereditarietà delle classi. Cairo favorisce la composabilità rispetto all'ereditarietà, il che aiuta a scrivere codice più pulito e modulare, rendendo più facile ragionare e controllare per difetti di sicurezza. Il design di Cairo elimina intere classi di bug prima che il codice venga compilato, mentre Solidity dipende da convenzioni come Checks Effects Interactions e linters esterni.
Fede’s intern 🥊
Fede’s intern 🥊9 lug, 23:01
Solidity è il peggior linguaggio di programmazione che abbia mai usato nella mia vita. Non mi interessa chi in Ethereum mi dica il contrario, ma è ovvio per chiunque abbia lavorato con buoni compilatori e altri linguaggi di programmazione.
14,81K