2 điểm bởi GN⁺ 2023-08-26 | 1 bình luận | Chia sẻ qua WhatsApp
  • Tác giả chia sẻ hành trình rời xa Haskell, ngôn ngữ lập trình hàm mà một kỹ sư phần mềm đã sử dụng suốt 10 năm.
  • Tác giả bị thu hút bởi khả năng của Haskell trong việc hiểu mã theo cách ký hiệu và đại số, cùng với hệ thống kiểu vững chắc của nó.
  • Hệ thống kiểu của Haskell cho phép kiểm tra kiểu nghiêm ngặt mà không quá gò bó hay quá ồn ào, giúp việc viết và bảo trì mã dễ dàng hơn.
  • Tác giả đánh giá cao khả năng của Haskell trong việc dùng kiểu để biểu đạt các bất biến, nhờ đó trình biên dịch có thể kiểm tra lại logic, cải thiện độ an toàn và tính chính xác của mã.
  • Dù có những ưu điểm đó, tác giả đã rời bỏ Haskell vì ba lý do chính: khao khát sự mới lạ về mặt phong cách, công cụ còn vụng về và sự thay đổi liên tục.
  • Sự mới lạ về mặt phong cách ám chỉ xu hướng của cộng đồng Haskell trong việc thử nghiệm các phép trừu tượng mới, điều này tuy đổi mới nhưng có thể khiến việc bảo trì mã trở nên khó khăn.
  • Tác giả đánh giá công cụ của Haskell là "ổn", nhưng nói rằng không có công cụ nào dễ dùng và ổn định như cargo của Rust.
  • Sự thay đổi liên tục của Haskell, đặc biệt là các chỉnh sửa định kỳ không tương thích ngược, đã làm tăng ma sát khi sử dụng ngôn ngữ này.
  • Dù đã rời khỏi Haskell, tác giả vẫn thừa nhận các điểm mạnh của nó, gồm khả năng tái cấu trúc mã theo hướng đại số, hệ thống kiểu và hệ sinh thái thư viện khai báo.
  • Tác giả kết luận rằng việc có nên dùng Haskell hay không phụ thuộc vào mục tiêu cá nhân, đồng thời khuyên nên học Haskell để trở thành một lập trình viên giỏi hơn, nhưng cũng lưu ý cần thận trọng khi dùng nó làm ngôn ngữ chính vì những thách thức đã nêu.

1 bình luận

 
GN⁺ 2023-08-26
Ý kiến trên Hacker News
  • Cộng đồng Haskell được biết đến với việc đặc biệt nhấn mạnh vào học tập và tạo dựng một môi trường khuyến khích sự tò mò cũng như chia sẻ kiến thức.
  • Tuy nhiên, cộng đồng này thường gặp khó khăn trong việc loại bỏ các ý tưởng sau khi đã thử nghiệm, khiến các codebase Haskell chuyên nghiệp trở nên rối rắm.
  • Tooling của Haskell bị chỉ trích, nhưng cũng có người cho rằng phần lớn ngôn ngữ lập trình khác còn có tooling kém hơn.
  • Tooling của Haskell có một tính năng độc đáo là Hoogle, được đánh giá rất cao nhờ tính hữu dụng của nó.
  • Sự phát triển của Haskell và GHC, bản triển khai công khai hợp lý duy nhất của nó, bị phê phán vì những thay đổi liên tục và sự thiếu nhất quán.
  • Sự ràng buộc giữa GHC và các phiên bản cụ thể của thư viện chuẩn base được xem là một vấn đề, vì nó buộc phải thay đổi phụ thuộc mỗi khi có phiên bản GHC mới phát hành.
  • Việc tác giả mất hứng thú với Haskell được cho là xuất phát từ ba yếu tố chính: sự mới lạ mang tính phong cách, tooling vụng về và những thay đổi liên tục.
  • Tài liệu và tooling của Haskell gây khó khăn khi làm việc, và việc cộng đồng chuyển từ Cabal sang Stack rồi quay lại Cabal được xem là một dấu hiệu cải thiện.
  • Các ngôn ngữ lập trình khác đã tích hợp những yếu tố của lập trình hàm, khiến chúng hấp dẫn hơn đối với một số lập trình viên.
  • Một số lập trình viên đã chuyển từ Haskell sang F# vì việc viết code đơn giản hơn.
  • Haskell được xem là khó học, còn các thư viện của nó thường lỗi thời hoặc chỉ làm nửa vời.
  • Hiệu năng của Haskell bị chỉ trích, và cơ chế đánh giá lười dẫn đến các vấn đề về bộ nhớ cũng như hiệu năng chậm.
  • Triển vọng việc làm dành cho lập trình viên Haskell được cho là hạn chế vì tính đặc thù của ngôn ngữ này.
  • Việc debug trong Haskell được mô tả là đầy thách thức vì độ phức tạp của ngôn ngữ.
  • Scala được xem là một lựa chọn thay thế tốt cho Haskell, mang lại ưu điểm của cả hai phía.
  • Một số người đặt câu hỏi liệu các tính năng ngôn ngữ cao cấp có thực sự cần thiết cho công việc kỹ thuật phần mềm hằng ngày hay không.
  • Người ta cho rằng việc Haskell tập trung vào nghiên cứu và theo đuổi học thuật có thể xung đột với nhu cầu của lập trình thực dụng.
  • Bài viết đề xuất cần có cách tách biệt các tính năng thử nghiệm và các tính năng ổn định trong Haskell.
  • Tác giả cho rằng không ai bị ép phải dùng các tính năng kiểu dữ liệu nâng cao mới trong Haskell, và đề xuất phát triển trực giác về mức độ nên sử dụng các kiểu phức tạp.