Skip to main content

Tại sao Cardano lại chọn Haskell?

Nếu bạn đã tham gia vào hệ sinh thái Cardano một thời gian, bạn có thể biết rằng blockchain của chúng tôi được xây dựng bằng ngôn ngữ lập trình chức năng có tên là 'Haskell'.

Haskell là cơ sở cho Plutus, ngôn ngữ lập trình hợp đồng thông minh của Cardano và nó cũng cung cấp năng lượng cho Marlowe, ngôn ngữ dành riêng cho miền của chúng tôi dành cho các hợp đồng thông minh tài chính, cả hai ngôn ngữ này bạn có thể tìm hiểu thêm trong bài viết giới thiệu.

Tuy nhiên, Haskell không phải là một trong những ngôn ngữ lập trình nổi tiếng nhất. Nó cũng không được đón nhận rộng rãi bởi những người mới bắt đầu trong hành trình của họ với tư cách là một nhà phát triển. Trên thực tế, 'Chỉ số ngôn ngữ lập trình phổ biến' xếp Haskell là ngôn ngữ được tìm kiếm nhiều thứ 27 trên Google tính đến tháng 11 năm 2020, với Python và Java chiếm các vị trí hàng đầu.

Vì vậy, với suy nghĩ này, nhiều người có thể thắc mắc tại sao Cardano lại được triển khai ở Haskell ngay từ đầu? Lý do là Haskell, đặc biệt là kết hợp với các phương thức chính thức, rất thích hợp để viết mã mạnh mẽ và chính xác. Nhưng để hiểu tại sao điều này lại quan trọng đối với Cardano, trước tiên chúng ta cần khám phá Haskell là gì và xem xét vai trò của nó như một ngôn ngữ lập trình chức năng.

Haskell là gì?

Được đặt theo tên của nhà toán học quá cố người Mỹ Haskell Curry, Haskell có nguồn gốc từ cả học thuật và nghiên cứu logic, cũng như trong các phiên bản trước đó của các ngôn ngữ lập trình hàm, chẳng hạn như Miranda .

Những ảnh hưởng ban đầu này, đã thúc đẩy sự quan tâm rộng rãi hơn đến các ngôn ngữ lập trình hàm nói chung, dẫn đến việc Haskell được chính thức định nghĩa vào năm 1990. Tuy nhiên, một số nhà nghiên cứu, chẳng hạn như Giáo sư Phillip Wadler, đã bắt đầu làm việc trên các thành phần proto-Haskell, chẳng hạn như các lớp kiểu, sớm nhất là vào năm 1987 - trước khi Haskell phát hành phiên bản 1.0.

Các ngôn ngữ lập trình hàm nhấn mạnh vào việc sử dụng các hàm “thuần túy” nếu có thể: các hàm luôn cho cùng một kết quả cho cùng một đầu vào.Mặc dù điều đó được đưa ra cho các nhà toán học, nhưng các nhà lập trình máy tính đã quen với ý tưởng rằng “các chức năng” trong chương trình máy tính cũng phụ thuộc vào trạng thái bên trong, dữ liệu trên đĩa hoặc thời gian hiện tại. Tách những “tác dụng phụ” đó khỏi logic chính nếu có thể, các lập trình viên Haskell có thể làm cho việc lập luận về mã của họ trở nên dễ dàng hơn nhiều (“lập luận cân bằng”). Điều đó không chỉ giúp việc viết mã chính xác trở nên dễ dàng hơn, mà nó còn vô giá để thử nghiệm hoặc thậm chí chứng minh tính đúng đắn của nó.

Phát triển theo thời gian, Haskell đã trải qua một số lần lặp lại, chẳng hạn như Haskell 98 và Haskell 2010, với các thành viên cộng đồng chuyên dụng bổ sung các tiện ích mở rộng, các lớp loại và xây dựng trình biên dịch Haskell để hỗ trợ hệ sinh thái. Hiện đã tồn tại một khối lượng lớn công việc và các thư viện và công cụ toàn diện cho các nhà phát triển Haskell sử dụng.

Là một trong những ngôn ngữ lập trình chức năng thuần túy nhất, Haskell được cho là đã dẫn dắt nhiều nhà phát triển thay đổi cách họ tiếp cận lập trình, nói chung và giúp cải thiện khả năng tổng thể của họ với tư cách là lập trình viên.

Theo Aaron Contorer, Giám đốc điều hành của công ty lập trình Haskell FP Complete, điều này đã dẫn đến việc Haskell được bình chọn là ngôn ngữ được khuyến khích học nhiều nhất ngay cả khi các nhà phát triển không có nhu cầu cụ thể về nó, đó là lý do tại sao chúng tôi khuyến khích tất cả các nhà phát triển khám phá những gì Haskell có. lời đề nghị.

Tại sao Cardano được triển khai trong Haskell?

Chúng ta đã biết rằng Haskell là một ngôn ngữ lập trình chức năng, rất phù hợp cho mã bảo đảm cao và các chương trình yêu cầu mức độ xác minh chính thức cao.

Các ưu điểm của Haskell

Haskell là một ngôn ngữ lập trình chức năng rất phù hợp cho việc sử dụng các phương pháp chính thức trong quá trình phát triển phần mềm.

Một trong những ưu điểm chính của Haskell là hệ thống kiểu mạnh của nó. Haskell có một hệ thống kiểu tĩnh, nghĩa là các kiểu được kiểm tra tại thời điểm biên dịch, cung cấp mức độ an toàn cao và ngăn chặn nhiều loại lỗi thậm chí trước khi chương trình được chạy. Ngoài ra, Haskell hỗ trợ suy luận kiểu, nghĩa là lập trình viên không cần chỉ định rõ ràng kiểu biến và hàm, làm cho mã ngắn gọn và dễ đọc hơn.

Trong Haskell, các biến là bất biến theo mặc định, có nghĩa là một khi biến được gán giá trị thì nó không thể thay đổi được. Điều này giúp dễ dàng suy luận về hành vi của chương trình và có thể đơn giản hóa việc lập trình đồng thời và song song. Tính bất biến cũng giúp ngăn ngừa các lỗi gây ra bởi những thay đổi không mong muốn đối với các biến, cũng như làm cho mã dễ kiểm tra hơn.

Haskell cũng tập trung mạnh vào lập trình chức năng, khuyến khích phong cách lập trình khai báo và biểu cảm. Trong lập trình chức năng, trọng tâm là mô tả chương trình nên làm gì, hơn là cách thức thực hiện. Điều này làm cho mã dễ đọc hơn, dễ bảo trì hơn và có thể đơn giản hóa việc gỡ lỗi và kiểm tra.

Hệ thống kiểu mạnh và phong cách lập trình toán học của Haskell làm cho nó phù hợp một cách tự nhiên với các phương pháp hình thức. Hệ thống loại trong Haskell rất biểu cảm, cho phép kiểm tra mã tĩnh ở mức độ cao. Điều này có nghĩa là nhiều lỗi lập trình phổ biến có thể được phát hiện trong thời gian biên dịch, thay vì trong thời gian chạy. Ngoài ra, mô hình lập trình chức năng khuyến khích phong cách tư duy toán học, giúp làm cho mã dễ dự đoán hơn và dễ suy luận hơn. Nó có thể đặc biệt có lợi cho các cơ sở mã Cardano lớn và phức tạp.

Bộ sưu tập rác và đánh giá nghiêm ngặt của Haskell đảm bảo rằng chương trình được bảo vệ khỏi các lỗi thời gian chạy chẳng hạn như hủy đăng ký con trỏ null, tràn bộ đệm và chạy đua dữ liệu. Điều này làm cho nó phù hợp hơn cho các hệ thống quan trọng về an toàn.

Mô hình đồng thời và song song của Haskell dựa trên các luồng nhẹ và việc truyền thông báo giúp dễ dàng viết mã có thể tận dụng nhiều lõi và bộ xử lý. Điều này rất quan trọng đối với dự án Cardano, một nền tảng blockchain cần xử lý một số lượng lớn giao dịch đồng thời.

Các trừu tượng cấp cao của Haskell, chẳng hạn như các đơn nguyên, giúp viết mã theo mô-đun, có thể kết hợp và tái sử dụng dễ dàng hơn. Điều này có thể giúp giảm độ phức tạp của cơ sở mã và giúp dễ dàng lập luận và chứng minh các thuộc tính của mã hơn.

Như chúng ta đã thảo luận ở trên, điều này cho phép các lập trình viên có mức độ chắc chắn lớn hơn rằng mã mà họ đã triển khai là đúng. Đối với tương lai mà chúng tôi dự kiến ​​cho Cardano - cụ thể là trở thành hệ thống điều hành tài chính và xã hội toàn cầu tiếp theo - sự đảm bảo và độ tin cậy là điều cần thiết.

Với sự xuất hiện của các ứng dụng phi tập trung, mã hóa và hợp đồng thông minh trên Cardano, chúng tôi hy vọng rằng toàn bộ hệ sinh thái các dịch vụ tài chính phi tập trung sẽ hình thành. Điều này sẽ mang lại hàng tỷ đô la giá trị hoặc hơn trên chuỗi, được khóa thông qua các hợp đồng thông minh hoặc được quản lý thông qua các tổ chức tự trị phi tập trung (DAO).

Tuy nhiên, cơ sở hạ tầng hợp đồng thông minh hiện tại đã không đảm bảo được giá trị trên chuỗi này, chủ yếu là triển khai các ngôn ngữ lập trình mới, được thiết kế tùy chỉnh, mỗi ngôn ngữ trong số đó yêu cầu các chuỗi công cụ, thư viện và tài nguyên giáo dục riêng - khiến cho việc lý luận chính thức về hành vi của các hợp đồng và ứng dụng thông minh được xây dựng trên chúng.

Theo kinh nghiệm, chúng tôi biết rằng các lỗ hổng bảo mật, lỗi mã hoặc khai thác hợp đồng thông minh trên các blockchain và ngôn ngữ hợp đồng thông minh khác đã dẫn đến hậu quả tai hại và dẫn đến thiệt hại tài chính đáng kể, thường lên tới hàng tỷ đô la. Điều này khiến một số người đặt câu hỏi liệu các hợp đồng thông minh có bao giờ khả thi từ góc độ rủi ro đối với người dùng tổ chức hay không.

Đây là nơi Haskell trở thành của riêng mình. Thông qua Haskell, các hợp đồng thông minh Plutus và Marlowe của Cardano có thể được thực hiện cẩn thận bằng một mã chính xác, được xác minh chính thức, cung cấp mức độ đảm bảo cao ngay từ đầu.

PlutusMarlowe được cung cấp như một bộ thư viện cho Haskell, tận dụng tài liệu Haskell hiện có, bộ công cụ và cộng đồng chuyên nghiệp cao để cung cấp cơ sở từ đó xây dựng các hợp đồng thông minh cấp doanh nghiệp và an toàn.

Cả mã off-chain và on-chain cho Cardano đều được viết bằng Haskell, cho phép Cardano kế thừa khối nghiên cứu phong phú đã tồn tại trong hệ sinh thái Haskell, thay vì phát minh lại bánh xe bằng một ngôn ngữ hợp đồng thông minh hoàn toàn mới và chưa được chứng minh.

Để cung cấp hỗ trợ cho cộng đồng Haskell rộng lớn hơn, các đối tác kỹ thuật của Cardano, IOHK gần đây đã quyên góp cho Quỹ Haskell, một sáng kiến ​​hỗ trợ sự phát triển và tăng trưởng của Haskell. Bạn có thể tìm hiểu thêm về Quỹ Haskell từ bài phát biểu quan trọng của Simon Peyton Jones tại sự kiện ảo Haskell eXchange 2020 tại đây .

Tôi có thể tìm hiểu thêm về Haskell ở đâu?

Cardano, và phần mở rộng là các nền tảng Plutus và Marlowe, là nguồn mở và có sẵn để khám phá. Bạn có thể khám phá thêm về cơ sở mã của chúng tôi thông qua Cardano Docs hoặc bằng cách truy cập trực tiếp vào Cardano GitHub .

Nếu bạn đang tìm kiếm hướng dẫn tốt nhất về Haskell và không biết bắt đầu từ đâu, chúng tôi khuyên bạn nên xem cuốn sách hoặc trang web ' Học bạn một Haskell vì điều tốt ' của Miran Lipovača. Học Haskell trở nên dễ dàng với hướng dẫn minh họa này, một trong những cách hấp dẫn nhất để học ngôn ngữ lập trình hấp dẫn này.

Các tài nguyên khác dành cho các nhà phát triển Haskell bao gồm Trình biên dịch Glasgow Haskell (GHC), dẫn đầu bởi Simon Peyton Jones và Simon Marlow, một trình biên dịch mã gốc nguồn mở cho Haskell.

Nếu bạn muốn tham gia cộng đồng Haskell dành cho nhà phát triển sôi động, chúng tôi cũng khuyên bạn nên xem qua Haskell Reddit . Nếu bạn quan tâm đến việc phát triển trên Cardano, tại sao không tham gia danh sách chờ cổng thông tin dành cho nhà phát triển của chúng tôi ? Tại đây, bạn sẽ có quyền truy cập vào tin tức nhà phát triển mới nhất từ ​​hệ sinh thái Cardano.

tip

Cardano Việt nam cũng có một cộng đồng về lập trình Haskell và Plutus có thể tham gia để thảo luận thêm tại đây.

Nguồn bài viết đầy đủ tại đây


Picture