Ngôn ngữ lập trình J, một ngôn ngữ hàm hướng mảng tương tự như APL, gần đây đã tạo ra nhiều cuộc thảo luận trong cộng đồng lập trình, đặc biệt là do cú pháp độc đáo và cách tiếp cận giải quyết vấn đề của nó. Một bài viết giới thiệu gần đây về J đã làm dấy lên các cuộc trò chuyện về cả những đặc điểm kỳ lạ của ngôn ngữ này và một vấn đề thường xuyên xảy ra với việc tiêu đề bài đăng bị cắt ngắn trên các nền tảng chia sẻ.
Vấn đề cắt ngắn tiêu đề làm nổi bật các vấn đề khi đăng bài
Bài viết có tiêu đề Understanding J dường như đã bị cắt ngắn khi được chia sẻ, dẫn đến nhiều bình luận về tiêu đề không đầy đủ. Các thành viên cộng đồng chỉ ra rằng đây là một vấn đề thường xuyên xảy ra với một số người đăng bài sử dụng bot tự động để đăng lại nội dung từ các trang web khác mà không kiểm tra xem tiêu đề có phù hợp không. Một người bình luận đề xuất rằng việc viết tắt Understanding J: An introduction to J that gets to the point sẽ hoạt động tốt, trong khi một người khác lưu ý rằng người đăng đã đăng các tiêu đề bị lỗi trong khoảng năm năm mà không sửa bot của họ.
Cú pháp độc đáo của J khơi dậy sự tò mò và hoang mang
Các đặc điểm cú pháp riêng biệt của J, đặc biệt là việc sử dụng dấu gạch dưới cho số âm (như _3
thay vì -3
), đã thu hút sự chú ý của nhiều người bình luận. Lựa chọn không quy ước này bắt nguồn từ mối quan hệ của J với APL, vốn sử dụng một ký tự đặc biệt (¯) cho phép phủ định. J đã áp dụng dấu gạch dưới như một giải pháp thay thế tương thích với ASCII. Ngôn ngữ này cũng sử dụng dấu gạch dưới theo những cách độc đáo để biểu diễn vô cực (_
) và âm vô cực (__
), các cách tiếp cận giúp giảm nhu cầu xử lý ngoại lệ trong một số phép tính nhất định.
Gần đây tôi đã bắt đầu bị mê hoặc bởi J... Nhưng nó cứ liên tục xuất hiện trong đầu tôi và tôi dừng lại để nghĩ về J vào những thời điểm kỳ lạ nhất. Khi tôi sử dụng ngày càng nhiều ngôn ngữ, tôi càng trở nên say mê nó.
Các tính năng chính của ngôn ngữ J
- Ngôn ngữ lập trình hướng mảng tương tự như APL
- Ngôn ngữ hàm hỗ trợ lập trình ngầm (phong cách không điểm)
- Cú pháp độc đáo để biểu diễn:
- Số âm:
_3
(sử dụng dấu gạch dưới thay vì dấu trừ) - Vô cực:
_
(một dấu gạch dưới) - Âm vô cực:
__
(hai dấu gạch dưới)
- Số âm:
- Số phức được biểu diễn dưới dạng:
2j3
- Trạng từ để nâng cao động từ (hàm), bao gồm:
/
(Chèn)\
(Tiền tố)*.
(Mỗi)@:
(Tại)&:
(Dưới)
Trải nghiệm học tập với J vẫn còn đọng lại trong ký ức
Một chủ đề đặc biệt thú vị liên quan đến một người bình luận nhớ lại trải nghiệm học J trong chương trình học máy tính của họ hai mươi năm trước. Mặc dù thấy nó khó hiểu vào thời điểm đó và gặp phải các lỗi trình thông dịch, họ bày tỏ sự say mê kéo dài với ngôn ngữ này đã tồn tại qua nhiều thập kỷ. Tình cảm này phản ánh cách tiếp cận không quy ước của J đối với lập trình có thể để lại ấn tượng lâu dài, ngay cả khi tiếp xúc ban đầu là thách thức hoặc không đầy đủ.
Lập trình mảng truyền cảm hứng cho ý tưởng thiết kế ngôn ngữ
Cuộc thảo luận cũng đi sâu vào triết lý thiết kế ngôn ngữ, với một số người bình luận suy ngẫm về các mô hình lập trình lý tưởng có thể kết hợp lập trình mảng (như J) với các phương pháp nối (như FORTH). Điều này đã làm dấy lên các đề cập đến Uiua, một ngôn ngữ hướng mảng khác có thể đáp ứng các yêu cầu như vậy, cho thấy cách J tiếp tục truyền cảm hứng cho suy nghĩ về thiết kế và triển khai ngôn ngữ lập trình.
Đối với những người muốn thử nghiệm J mà không cần thiết lập phức tạp, một người bình luận đã đề xuất thêm thư mục .devcontainer
với một Dockerfile để cho phép thử nghiệm dựa trên trình duyệt thông qua GitHub Codespaces, thể hiện những nỗ lực liên tục của cộng đồng nhằm làm cho ngôn ngữ bất thường này dễ tiếp cận hơn đối với các lập trình viên tò mò.
Tham khảo: Understanding J