2 puan yazan GN⁺ 2024-04-30 | 1 yorum | WhatsApp'ta paylaş
  • SIGBOVIK 2019 makalesi, duvara boya sürtünce Perl programı olmaması mümkün mü sorusunu OCR deneyiyle inceledi; 100 lekeden %93’ü Perl olarak ayrıştırıldı
  • Deney, boya lekesi görsellerini OCR dizgilerine dönüştürüp sonucun geçerli bir Perl programı olup olmadığını kontrol etme yöntemiyle yürütüldü
  • %93 geçerli çıktı ancak kalan 7 leke Perl olarak ayrıştırılamadı; bu yüzden “her zaman Perl olur” türü şakalarda hâlâ istisnalar var
  • Açık materyaller, tüm leke görsellerini ve bunlara karşılık gelen Perl kaynaklarını içeriyor; geçerli olmayan görseller kırmızı “Not valid” işaretiyle ayrılıyor
  • Gönderimden sonra doğrulanan bazı OCR sonuçları Perl’de sayı 0 ya da c, E__ dizgileri olarak değerlendirildi; bu da tesadüfen oluşan kodun tuhaflığını gösteriyor

Boya lekeleriyle Perl ayrıştırılabilirliğini doğrulamak

  • Bu makale, programlama dili topluluğunun eski bir açık problemi gibi sunulan şu soruyu deney konusu yapıyor: duvara boya sürtünce geçerli Perl üretmemek mümkün mü
  • Sonuç “mümkün”e yakın
    • OCR yazılımıyla yapılan deneyde boya lekelerinin yalnızca %93’ü geçerli Perl olarak ayrıştırıldı
    • Dolayısıyla bazı boya lekeleri geçerli Perl programı değil
  • Makale, boya lekesi Perl programlarının özelliklerini analiz ediyor ve geçerli Perl programı olmayan 7 leke örneğini de sunuyor

SIGBOVIK 2019 makalesi ve açık materyaller

  • Makale, 1 Nisan 2019’da Pittsburgh’da düzenlenen SIGBOVIK 2019’a kabul edildi
  • “Unwitting Participation Ribbon” da aldı
    • Bu kurdele, “gerçek çıktı” içeren makalelere verilen bir işaret olarak tanıtılıyor
  • Makale ve bildiriler farklı biçimlerde herkese açık

Leke galerisi ve 100 görsellik veri kümesi

  • all the paint splatters, tüm boya lekelerini tek sayfada toplu gösteriyor ve her görsele karşılık gelen geçerli Perl kaynak kodunu da sağlıyor
  • Geçerli Perl programı olarak ayrıştırılmayan görseller kırmızı “Not valid” işaretiyle ayrılıyor
  • Farklı OCR ayarlarında birden fazla geçerli Perl programı tanındıysa, en “ilginç” bulunan sonuçlardan biri seçildi
  • tarball of 100 paint-splatter images, makalenin ana veri kümesi olarak kullanılan 100 boya lekesi görselini içeriyor

Gönderimden sonra doğrulanan ek örnekler

  • SIGBOVIK gönderim son tarihinden sonra da ilginç boya lekesi Perl programları ayrıca doğrulandı
  • OCR’ın lerzfijglpFiji-j olarak tanıdığı leke, Perl’de 0 sayısı olarak değerlendiriliyor
  • -*? olarak tanınan leke de Perl’de 0 sayısı olarak değerlendiriliyor
  • ;i;c;;#\\?z{;?;;fn':.; olarak tanınan görsel, Perl’de c dizgisi oluyor
  • ;E,'__' olarak tanınan görsel, Perl’de E__ dizgisi olarak değerlendiriliyor

1 yorum

 
GN⁺ 2024-04-30
Hacker News yorumları
  • Birleştirmeli dillerin her token dizisinin geçerli bir program olma özelliği vardır
    Tek bir biti token olarak kullanan bir dilde her bit dizisi geçerli bir program olur. Chris Barker’ın zot’u bu dillerden biridir
    zot’tan esinlenerek aynı özelliği paylaşan Binary Lambda Calculus’ın birleştirmeli bir sürümünü tanımlamıştım
    [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...

    • “Birleştirmeli dillerin her token dizisinin geçerli bir program olma özelliği vardır” ifadesi doğru görünmüyor
      Birleştirmeli dillerin özelliği, a ve b’nin ikisi de geçerli programlarsa a || b’nin de geçerli program olmasıdır. Burada || “ardışık ekleme” anlamına gelir
      Ama bu özellik tüm token dizilerinin geçerli olduğu anlamına gelmez. Örneğin Cat’te [1 2 sözdizimsel olarak geçerli değildir
    • “Jot’u tüm algoritmaların doğal bir Gödel numaralandırması yapar” cümlesi havalı görünüyor
      Keşke hem Jot’u hem de o cümleyi anlayabilsem
  • 5 numaralı dipnot eğlenceliydi
    ⁵ Bu özellik temiz bir quine’ı mümkün kılar. Perl programı “Illegal division by zero at /tmp/quine.pl line 1.” uygun konuma kaydedilirse “Illegal division by zero at /tmp/quine.pl line 1.” çıktısını verir. Bu davranışın nedeni okuyucuya alıştırma olarak bırakılmıştır

    • Bunu açıklayan bir blog yazısı yazmıştım: https://dotat.at/@/2019-04-04-a-curious-perl-quine.html
      Ayrıca görünüşte ilişkili gibi duran ama aslında epey farklı bir Python quine da var:
      File "quine.py", line 1
      File "quine.py", line 1
      ^
      IndentationError: unexpected indent
    • Perl bilmeyen okurlara yardımcı olabilir misiniz?
      REPL’de denediğimde "Illegal division", "division" paketinde "illegal" metodunu bulamıyor; muhtemelen o kısım yok sayılıyor. "zero" paketinin "by" metodu da benzer; "at /tmp" ise bu hata mesajını üreten en basit string gibi görünüyor. Bu hata, eksik paket uyarısından daha ciddi olduğu için programı sonlandırıyor gibi
      /’nin bölme operatörü olduğunu ve "tmp"nin bir değişken olarak başlatılıp sonra tamsayıya zorlandığını düşündüm; ama yalnızca "/tmp" işe yaramıyor, "/tmp/" ise regex ile ilgili bir davranışa yol açıyor, bu yüzden parser’ın orada neden bölme yaptığını bilmiyorum
    • Python’da da girinti hatası ile benzer bir şey yapılabilir
  • İlgili yazılar:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=27929730 - Temmuz 2021, 163 yorum
    Başka bir bağlantı:
    93% of Paint Splatters Are Valid Perl Programs (2019) - https://news.ycombinator.com/item?id=38754686 - Aralık 2023, 1 yorum

  • Şakayı bir kenara bırakırsak, OCR yazılımlarının metin olmayan görüntülerden hâlâ her zaman metin sonucu üretmesi yanlış değil mi?
    10 yıldan da uzun süre önce eski bir kitabı OCR’dan geçirmiştim; küçük resimlerden, lekelerden ve tozdan çıkan çöp metinlerle uğraşmak çok can sıkıcıydı. Bu alanda o zamandan beri pek ilerleme olmamış gibi görünüyor

    • Bu soru, asıl yazıdaki soruyla aynı türden görünüyor
      Rastgele karalamalar Perl’de geçerli bir çalıştırmaya dönüşüyorsa bir şeyler yanlış değil mi?
    • Bu noktada LLM yardımcı oluyor
      Kendi denemelerimde ChatGPT oldukça iyi bir “akıllı ve bağlamdan anlayan” OCR ajanıydı
    • İlerleme oldu. Sadece tanıtılan yazı eğlence amaçlı
  • Bu yazının, belirli bir optik karakter tanıma programının boya sıçramalarını karakter olarak tanıması sorununu ele aldığını anladım
    O program neredeyse her zaman boyayı bir tür karakter kombinasyonu olarak tanımaya eğilimli görünüyor; olası birçok uygulama biçimi arasında bu yaklaşım gayet kabul edilebilir ve amacına da uygun
    Ancak başta, renk parçalarını ve boş alanları 0 ve 1 olarak görüp tamamını program olarak yorumlamak gibi başka bir yöntem de aklıma gelmişti. Böyle bir durumda sonuçların çoğu muhtemelen anlamsız gürültü olurdu
    Sonuçta iki uç var. Biri neredeyse tamamen gürültü, diğeri ise çoğunlukla anlam içeriyor. Buradaki oyun içindeki oyun, boya sıçramalarına mümkün olduğunca çok anlam yükleyen; fakat bu anlamın kuralların zorla anlam bulmasından değil, yapının kendisinden olabildiğince gelmesini sağlayan bir yorumlama yöntemi bulmak gibi görünüyor

    • “pain’i neredeyse her zaman bir tür karakter kombinasyonu olarak tanıyor” demek; o zaman EEG’yi çıkarıp pain’in de geçerli bir Perl programı olup olmadığına bakmak lazım
  • Üretken yapay zeka kullanarak, çalıştırılabilir yazılım olarak değerlendirilen yeni ve yenilikçi boya sıçramalarını her zamankinden hızlı üretebilirsiniz
    Üretken yapay zeka, yeni bir yaratıcı sınıfın metinden görsele iş akışlarından yararlanarak her ölçekteki işletme için değer üretmesini sağlıyor. Yeni yapay zeka modelleri, çalışan yazılımları ve makine tarafından okunabilir kodu çeşitli yüksek çözünürlüklü içeriklere gömebilir; izleyicinin ilgisini çeker ve yaratıcıların kitlelerini büyütmesi için yeni ve heyecan verici yollar sunar

  • Daha son teknoloji hesaplamalı araştırmalar burada: https://sigbovik.org/

  • Eski “hat gürültüsünden ayırt edilemez” şakasının zekice bir çeşidi
    Hat gürültüsü ile sık karşılaşmamış olanlar için açıklayayım: ASCII karakterli bir video terminalinin bir bayt akışını yorumlayıp anlamlı metin gösterdiğini düşünün. Şimdi iletişim kanalının bir nedenle bozulduğunu varsayın. Örneğin modem bağlıyken birinin telefon ahizesini kaldırması ya da kabloda parazit oluşması gibi
    Hata düzeltme veya checksum yoksa yorumlanan baytlar fiilen rastgele olur. Böylece rastgele harfler, rakamlar, noktalama işaretleri ve kontrol karakterleri yorumlanıp ekranda gösterilir; buna aşina olan biri bunun rastgele olduğunu ve nedenini anlar. Şaka ise bunun aslında hâlâ geçerli bir Perl programı olmasında

    • Hat gürültüsünün artık bugünün çocuklarına asla açıklayamayacağımız şeyler, mesela TV yayın akışı gibi, kategorisine girdiğini fark ettim
      Madem öyle, kemerime bir soğan bağlamam gerekecek
  • “Kaynak kod henüz yok. GitHub kullanmayı bilmiyorum” dediğine göre sonsuza dek kaybolmuş gibi
    En azından https://git.mcmillen.dev/explore/repos adresinde yok

  • Bir Perl programcısı olarak, çalışmayan %7’nin bug olduğunu düşünüyorum