Starknet / Cairo >>>>> EVM / Solidity Hệ thống kiểu: Cairo có kiểu mạnh, generics, kiểu dữ liệu đại số, traits. Solidity không có generics và có khả năng khớp mẫu yếu hơn. Quyền sở hữu / kiểm tra mượn tại thời điểm biên dịch: Cairo có điều này, ngữ nghĩa di chuyển với một chủ sở hữu và quy tắc mượn giúp phát hiện việc sử dụng sau khi di chuyển. An toàn bộ nhớ của Solidity phụ thuộc vào kỷ luật của nhà phát triển. An toàn số học: Cairo sử dụng toán học kiểm tra theo mặc định. Solidity hiện có số học kiểm tra nhưng có thể chọn không sử dụng. Cairo đi kèm với một đại diện trung gian (Sierra) không thể biểu thị hành vi không xác định hoặc một assert thất bại, mọi hàm đều được chứng minh là kết thúc tại thời điểm biên dịch. Mô hình nâng cấp: Trong Cairo, điều này được thực hiện với syscall gốc để thay thế hash lớp trong khi giữ lại bộ nhớ, được thực thi bằng chứng, không có rủi ro va chạm bộ nhớ proxy. Trong Solidity, các proxy được làm thủ công, va chạm slot bộ nhớ và sai sót delegatecall đại diện cho một rủi ro. Cairo cố ý bỏ qua một số tính năng có trong Solidity, chẳng hạn như modifiers, kế thừa lớp. Cairo ưu tiên khả năng kết hợp hơn là kế thừa, điều này giúp viết mã sạch hơn, mô-đun hơn, dễ dàng hơn trong việc lý luận và kiểm tra các lỗ hổng bảo mật. Thiết kế của Cairo loại bỏ toàn bộ các loại lỗi trước khi mã được biên dịch, trong khi Solidity phụ thuộc vào các quy ước như Kiểm tra Tác động Tương tác và các công cụ kiểm tra bên ngoài.
Fede’s intern 🥊
Fede’s intern 🥊23:01 9 thg 7
Solidity là ngôn ngữ lập trình tệ nhất mà tôi từng sử dụng trong đời. Tôi không quan tâm ai trong Ethereum nói ngược lại với tôi, nhưng điều đó rõ ràng với bất kỳ ai đã làm việc với các trình biên dịch tốt và các ngôn ngữ lập trình khác.
14,8K