1 điểm bởi GN⁺ 2024-11-14 | 1 bình luận | Chia sẻ qua WhatsApp
  • Năm tính năng Raku độc đáo

    • Raku giống như một phòng thí nghiệm để thử nghiệm nhiều tính năng ngôn ngữ khác nhau. Nó cung cấp nhiều mô hình đồng thời cùng nhiều tính năng đa dạng, và cách các tính năng này tương tác với nhau cũng rất độc đáo.
  • Junctions

    • Junctions biểu thị sự chồng lấp của các giá trị có thể có và được dùng để diễn đạt các biểu thức logic.
    • Chúng áp dụng phép toán lên mọi giá trị rồi được dùng sau khi chuyển thành boolean.
    • Raku diễn đạt các lượng từ một cách thanh lịch thông qua junctions.
  • Whatevers

    • * là ký hiệu "whatever" và đảm nhiệm nhiều vai trò khác nhau.
    • Nó mang nghĩa "unbound" trong phạm vi hoặc chuỗi, và được chuyển thành hàm ẩn danh.
    • Nhiều phương thức của Raku được overload để nhận hàm, nên điều này rất hữu ích.
  • Biểu thức chính quy

    • Raku cung cấp một cú pháp mới khác với các biểu thức chính quy POSIX truyền thống và loại tương thích Perl.
    • Có thể kết hợp các biểu thức chính quy để chia chúng thành những phần đơn giản và dễ đọc hơn.
    • Nó hỗ trợ ngữ pháp phân tích cú pháp như một tính năng cốt lõi của ngôn ngữ.
  • Hyperoperators

    • l>>.method về cơ bản tương tự map, nhưng đệ quy đi xuống cả các danh sách con.
    • Các toán tử hyper nhị phân áp dụng phép toán theo từng phần tử trên hai danh sách.
    • Chúng hữu ích khi cần chạy cùng một công thức trên nhiều đầu vào.
  • Cú pháp Pair

    • Hash trong Raku được cấu thành từ các cặp key => value, và có thể chỉ định cặp một cách ngắn gọn bằng "colon syntax".
    • :key:!key lần lượt ánh xạ tới key => Truekey => False.
    • Điều này giúp cấu hình phương thức rất ngắn gọn.
  • Phòng thí nghiệm thế hệ tiếp theo: Slangs và RakuAST

    • Slangs là tính năng cho phép sửa đổi cú pháp Raku, như chỉnh sửa cú pháp vòng lặp hoặc thay đổi định danh.
    • RakuAST cho phép phân tích mọi biểu thức Raku thành AST ngay bên trong Raku.
  • Thử nghiệm bổ sung

    • Raku cung cấp một bộ module bên thứ ba được cài sẵn thông qua bản cài đặt "Rakudo Star".
    • Đây là một sự dung hòa rất tốt giữa gánh nặng duy trì một thư viện chuẩn lớn và gánh nặng để người dùng tự tìm đúng gói phù hợp.
  • Gợi ý blog

    • Blog của Elizabeth Mattijsen và Codesections cung cấp rất nhiều thông tin về nội bộ của Raku.
    • Raku Advent Calendar là một nguồn tư liệu tuyệt vời về các kỹ thuật Raku nâng cao.

1 bình luận

 
GN⁺ 2024-11-14
Ý kiến trên Hacker News
  • Giới thiệu tính năng biểu thức chính quy có cấu trúc được triển khai độc lập trong JavaScript; đây là một thư viện thường được dùng trong nhiều dự án. Tính năng này mang lại cảm giác gần hơn một chút với việc dùng parser hạng nhất ngay trong ngôn ngữ. Chia sẻ một ví dụ triển khai việc phân tích media type

    • Có thể xem templated-regular-expression trên npm và GitHub
    • Ngôn ngữ lập trình nên có parser thực thụ và không nên dùng biểu thức chính quy làm parser. Tuy nhiên, nếu dùng biểu thức chính quy thì nên chia chúng thành những mảnh nhỏ
  • Có ý kiến rằng họ muốn rời ngành trước khi phải bảo trì một codebase Raku

  • Vấn đề tốc độ của Raku vẫn chưa được giải quyết; Raku mới nhất vẫn mất thời gian phân tích tệp log lâu hơn Python 3.13 tới 6,5 lần

  • Các tính năng chính của Raku là CLI và ngữ pháp

    • CLI là tính năng phổ biến và vì được tích hợp sẵn trong Raku nên rất tiện dùng
    • Ngữ pháp hiếm khi được coi là "công dân hạng nhất" trong ngôn ngữ lập trình, và Raku cung cấp khả năng tạo ngữ pháp bằng lập trình hướng đối tượng
  • Hyper trông giống một phiên bản ad-hoc hơn của recursion scheme và tương tự _ trong Scala. Có người nói họ yêu Scala vì lambda và nghĩ rằng mọi ngôn ngữ nên áp dụng điều gì đó tương tự

  • Có thắc mắc vì sao (2, 30, 4, 50).map(* + *) trả về (32, 45) thay vì có nên trả về (32, 54) hay không. Điều này có thể là do khác biệt trong cách biểu diễn số ở một số quốc gia

  • Có ý kiến hỏi liệu Perl giờ có đang đóng vai trò như cánh cổng dẫn vào họ ngôn ngữ APL hay không

  • Bày tỏ sự ngạc nhiên khi (2,4,8...*)[17] trả về 262144

  • Có người đang dùng Raku trong môi trường thực tế và cho rằng đây là ngôn ngữ phù hợp nhất cho xử lý văn bản. Việc xây dựng parser rất tuyệt, và họ ngạc nhiên vì nó không phải là ngôn ngữ tối ưu để xây dựng pipeline văn bản cho LLM

  • Đã theo dõi dự án này rất lâu; nó thú vị, nhưng thật đáng tiếc khi Perl 6 đã bị cản trở đáng kể vì dự án này