โครงการ GitHub repository ที่รวบรวมไฟล์ที่ถูกต้องขนาดเล็กที่สุดจากภาษาโปรแกรมมิ่งและรูปแบบไฟล์ต่างๆ ได้จุดประกายการอพิพากษ์ที่น่าสนใจเกี่ยวกับสิ่งที่ถือว่าเป็นโค้ดและรูปแบบไฟล์ที่ถูกต้องจริงๆ โครงการนี้มีจุดประสงค์เพื่อแสดงให้เห็นข้อกำหนดขั้นต่ำสุดสำหรับไฟล์ที่ถูกต้องทางไวยากรณ์ในเทคโนโลยีต่างๆ
สстатิสติกของ Repository:
- ไฟล์ทั้งหมด: 137 ไฟล์
- ไฟล์ว่าง: 31 ไฟล์ (22.6%)
- หมวดหมู่ไฟล์: Archives, Audio, Documents, Executables, Graphics, Languages, Markup, Video, Unsorted
ไฟล์เปล่าครองส่วนใหญ่แต่ทำให้เกิดคำถาม
Repository นี้มีไฟล์ทั้งหมด 137 ไฟล์ โดยมี 31 ไฟล์ที่เป็นไฟล์เปล่าสมบูรณ์ แม้ว่าไฟล์ขนาดศูนย์ไบต์เหล่านี้จะตอบสนองข้อกำหนดของ interpreter ในภาษาอย่าง Python ได้ แต่นักพัฒนาก็ตั้งคำถามว่าไฟล์เปล่าสามารถเป็นตัวแทนของภาษาโปรแกรมมิ่งได้จริงหรือไม่ บางคนโต้แย้งว่าหากคุณสามารถรันคำสั่งอย่าง python myfile.py
โดยไม่มีข้อผิดพลาด ไฟล์นั้นควรถือว่าถูกต้อง โดยไม่คำนึงถึงเนื้อหา
การถกเถียงเชิงปรัชญานี้ขยายไปเกินกว่าภาษาโปรแกรมมิ่ง คอลเลกชันนี้รวมถึงตัวอย่างขั้นต่ำสำหรับรูปแบบไฟล์ตั้งแต่รูปภาพและไฟล์บีบอัดไปจนถึงเอกสารและไฟล์ปฏิบัติการ แม้ว่าหลายไฟล์จะอาศัยการแยกวิเคราะห์แบบผ่อนปรนมากกว่าการปฏิบัติตามมาตรฐานอย่างเคร่งครัด
การปฏิบัติตามมาตรฐานถูกตรวจสอบอย่างละเอียด
สมาชิกชุมชนได้ระบุไฟล์หลายไฟล์ที่ไม่ตรงตามข้อกำหนดอย่างเป็นทางการ ตัวอย่าง PDF ขาดองค์ประกอบที่จำเป็นอย่างมาร์กเกอร์ %%EOF
และตารางอ้างอิงไขว้ ในขณะที่รูปแบบรูปภาพบางอย่างผลักดันขอบเขตของสิ่งที่เบราว์เซอร์และแอปพลิเคชันต่างๆ จะยอมรับ นักวิจารณ์ชี้ให้เห็นว่าผู้เขียนไม่ได้ระบุว่าไฟล์เหล่านี้ควรทำงานใน implementation ใด ทำให้ยากต่อการตรวจสอบความเข้ากันได้ที่แท้จริง
ไฟล์เหล่านี้บางไฟล์ไม่เป็นไปตามมาตรฐานอย่างมาก แม้ในเมื่อมาตรฐานไม่เหลือที่ว่างให้... น่าเสียดายที่ผู้เขียนไม่ได้ระบุว่าสิ่งเหล่านี้ควรทำงานใน implementation ใด
การประยุกต์ใช้งานจริง:
- GIF ขนาดเล็กที่สุด (42 ไบต์): ใช้เป็นตัวแทน favicon เพื่อป้องกันข้อผิดพลาด 404
- รูปแบบ Data URI:
<link rel="icon" href="data:image/gif;base64,R0lGODlhAQABAAAAADs=">
- favicon ขนาดเล็กทางเลือก:
<link rel=icon href=data:>
(สั้นกว่าเดิม)
การตรวจสอบความถูกต้องของ HTML จุดประกายการอพิพากษ์ทางประวัติศาสตร์
ต้นกำเนิดของโครงการในการสำรวจไฟล์ HTML5 ขั้นต่ำได้จุดประกายการถกเถียงเกี่ยวกับวิวัฒนาการของมาตรฐาน HTML ขึ้นใหม่ นักพัฒนาได้อภิปรายว่า HTML5 เปลี่ยนแปลงอย่างพื้นฐานจากเวอร์ชันก่อนหน้าโดยการกำหนดอัลกอริทึมที่เคร่งครัดสำหรับการจัดการมาร์กอัปที่หลวม แทนที่จะต้องการโครงสร้างที่แข็งแกร่ง การเปลี่ยนแปลงนี้หมายความว่าเอกสารอย่าง <!DOCTYPE html><title>Hello</title>
ตอนนี้เป็นไปตามมาตรฐานอย่างสมบูรณ์ แม้ว่านักพัฒนาหลายคนยังคงต่อต้านการยอมรับมาร์กอัปขั้นต่ำเช่นนี้ว่าถูกต้อง
การสนทนาเผยให้เห็นว่าปรัชญาการแยกวิเคราะห์เปลี่ยนแปลงอย่างมากระหว่าง HTML 4 และ HTML5 โดยมาตรฐานใหม่กว่าได้ทำการประมวลผลการแยกวิเคราะห์ tag soup ที่เบราว์เซอร์ได้ทำอย่างไม่เป็นทางการมานานหลายปี
วิวัฒนาการของมาตรฐาน HTML:
- HTML 4 และรุ่นก่อนหน้า: ข้อกำหนดโครงสร้างที่เข้มงวดพร้อมการแยกวิเคราะห์ SGML
- HTML5: อัลกอริทึมการแยกวิเคราะห์ที่ยืดหยุ่นซึ่งจัดการกับมาร์กอัป "tag soup" ได้
- HTML5 ที่ถูกต้องขั้นต่ำ:
<!DOCTYPE html><title>Hello</title>
- การเปลี่ยนแปลงสำคัญ: มาตรฐานในปัจจุบันกำหนดวิธีการดึง DOM จากข้อมูลอักขระใดๆ
แอปพลิเคชันในทางปฏิบัติเกิดขึ้น
แม้จะมีลักษณะทางวิชาการของแบบฝึกหัด นักพัฒนาก็พบการใช้งานในทางปฏิบัติสำหรับไฟล์ขั้นต่ำเหล่านี้ GIF ที่ถูกต้องขนาดเล็กที่สุดทำหน้าที่เป็น favicon placeholder ที่มีประสิทธิภาพในระหว่างการพัฒนา ป้องกันข้อผิดพลาด 404 ในบันทึกของเบราว์เซอร์ นักพัฒนาเว็บยังแบ่งปันเทคนิคสำหรับการสร้าง SVG favicon ขั้นต่ำและอภิปรายการใช้ GIF โปร่งใสขนาดเล็กในอดีตในเลย์เอาต์ที่ใช้ตารางจากหลายทศวรรษที่ผ่านมา
โครงการนี้แสดงให้เห็นว่าการเข้าใจข้อกำหนดขั้นต่ำสุดสำหรับรูปแบบไฟล์สามารถนำไปสู่การปรับปรุงประสิทธิภาพที่มีประโยชน์ได้ แม้ว่าตัวอย่างเหล่านั้นจะไม่เหมาะสมสำหรับการใช้งานจริง นอกจากนี้ยังเน้นความตึงเครียดที่ดำเนินต่อไประหว่างการปฏิบัติตามมาตรฐานเชิงทฤษฎีและความเข้ากันได้ของ implementation ในโลกแห่งความเป็นจริงข้ามแพลตฟอร์มและแอปพลิเคชันต่างๆ
อ้างอิง: Smallest possible […] file