Giới thiệu bài báo nghiên cứu về mối quan hệ giữa Paint Splatters và ngôn ngữ lập trình Perl
- Bài báo được chấp nhận đăng tại hội nghị SIGBOVIK 2019 và giành giải thưởng "Unwitting Participation Ribbon"
- Khi hắt sơn lên tường, có 93% xác suất tạo ra một chương trình Perl hợp lệ
- Sử dụng cách tiếp cận thực nghiệm với phần mềm nhận dạng ký tự quang học (OCR)
- Phân tích các đặc tính của các chương trình Perl được tạo ra từ Paint Splatter và đưa ra 7 ví dụ về Paint Splatter không phải là chương trình Perl hợp lệ
Giới thiệu tài liệu bổ sung của bài báo
- Hiển thị trên một trang duy nhất tất cả Paint Splatter và mã nguồn Perl hợp lệ tương ứng
- Các hình ảnh không được phân tích cú pháp thành chương trình Perl hợp lệ sẽ được đánh dấu "không hợp lệ" bằng màu đỏ
- Nếu nhiều chương trình Perl hợp lệ được nhận diện với các thiết lập OCR khác nhau, tác giả sẽ chọn cái "thú vị" nhất theo cảm quan thẩm mỹ của mình
- Cung cấp một tệp tarball chứa 100 hình ảnh Paint Splatter đã được dùng làm bộ dữ liệu chính của bài báo
Ví dụ về các chương trình Perl từ Paint Splatter thú vị được phát hiện sau hạn chót nộp bài
- Vết sơn được nhận diện thành chuỗi
lerzfijglpFiji-j và được Perl đánh giá là số 0
- Hình ảnh được nhận diện thành chuỗi
*?- và được Perl đánh giá là số 0
- Hình ảnh được nhận diện thành chuỗi
;i;c;;#\\\\?z{;?;;fn':.; và được Perl đánh giá là chuỗi "c"
- Hình ảnh được nhận diện thành chuỗi
;E,'_', và được Perl đánh giá là chuỗi "E_"
Ý kiến của GN⁺
- Có vẻ đây là một bài báo khám phá đặc tính của ngôn ngữ lập trình bằng một ý tưởng độc đáo và thú vị. Đây cũng có thể là một ví dụ hay cho thấy một cách đầy nghịch lý sự linh hoạt cú pháp của Perl.
- Tuy vậy, cũng khiến người ta tự hỏi liệu kết quả nghiên cứu này có gợi ý vấn đề nào trong thiết kế ngôn ngữ Perl hay không. Việc cả chuỗi ngẫu nhiên cũng được phân tích cú pháp tới 93% chẳng phải đang bộc lộ sự mơ hồ của ngôn ngữ sao?
- Nếu áp dụng thí nghiệm tương tự cho các ngôn ngữ lập trình khác thì kết quả sẽ ra sao cũng là điều đáng tò mò. So sánh kết quả giữa các ngôn ngữ có lẽ sẽ cho thấy sự khác biệt trong triết lý thiết kế ngôn ngữ.
- Việc trực quan hóa ngữ pháp ngôn ngữ lập trình theo cách này cũng có vẻ là một thử nghiệm thú vị. Nó có thể giúp nhìn nhận trực quan hơn về độ phức tạp hay tính quy luật của ngữ pháp.
1 bình luận
Ý kiến trên Hacker News
Việc phần mềm OCR vẫn tạo ra kết quả văn bản từ cả những hình ảnh không phải văn bản là một điều sai. Tôi nhớ cách đây 10 năm khi quét OCR những cuốn sách cũ, việc phải xử lý đống văn bản rác được tạo ra từ các hình vẽ nhỏ, vết bẩn, bụi v.v. đã phiền toái đến mức nào. Có vẻ lĩnh vực này từ đó đến nay cũng không tiến bộ nhiều.
Ngôn ngữ concatenative có đặc tính là mọi chuỗi token đều trở thành chương trình hợp lệ.
zotcủa Chris Barker là một ngôn ngữ như vậy.zot, tôi đã định nghĩa một phiên bản concatenative của Binary Lambda Calculus, và phiên bản này cũng có cùng đặc tính đó.Có một chú thích khá thú vị:
"Illegal division by zero at /tmp/quine.pl line 1."nếu được lưu đúng vị trí thì sẽ in ra"Illegal division by zero at /tmp/quine.pl line 1.". Lý do vì sao lại hoạt động như vậy xin dành cho người đọc tự tìm hiểu.Bài liên quan:
Bài này nói về việc một chương trình "nhận dạng ký tự quang học" cụ thể nhận diện các vệt sơn như chữ cái. Có vẻ chương trình này gần như lúc nào cũng có xu hướng nhận ra chúng thành một tổ hợp ký tự nào đó.
Trong số nhiều cách có thể dùng để hiện thực ý tưởng này, cách này hoàn toàn đáng hoan nghênh và đúng tinh thần. Tuy vậy, nó cũng gợi ra ấn tượng ban đầu về những cách khác có thể làm, như coi các mảng màu và khoảng trống là 0 và 1 rồi xem toàn bộ như một chương trình. Trong trường hợp đó, phần lớn sẽ chỉ là nhiễu vô nghĩa.
Có hai cực đoan: một bên là hầu như toàn nhiễu, bên kia là hầu như toàn ý nghĩa. Trò chơi bên trong trò chơi ở đây là tìm ra một cách diễn giải có thể gán nhiều ý nghĩa nhất có thể cho các vệt sơn. Nhưng ý nghĩa đó phải thực sự xuất phát từ cấu trúc, chứ không phải từ việc các quy tắc chủ động đến mức nào trong việc chọn nhìn thấy ý nghĩa.
Đây là một biến thể khéo léo của câu đùa cũ "không thể phân biệt với line noise".
Dùng AI tạo sinh thì có thể làm ra các vệt sơn mới mẻ và đột phá được đánh giá là phần mềm chạy được nhanh hơn. AI tạo sinh cho phép một tầng lớp nhà sáng tạo mới tận dụng và khai thác quy trình làm việc từ văn bản sang hình ảnh, đồng thời mang lại giá trị cho doanh nghiệp ở mọi quy mô. Các mô hình AI mới có thể nhúng phần mềm hoạt động và mã máy có thể đọc được vào nhiều loại nội dung độ phân giải cao, thu hút người xem và mang đến cho nhà sáng tạo những cách mới mẻ, thú vị để mở rộng khán giả.
Được đăng vào ngày 1 tháng 4. Điều đó gợi ý điều gì đó.
Với tư cách là một lập trình viên Perl, tôi nghĩ 7% không chạy được là bug.