- 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ı
0ya dac,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
- Google Docs: makaleyi görüntüle
- PDF: makaleyi indir
- SIGBOVIK 2019 proceedings: tüm bildiriler, ilgili makale 174. sayfada
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-jolarak tanıdığı leke, Perl’de0sayısı olarak değerlendiriliyor -*?olarak tanınan leke de Perl’de0sayısı olarak değerlendiriliyor;i;c;;#\\?z{;?;;fn':.;olarak tanınan görsel, Perl’decdizgisi oluyor;E,'__'olarak tanınan görsel, Perl’deE__dizgisi olarak değerlendiriliyor
1 yorum
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 ö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 2sözdizimsel olarak geçerli değildirKeş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
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
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İ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
Rastgele karalamalar Perl’de geçerli bir çalıştırmaya dönüşüyorsa bir şeyler yanlış değil mi?
Kendi denemelerimde ChatGPT oldukça iyi bir “akıllı ve bağlamdan anlayan” OCR ajanıydı
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
Ü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
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