Tìm hiểu về Haskell và tại sao lại chọn Haskell

Các giao thức tạo nên Cardano là phân tán, đi kèm với mật mã và yêu cầu mức độ chịu lỗi cao. Vào những ngày đẹp nhất, vẫn sẽ có các cuộc tấn công Byzantine, tin nhắn không đúng định dạng và máy khách bị lỗi vô tình gây ra một số hình thức phá hủy trên mạng.

Đầu tiên, chúng tôi muốn có một ngôn ngữ thích ứng với một hệ thống mạnh mẽ, nơi chúng tôi có thể dễ dàng sử dụng các công cụ như Quickcheck và các kỹ thuật phức tạp hơn như Refinement Types trong khi vẫn có kỳ vọng hợp lý về khả năng chịu lỗi. Mô hình OTP model Erlang thỏa mãn mô hình thứ hai trong khi các ngôn ngữ như Haskell và Ocaml đáp ứng mô hình trước đây.

Với sự ra đời của Cloud Haskell, Haskell đã có được nhiều lợi thế của Erlang trong khi không bị treo. Hơn nữa, tính module và khả năng kết hợp của Haskell đã cho phép chúng tôi sử dụng một thư viện đặt trước có kích thước nhẹ hơn có tên là Time Warp for Cardano.

Thứ hai, các thư viện của Haskell đã phát triển rất nhiều trong vài năm qua nhờ vào hoạt động rộng rãi của các thực thể thương mại như Galois, FP Complete và Well-Typed. Do đó, Haskell có thể được sử dụng để viết các ứng dụng 24.

Thứ ba, sự phát triển nhanh chóng của PureScript đã cung cấp một cầu nối rất cần thiết cho thế giới JavaScript giống như những gì Clojurescript đã mang lại cho Clojure. Chúng tôi kỳ vọng PureScript sẽ đặc biệt quan trọng khi nói đến việc đưa Cardano hoạt động trong trình duyệt và phát triển ví di động.

Thứ tư, liên quan đến dependency, Haskell trong vài năm qua đã có được một nỗ lực xã hội và công nghệ đáng kể do các nhà công nghệ như Michael Snoyman dẫn đầu thông qua một nền tảng gọi là stackage vừa dễ sử dụng vừa được hỗ trợ tốt bởi FP Complete.

Thứ năm, dựa trên đầy đủ các dependency, chúng tôi hướng tới việc các bản xây dựng phần mềm của chúng tôi có thể tái tạo được. Nói cách khác, với các giá trị cấu hình giống nhau và các phiên bản dependency, nó sẽ tạo ra các bản artifact giống hệt nhau. Thông qua việc xếp chồng lên nhau, chúng tôi đã sử dụng NixOps để đạt được khả năng tái tạo một cách thành công.

Cuối cùng, cộng đồng của các nhà phát triển chuyên về Haskell là khá lớn – so với các ngôn ngữ tương đương của nó – và được đào tạo khá tốt với sự kết hợp phù hợp giữa chứng chỉ học thuật và ngành. Nó cũng hoạt động như một bộ lọc năng lực vì hiếm khi tìm thấy các nhà phát triển Haskell có kinh nghiệm mà không có kiến ​​thức chi tiết về khoa học máy tính.


Chú thích

24: Bryan O’Sullivan có một cuộc nói chuyện thú vị về việc sử dụng công nghiệp của Haskell tại đây.