2 คะแนน โดย GN⁺ 2024-04-30 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

แนะนำงานวิจัยว่าด้วยความสัมพันธ์ระหว่าง Paint Splatters กับภาษาโปรแกรม Perl

  • บทความวิจัยที่ได้รับการตอบรับให้ตีพิมพ์ในการประชุม SIGBOVIK 2019 และได้รับรางวัล "Unwitting Participation Ribbon"
  • เมื่อสาดสีใส่กำแพง มีโอกาส 93% ที่จะได้โปรแกรม Perl ที่ใช้งานได้
  • ใช้แนวทางเชิงประจักษ์โดยอาศัยซอฟต์แวร์รู้จำอักขระด้วยแสง (OCR)
  • วิเคราะห์ลักษณะของโปรแกรม Perl ที่เกิดจาก Paint Splatter และยกตัวอย่าง Paint Splatter 7 แบบที่ไม่ใช่โปรแกรม Perl ที่ใช้งานได้

แนะนำเอกสารประกอบของงานวิจัย

  • แสดง Paint Splatter ทั้งหมดและซอร์สโค้ด Perl ที่ใช้งานได้ที่สอดคล้องกันไว้ในหน้าเดียว
  • รูปภาพที่ไม่สามารถ parse เป็นโปรแกรม Perl ที่ใช้งานได้จะแสดงคำว่า "ไม่ถูกต้อง" เป็นสีแดง
  • หากมีการรู้จำเป็นโปรแกรม Perl ที่ใช้งานได้หลายแบบจากการตั้งค่า OCR ที่ต่างกัน ผู้เขียนจะเลือกอันที่ "น่าสนใจ" ที่สุดตามรสนิยมด้านสุนทรียะของตน
  • มี tarball ที่บรรจุภาพ Paint Splatter จำนวน 100 ภาพซึ่งใช้เป็นชุดข้อมูลหลักของงานวิจัย

ตัวอย่างโปรแกรม Perl จาก Paint Splatter ที่น่าสนใจซึ่งค้นพบหลังเส้นตายส่งบทความ

  • splatter ที่ถูกรู้จำเป็นสตริง lerzfijglpFiji-j และถูกประเมินค่าเป็นเลข 0 ใน Perl
  • รูปภาพที่ถูกรู้จำเป็นสตริง *?- และถูกประเมินค่าเป็นเลข 0 ใน Perl
  • รูปภาพที่ถูกรู้จำเป็นสตริง ;i;c;;#\\\\?z{;?;;fn':.; และถูกประเมินค่าเป็นสตริง "c" ใน Perl
  • รูปภาพที่ถูกรู้จำเป็นสตริง ;E,'_', และถูกประเมินค่าเป็นสตริง "E_" ใน Perl

ความเห็นของ GN⁺

  • ดูเป็นงานวิจัยที่สำรวจคุณลักษณะของภาษาโปรแกรมด้วยไอเดียที่แปลกและสนุก และน่าจะเป็นตัวอย่างที่ดีในการแสดงให้เห็นความยืดหยุ่นทางไวยากรณ์ของ Perl แบบย้อนแย้ง
  • แต่ก็ชวนให้สงสัยว่าผลการวิจัยนี้กำลังบ่งชี้ถึงปัญหาในการออกแบบภาษา Perl หรือไม่ เพราะการที่แม้แต่สตริงสุ่มก็ยัง parse ได้ถึง 93% อาจสะท้อนความกำกวมของภาษาไม่ใช่หรือ?
  • น่าสนใจว่าถ้านำการทดลองคล้ายกันนี้ไปใช้กับภาษาโปรแกรมอื่นจะได้ผลอย่างไร การเปรียบเทียบผลลัพธ์ระหว่างภาษาน่าจะช่วยให้เห็นความแตกต่างของปรัชญาการออกแบบภาษา
  • การทำให้ไวยากรณ์ของภาษาโปรแกรมมองเห็นได้ด้วยวิธีนี้ก็ดูน่าสนใจเช่นกัน และน่าจะช่วยให้เข้าใจความซับซ้อนหรือความเป็นระเบียบของไวยากรณ์ในเชิงภาพได้

1 ความคิดเห็น

 
GN⁺ 2024-04-30
ความคิดเห็นจาก Hacker News
  • เป็นเรื่องไม่ถูกต้องที่ซอฟต์แวร์ OCR ยังสร้างผลลัพธ์เป็นข้อความแม้จากภาพที่ไม่ใช่ข้อความ จำได้ว่าเมื่อ 10 ปีก่อนตอนสแกนหนังสือเก่าด้วย OCR การต้องมาจัดการข้อความขยะที่ถูกสร้างจากภาพเล็ก ๆ คราบเปื้อน ฝุ่น ฯลฯ น่ารำคาญแค่ไหน ดูเหมือนว่าหลังจากนั้นวงการนี้ก็ไม่ได้ก้าวหน้าไปมากนัก

  • ภาษาแบบ concatenative มีคุณสมบัติที่ลำดับโทเคนทุกแบบเป็นโปรแกรมที่ถูกต้องได้

    • สำหรับภาษาที่ใช้บิตเดี่ยวเป็นโทเคน ลำดับบิตทุกแบบก็เป็นโปรแกรมที่ถูกต้อง
    • zot ของ Chris Barker ก็เป็นหนึ่งในภาษาประเภทนั้น
    • โดยได้แรงบันดาลใจจาก zot จึงมีการนิยาม Binary Lambda Calculus เวอร์ชันแบบ concatenative ขึ้น ซึ่งเวอร์ชันนี้ก็มีคุณสมบัติเดียวกัน
  • มีเชิงอรรถที่น่าสนุก:

    • โปรแกรม Perl "Illegal division by zero at /tmp/quine.pl line 1." ถ้าบันทึกไว้ในตำแหน่งที่เหมาะสม ก็จะพิมพ์ "Illegal division by zero at /tmp/quine.pl line 1." ออกมา เหตุผลที่มันทำงานแบบนี้ขอปล่อยไว้เป็นแบบฝึกหัดสำหรับผู้อ่าน
  • บทความที่เกี่ยวข้อง:

    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (กรกฎาคม 2021, 163 ความคิดเห็น)
    • "93% of Paint Splatters Are Valid Perl Programs (2019)" (ธันวาคม 2023, 1 ความคิดเห็น)
  • บทความนี้พูดถึงการที่โปรแกรม "optical character recognition" ตัวหนึ่งรู้จำคราบสีเป็นตัวอักษร โปรแกรมนี้ดูเหมือนจะมีแนวโน้มรู้จำออกมาเป็นชุดตัวอักษรแบบใดแบบหนึ่งแทบจะตลอดเวลา

  • ในบรรดาวิธีต่าง ๆ ที่ทำให้แนวคิดนี้เกิดขึ้นได้ วิธีนี้ถือว่าน่ายินดีต้อนรับอย่างยิ่งและเข้ากับเจตนารมณ์ แต่ก็ยังให้ภาพคร่าว ๆ ของวิธีอื่นที่เป็นไปได้ เช่น มองแถบสีและพื้นที่ว่างเป็น 0 กับ 1 แล้วมองทั้งหมดเป็นโปรแกรม ในกรณีนั้นส่วนใหญ่ก็คงเป็นเพียง noise ที่ไร้ความหมาย

  • มีอยู่สองสุดขั้ว คือสุดขั้วที่ส่วนใหญ่เป็น noise กับสุดขั้วที่ส่วนใหญ่มีความหมาย และเกมซ้อนเกมตรงนี้คือการหาวิธีตีความที่มอบความหมายให้คราบสีได้มากที่สุด โดยความหมายนั้นต้องออกมาจากโครงสร้างจริง ๆ ไม่ใช่จากการที่กฎเลือกจะมองเห็นความหมายอย่างแข็งขันเพียงใด

  • เป็นการดัดแปลงมุกเก่าเรื่อง "แยกไม่ออกจาก line noise" ได้อย่างฉลาด

  • ถ้าใช้ generative AI ก็จะสร้างคราบสีแบบใหม่และล้ำสมัยที่ถูกประเมินว่าเป็นซอฟต์แวร์ที่ทำงานได้เร็วขึ้น generative AI ช่วยให้ครีเอเตอร์รุ่นใหม่ใช้และต่อยอดเวิร์กโฟลว์จากข้อความสู่ภาพได้ พร้อมส่งมอบคุณค่าให้ธุรกิจทุกขนาด โมเดล AI รุ่นใหม่สามารถฝังซอฟต์แวร์ที่ทำงานได้และโค้ดที่เครื่องอ่านได้ลงในคอนเทนต์ความละเอียดสูงหลากหลายประเภท เพื่อดึงดูดผู้ชมและมอบวิธีใหม่ที่น่าตื่นเต้นในการขยายฐานผู้ชมให้ครีเอเตอร์

  • โพสต์เมื่อวันที่ 1 เมษายน ซึ่งบอกเป็นนัยอะไรบางอย่าง

  • ในฐานะโปรแกรมเมอร์ Perl ผมคิดว่า 7% ที่ใช้งานไม่ได้คือบั๊ก