Ngôn ngữ lập trình Haskell là ngôn ngữ polymorphic, statically typed, purely functional và lazy with type inference.

Quá nhiều thuật ngữ cùng một lúc? Mình cũng nghĩ vậy! Nhưng Không phải lo lắng. Mình sẽ cố gắng giải thích ý nghĩa của các thuật ngữ này ngay bên dưới.
Polymorphic (Đa hình) được ưu tiên rất cao trong Haskell và là một tính năng chính. Chúng thường rơi vào một trong hai loại: Ad-hoc
Polymorphic và Prametric Polymorphic.
>>> Bạn có thể đọc kỹ hơn về Polymorphic trên Wiki
Ad-hoc Polymorphic đề cập đến một sự kiện trong đó một giá trị có thể áp dụng bất kỳ loại nào vì nó đã đưa ra một định nghĩa riêng cho từng loại đó.
Ở đây, các hàm đa hình có thể được áp dụng cho các đối số thuộc các loại khác nhau vì nó có thể biểu thị một số triển khai không đồng nhất khác nhau cũng như có thể tùy thuộc vào loại đối số được áp dụng.
Prametric Polymorphic được xác định bởi một sự kiện khi một loại giá trị bao gồm một hoặc nhiều loại biến để giá trị có thể chấp nhận bất kỳ loại nào xuất phát từ việc thay thế các biến đó bằng các loại cụ thể.
Đó là một cách để làm cho ngôn ngữ có tính biểu cảm cao nhưng vẫn duy trì hoàn toàn an toàn kiểu static.
Static type xâm nhập vào quá trình xác minh độ an toàn của chương trình dựa trên phân tích văn bản của chương trình. Lợi ích chính của nó là các lỗi có thể được bắt, trước khi chương trình chạy.
Purely functional đề cập đến một phương pháp tạo ra các phần tử hoặc cấu trúc của các phần tử máy tính, coi tất cả các tính toán là các hàm toán học. Nói cách khác, nó mô hình hóa các tính toán như là các biểu thức. Haskell được gọi là ngôn ngữ chức năng (functional language) thuần túy nhất.
Người ta có thể định nghĩa lazy evaluation là một phương pháp để đánh giá chương trình Haskell. Nói cách khác, lazy evaluation có nghĩa là chỉ đánh giá một biểu thức khi cần kết quả của nó.
Và cuối cùng, type inference! Nó được định nghĩa là phát hiện tự động loại biểu thức dữ liệu trong ngôn ngữ lập trình.
Hy vọng, việc mình giải thích một số thuật ngữ trên đã làm cho định nghĩa của ngôn ngữ lập trình Haskell trở nên dễ hơn.
Lịch sử phát triển của ngôn ngữ lập trình Haskell
Những mầm mống của Haskell bắt nguồn từ những cánh đồng màu mỡ của Princeton. Nhà thờ Alonzo, Tiến sĩ giám sát viên của bộ ngắt Enigma Alan Turing, đã đưa ra mô hình toán học của các hàm được gọi là phép tính lambda vào những năm 1930.
Đến những năm 1950, một ngôn ngữ lập trình bậc cao (high-level) đã hình thành, nó được gọi là LISP (chữ viết tắt của List Processing). Ngôn ngữ cho phép người dùng định nghĩa và truyền qua như các giá trị.
Các hình thức của Haskell gần đây như là lScheme và Clojure.
Trong những năm 1980, Hope, ML, Miranda và các ngôn ngữ lập trình chức năng khác đã được tạo ra và mở rộng.
Tuy nhiên, nghiên cứu đã bị phân mảnh dựa trên nhiều ngôn ngữ và nhiều ngôn ngữ không có framework nguồn mở.
Vì vậy, một nhóm các học giả đã thành lập một ủy ban để đưa ra một ngôn ngữ mới và thực hiện nó để được sử dụng làm phương tiện phục vụ cho nghiên cứu cũng như giảng dạy các ngôn ngữ lập trình chức năng.
Nhiều năm trôi qua với những quan điểm và lập luận khác nhau, ủy ban đã công bố Báo cáo ngôn ngữ Haskell đầu tiên vào năm 1990. Đây là một bước đột phá lớn, kể từ đó có một ngôn ngữ lập trình chức năng chung mà toàn bộ cộng đồng nghiên cứu, hợp nhất.
Cái tên Haskell được hình thành như thế nào?
Một nhà toán học người Mỹ cũng là một nhà logic học đứng đằng sau việc làm sáng tỏ ngôn ngữ lập trình này.
Tên anh ta là Haskell Curry, và đã có ba ngôn ngữ lập trình được đặt theo tên anh ta, đó là: Haskell, Curry và Brook (tên đệm của anh ấy).
Theo John Hughes, giáo sư khoa học máy tính tại Đại học Công nghệ ở Gothenburg, tên Haskell được đặt bởi ủy ban thiết kế ngôn ngữ.
Mọi người trong ủy ban đã viết một cái tên mà họ nghĩ sẽ là tên mới của ngôn ngữ lập trình này. Sau khi các tên được đưa lên bảng, mọi người được yêu cầu gạch bỏ một trong những lựa chọn đó cho đến khi chỉ còn một tên: Curry.
Vì vậy, lần tiếp theo họp bàn, họ quyết định đặt tên theo tên của Haskell Curry. Từ thời điểm đó, nó được gọi là, ngôn ngữ lập trình Haskell.
Lợi ích của ngôn ngữ lập trình Haskell
Lợi ích 1: Thư viện có sẵn
Haskell có thể không phổ biến như Python hay JavaScript, nhưng nó vẫn có một cơ sở dữ liệu khá tốt về các package được gọi là Hackage. Nó không rộng rãi như Python nhưng thường bao gồm các thứ khá hiếm.
>>> Nếu bạn đang bắt đầu tìm thấy hứng thú với Python mà chưa có kinh nghiệm. Hãy thử sức với các bài hướng dẫn Lập trình Python xem sao.
Lợi ích 2: Tốc độ
GHC, trình biên dịch Haskell chính là một kiệt tác có thể tạo ra mã hiệu suất đáng kinh ngạc.
Điều này là do LLVM và back-end chạy native trong GHC. Nếu được tối ưu hóa đúng cách, Haskell có thể chạy với tốc độ khá gần với ngôn ngữ C.
Trình quản lý IO và runtime có thể xử lý hàng ngàn luồng với nguồn lực tối thiểu. Haskell có thể được chuyển đổi thành một ngôn ngữ hiệu suất cao với các thay đổi code tối thiểu.
Lợi ích 3: Đường cong học tập
Các lợi ích về đường cong học tập của Haskell là giúp sinh viên có được các kỹ năng có giá trị.
Điều khó nhất liên quan đến việc học Haskell là các thực tiễn và yêu cầu bắt buộc đối với code-base chất lượng cũng như mức độ trừu tượng cao, các hàm thuần túy và phân biệt code hiệu quả và thuần túy.
Học Haskell hàng ngày cũng tạo ra những thói quen mới rất tốt. Nhiều công ty nói rằng đào tạo Haskel không khó như nhiều người vẫn nghĩ.
Lợi ích 4: Testing
Mức độ trừu tượng, độ thuần túy và đánh giá do Haskell cung cấp giúp việc nhắn tin rất dễ dàng.
SmallCheck, QuickCheck và các thư viện khác là những phát minh trong cộng đồng Haskell và sau đó được chuyển sang các ngôn ngữ như Scala và Python.
Cùng với đó, các bài kiểm tra cần thiết cho các ngôn ngữ khác thì không cần có khi nói đến Haskell.
Lợi ích 5: Tái sử dụng code
Haskell cho phép sử dụng lại code. Các mẫu được trừu tượng hóa thành các component và component có thể tái sử dụng và sau này các high-level interfaces ược tích hợp vào các thư viện.
Điều này làm giảm sự sao chép code và các lập trình viên có thể tập trung vào việc xây dựng các hệ thống và thiết kế các thuật toán thay vì ngồi debug đi debug lại.
Làm thế nào để học ngôn ngữ lập trình Haskell?
Với rất nhiều lợi ích, có rất nhiều người đam mê lập trình muốn học Haskell và tận dụng những lợi ích mà nó mang lại. Trên Google không thiếu tài nguyên học Haskell.
Nhiều người thích sách, trong khi những người khác có thể thích học tại các trung tâm đào tạo lập trình. Ngoài ra còn có các bài hướng dẫn trên các website, trên YouTube.
Nếu bạn muốn học Haskell, bạn sẽ tìm thấy nơi bạn cần tìm.