- Tabloid là một ngôn ngữ lập trình Turing hoàn chỉnh cho phép viết mã theo văn phong tiêu đề tin tức clickbait (câu view)
- Việc xuất dữ liệu được thực hiện bằng cú pháp
YOU WON'T WANT TO MISS, và mọi đầu ra đều tự động chuyển thành CHỮ HOA và thêm dấu chấm than
- Khai báo hàm dùng cú pháp
DISCOVER HOW TO ... WITH, khai báo biến dùng cú pháp EXPERTS CLAIM ... TO BE
- Không có cấu trúc vòng lặp, thay vào đó việc lặp được triển khai bằng lời gọi đệ quy, và giá trị trả về của hàm được biểu diễn bằng
SHOCKING DEVELOPMENT
- Chương trình bắt buộc phải kết thúc bằng
PLEASE LIKE AND SUBSCRIBE, và hiện có trình thông dịch JavaScript cùng bản triển khai Racket
Tổng quan về ngôn ngữ Tabloid
- Tabloid là một ngôn ngữ được thiết kế để viết chương trình theo phong cách tiêu đề báo clickbait
- Trong mã ví dụ, hàm được khai báo theo dạng
DISCOVER HOW TO fibonacci WITH a, b, n
- Sử dụng các cú pháp dạng câu như
RUMOR HAS IT, WHAT IF, END OF STORY
- Mọi đầu ra của ngôn ngữ đều bắt đầu bằng
YOU WON'T WANT TO MISS, đồng thời tự động chuyển thành chữ hoa và thêm dấu chấm than
Cú pháp và đặc điểm chính
- Khai báo hàm:
DISCOVER HOW TO ... WITH
- Khai báo/gán biến:
EXPERTS CLAIM ... TO BE
- Câu lệnh điều kiện:
WHAT IF ... LIES!
- Gọi hàm:
A OF B, C
- Phạm vi khối: bắt đầu bằng
RUMOR HAS IT, kết thúc bằng END OF STORY
- Câu lệnh trả về:
SHOCKING DEVELOPMENT
- Kết thúc chương trình:
PLEASE LIKE AND SUBSCRIBE
- Giá trị boolean:
TOTALLY RIGHT(true), COMPLETELY WRONG(false)
- Toán tử:
PLUS, MINUS, TIMES, DIVIDED BY, MODULO, IS ACTUALLY, BEATS, SMALLER THAN v.v.
Cách ngôn ngữ vận hành
- Tabloid có thể chạy thông qua trình thông dịch được viết bằng JavaScript
- Các kiểu dữ liệu được hỗ trợ là số, chuỗi, boolean
- Không có cú pháp vòng lặp, và việc lặp được triển khai bằng gọi đệ quy
- Ngoài trình thông dịch trực tuyến, còn có bản triển khai Racket và thư viện hàm hỗ trợ
Bối cảnh phát triển
- Tác giả cho biết đã tạo ra ngôn ngữ này để né làm bài tập môn hệ quản trị cơ sở dữ liệu
- Trước Tabloid, tác giả cũng từng phát triển một ngôn ngữ thực dụng hơn mang tên Ink
Danh sách từ khóa chuẩn
DISCOVER HOW TO...WITH: khai báo hàm
RUMOR HAS IT: bắt đầu khối
A OF B, C: gọi hàm
WHAT IF...LIES!: câu lệnh điều kiện
END OF STORY: kết thúc khối
EXPERTS CLAIM...TO BE: khai báo/gán biến
YOU WON'T WANT TO MISS: xuất dữ liệu
LATEST NEWS ON: nhập từ người dùng
TOTALLY RIGHT, COMPLETELY WRONG: giá trị boolean
AND, OR: toán tử logic
PLUS, MINUS, TIMES, DIVIDED BY, MODULO: toán tử số học
IS ACTUALLY, BEATS, SMALLER THAN: toán tử so sánh
SHOCKING DEVELOPMENT: trả về từ hàm
PLEASE LIKE AND SUBSCRIBE: kết thúc chương trình
2 bình luận
Bạn định thuyết phục cả đội chuyển codebase sang ngôn ngữ này à? ha ha ha
Ý kiến trên Hacker News
Sẽ vui hơn nếu tiêu đề bài đăng là “Will this programming language revolutionize software development?”
Ngôn ngữ này trước đây cũng từng nổi tiếng
Nó cũng từng được bàn tán trong bài viết số 24578749 năm 2020 và bài viết số 40964261 năm 2024
Người này đang nghĩ đến chuyện dùng các macro như thế này trong công việc thực tế để giữ cho việc lập trình luôn thú vị
Trong ví dụ mã, các cụm như “EXPERTS CLAIM”, “SHOCKING DEVELOPMENT”, “PLEASE LIKE AND SUBSCRIBE” lặp đi lặp lại, trông đúng như các tiêu đề tin tức
Có vẻ tiêu đề “And That’s a Good Thing” tóm tắt rất đúng tình huống này
Có người nêu ý tưởng dùng “CONSIDERED HARMFUL” làm toán tử phủ định hậu tố
còn “BAN THIS SICK FILTH” thì có thể dùng làm cú pháp ném ngoại lệ
Họ cũng cho rằng nên nhét thêm những từ như “SLAMS” hay “SNUBBED” vào đâu đó
Có thể xem chi tiết trong phần tổng quan ngôn ngữ của README trên GitHub
Sẽ còn hoàn hảo hơn nếu tên vòng lặp là “BREAKING NEWS … KEEP READING TO DISCOVER”
“BREAKING NEWS! Ngu ngốc một cách hoàn hảo nhưng lại đáng yêu”
Người này định thuyết phục cả đội chuyển codebase sang ngôn ngữ này
Và kết lại bằng câu “FOLLOW ME to find out how it goes”
Giờ chỉ còn thiếu các ngôn ngữ đồng hành Turing hoàn chỉnh phù hợp với ngôn ngữ này nữa thôi
Họ hình dung “Thunderfoot” là ngôn ngữ để viết kịch bản video phản bác các bài báo Tabloid,
“Fisker” là ngôn ngữ cho các bài post troll trên cộng đồng Discord hoặc Steam,
còn “Shitlist” là ngôn ngữ tự động tạo awesomelist cho GitHub
Dự án này là một thử nghiệm quái dị nhưng đầy dễ chịu, nên ngược lại lại thấy khá mới mẻ
Tiêu đề bài đăng mà là “SHOCKING DEVELOPMENT” thì đã hoàn hảo rồi