2 poin oleh GN⁺ 2024-04-30 | 1 komentar | Bagikan ke WhatsApp
  • Makalah SIGBOVIK 2019 menguji lewat eksperimen OCR apakah mengoleskan cat ke dinding bisa saja tidak menjadi program Perl, dan menemukan bahwa 93 dari 100 noda dapat di-parse sebagai Perl
  • Eksperimen dilakukan dengan mengubah gambar noda cat menjadi string OCR, lalu memeriksa apakah hasilnya merupakan program Perl yang valid
  • Meski 93% valid, 7 noda sisanya tidak dapat di-parse sebagai Perl, sehingga masih ada pengecualian untuk lelucon semacam “apa pun selalu menjadi Perl”
  • Materi yang dipublikasikan mencakup semua gambar noda dan source Perl yang sesuai; gambar yang tidak valid dibedakan dengan tanda merah “Not valid
  • Beberapa hasil OCR yang diperiksa setelah pengajuan dievaluasi di Perl sebagai angka 0 atau string c, E__, memperlihatkan keanehan kode yang tercipta secara kebetulan

Kemungkinan Parsing Perl yang Diuji dengan Noda Cat

  • Makalah ini menjadikan sebagai objek eksperimen sebuah pertanyaan yang dikemas seperti masalah terbuka lama di komunitas bahasa pemrograman, yaitu apakah mengoleskan cat ke dinding bisa saja tidak menghasilkan Perl yang valid
  • Kesimpulannya mendekati “bisa”
    • Dalam eksperimen menggunakan perangkat lunak OCR, hanya 93% noda cat yang dapat di-parse sebagai Perl yang valid
    • Jadi, sebagian noda cat bukan program Perl yang valid
  • Makalah ini menganalisis sifat program Perl dari noda cat, dan juga menyajikan 7 contoh noda yang bukan program Perl yang valid

Makalah SIGBOVIK 2019 dan Materi Publik

  • Makalah ini diterima di SIGBOVIK 2019 yang diadakan di Pittsburgh pada 1 April 2019
  • Makalah ini juga menerima “Unwitting Participation Ribbon”
    • Pita ini diperkenalkan sebagai tanda yang diberikan pada makalah yang menyertakan “hasil nyata”
  • Makalah dan prosiding tersedia secara publik dalam beberapa bentuk

Galeri Noda dan Dataset 100 Gambar

  • all the paint splatters mengumpulkan semua noda cat dalam satu halaman, dan juga menyediakan source code Perl yang valid untuk tiap gambar
  • Gambar yang tidak dapat di-parse sebagai program Perl yang valid dibedakan dengan tanda merah “Not valid
  • Jika beberapa program Perl yang valid dikenali pada pengaturan OCR yang berbeda, dipilih satu hasil yang dirasa paling “menarik”
  • tarball of 100 paint-splatter images berisi 100 gambar noda cat yang digunakan sebagai dataset utama makalah

Contoh Tambahan yang Ditemukan Setelah Pengajuan

  • Setelah tenggat pengajuan SIGBOVIK pun, program Perl dari noda cat yang menarik masih ditemukan lagi
  • Noda yang dikenali OCR sebagai lerzfijglpFiji-j dievaluasi di Perl sebagai angka 0
  • Noda yang dikenali sebagai -*? juga dievaluasi di Perl sebagai angka 0
  • Gambar yang dikenali sebagai ;i;c;;#\\?z{;?;;fn':.; menjadi string c di Perl
  • Gambar yang dikenali sebagai ;E,'__' dievaluasi di Perl sebagai string E__

1 komentar

 
GN⁺ 2024-04-30
Komentar Hacker News
  • Bahasa konkatenatif memiliki sifat bahwa setiap urutan token menjadi program yang valid
    Jika sebuah bahasa memakai bit tunggal sebagai token, maka setiap deretan bit menjadi program yang valid. zot buatan Chris Barker adalah salah satu bahasa seperti itu
    Terinspirasi oleh zot, saya mendefinisikan versi konkatenatif dari Binary Lambda Calculus yang memiliki sifat yang sama
    [1] https://en.wikipedia.org/wiki/Concatenative_programming_lang...
    [2] https://en.wikipedia.org/wiki/Iota_and_Jot#Zot
    [3] https://cstheory.stackexchange.com/questions/32309/concatena...

    • “Bahasa konkatenatif memiliki sifat bahwa setiap urutan token menjadi program yang valid” sepertinya tidak benar
      Sifat bahasa konkatenatif adalah jika a dan b sama-sama program yang valid, maka a || b juga program yang valid. Di sini || berarti “penggabungan”
      Namun sifat ini tidak berarti semua deretan token valid. Misalnya, di Cat, [1 2 tidak valid secara sintaksis
    • Kalimat “menjadikan Jot sebagai penomoran Gödel yang alami untuk semua algoritme” terdengar keren
      Saya berharap bisa memahami Jot maupun kalimat itu
  • Catatan kaki 5 menarik
    ⁵ Fitur ini memungkinkan quine yang rapi. Jika program Perl “Illegal division by zero at /tmp/quine.pl line 1.” disimpan di lokasi yang tepat, program itu akan mencetak “Illegal division by zero at /tmp/quine.pl line 1.”. Alasan perilaku ini diserahkan sebagai latihan bagi pembaca

    • Saya menulis posting blog yang menjelaskan ini: https://dotat.at/@/2019-04-04-a-curious-perl-quine.html
      Dan ada juga Python quine yang sekilas terlihat terkait, tetapi sebenarnya cukup berbeda:
      File "quine.py", line 1
      File "quine.py", line 1
      ^
      IndentationError: unexpected indent
    • Bisa bantu pembaca yang tidak paham Perl?
      Saat saya coba di REPL, "Illegal division" gagal menemukan metode "illegal" di package "division", dan mungkin bagian itu diabaikan. Metode "by" di package "zero" juga mirip, dan "at /tmp" tampaknya adalah string paling sederhana yang menghasilkan pesan error itu. Sepertinya error ini lebih fatal daripada peringatan package yang hilang, sehingga program berakhir
      Saya sempat mengira / adalah operator pembagian dan "tmp" diinisialisasi sebagai variabel lalu dipaksa menjadi integer, tetapi "/tmp" saja tidak berhasil, sedangkan "/tmp/" memicu perilaku terkait regex, jadi saya tidak tahu mengapa parser membaginya di sana
    • Di Python juga bisa dibuat hal serupa dengan error indentasi
  • Tulisan terkait:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=27929730 - Juli 2021, 163 komentar
    Tautan lain:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=38754686 - Desember 2023, 1 komentar

  • Terlepas dari leluconnya, bukankah keliru kalau perangkat lunak OCR masih selalu menghasilkan teks bahkan dari gambar yang bukan teks?
    Lebih dari 10 tahun lalu saya melakukan OCR pada buku tua, dan saya ingat sangat kesal harus menangani teks sampah dari gambar kecil, noda, dan debu. Bidang ini tampaknya tidak banyak maju sejak saat itu

    • Pertanyaan itu tampaknya sejenis dengan pertanyaan di artikel asli
      Jika coretan acak menjadi eksekusi yang valid di Perl, bukankah ada sesuatu yang salah?
    • Untuk bagian ini, LLM membantu
      Dari eksperimen saya sendiri, ChatGPT adalah agen OCR yang “cerdas dan paham konteks” yang cukup bagus
    • Ada kemajuan. Hanya saja artikel yang diperkenalkan ini ditulis untuk hiburan
  • Saya memahami tulisan ini sebagai membahas masalah ketika program pengenalan karakter optik tertentu mengenali cipratan cat sebagai karakter
    Program itu tampaknya hampir selalu cenderung mengenali cat sebagai kombinasi karakter tertentu, dan di antara berbagai kemungkinan implementasi, cara seperti ini cukup layak diterima dan sesuai tujuan
    Namun awalnya saya juga terpikir pendekatan lain, seperti melihat serpihan warna dan ruang kosong sebagai 0 dan 1 lalu menafsirkan keseluruhannya sebagai program. Dalam kasus seperti itu, sebagian besar mungkin hanya noise tanpa makna
    Pada akhirnya ada dua ekstrem. Yang satu hampir sepenuhnya noise, yang lain sebagian besar bermakna. Permainan di dalam permainan di sini tampaknya adalah mencari cara interpretasi yang memberi sebanyak mungkin makna pada cipratan cat, tetapi makna itu sebisa mungkin muncul dari strukturnya sendiri, bukan dari aturan yang memaksakan pencarian makna

    • “hampir selalu mengenali pain sebagai kombinasi karakter tertentu”? Kalau begitu, harus mengeluarkan elektroensefalograf dan melihat apakah pain juga program Perl yang valid
  • Dengan AI generatif, kita bisa membuat cipratan cat baru dan inovatif yang dinilai sebagai perangkat lunak yang dapat dijalankan lebih cepat dari sebelumnya
    AI generatif memungkinkan kelas kreator baru memanfaatkan alur kerja teks-ke-gambar untuk menciptakan nilai bagi perusahaan dari segala skala. Model AI baru dapat menyisipkan perangkat lunak yang berfungsi dan kode yang dapat dibaca mesin ke dalam berbagai konten beresolusi tinggi, menarik perhatian penonton, serta menawarkan cara baru yang menarik bagi kreator untuk menumbuhkan audiens

  • Riset komputasi yang lebih mutakhir ada di sini: https://sigbovik.org/

  • Ini variasi cerdas dari lelucon lama “tidak bisa dibedakan dari line noise”
    Untuk yang jarang berurusan dengan line noise, bayangkan terminal video karakter ASCII yang menafsirkan stream byte untuk menampilkan teks bermakna. Lalu katakanlah kanal komunikasi rusak karena suatu alasan. Misalnya seseorang mengangkat gagang telepon saat modem sedang tersambung, atau kabel mengalami interferensi
    Tanpa koreksi kesalahan atau checksum, byte yang ditafsirkan pada dasarnya menjadi acak. Jadi huruf, angka, tanda baca, karakter kontrol, dan sebagainya yang acak ditafsirkan dan ditampilkan di layar; orang yang terbiasa akan tahu bahwa itu acak dan juga mengapa begitu. Namun leluconnya adalah bahwa itu ternyata tetap merupakan program Perl yang valid

    • Saya baru sadar bahwa line noise kini masuk kategori hal-hal yang tidak mungkin dijelaskan kepada anak zaman sekarang, seperti jadwal siaran TV
      Kalau begitu, sekalian saja saya mengikat bawang di ikat pinggang
  • Karena dia berkata “belum ada kode sumber. Saya tidak bisa GitHub”, sepertinya itu hilang untuk selamanya
    Setidaknya tidak ada di https://git.mcmillen.dev/explore/repos

  • Sebagai programmer Perl, saya menganggap 7% yang tidak berjalan itu sebagai bug