9 · แล้วเราก็เลิกประหยัด
Super Mario Bros ทั้งเกมคือ 40 กิโลไบต์ และ 8 ใน 40 นั้นเป็นรูป
ตัวเลขชุดนี้แยกได้ชัดเจนเพราะตลับ NES แบ่งหน่วยความจำเป็นสองก้อนคนละชนิด — PRG-ROM 32 กิโลไบต์ เก็บโค้ดกับข้อมูลของเกม และ CHR-ROM 8 กิโลไบต์ เก็บภาพตัวละครกับฉากทั้งหมด ยี่สิบเปอร์เซ็นต์ของตลับคือศิลปะ ตั้งแต่ปี 1985
ตัวเลขนี้เป็นของที่ถูกยกมาบ่อยในบทสนทนาเรื่อง "สมัยก่อนเขาเขียนโปรแกรมเก่งกว่า" และก่อนจะไปต่อ ต้องแยกสองอย่างออกจากกันก่อน เพราะมันคนละเรื่อง
เรื่องแรกเป็นความจริงและน่าสนใจมาก ข้อจำกัดผลิตความสง่างาม เครื่อง NES มีหน่วยความจำสำหรับทำงานอยู่ 2 กิโลไบต์ สองพันกว่าไบต์ สำหรับทุกอย่างที่เกมต้องจำระหว่างเล่น ตลับมีราคาต่อกิโลไบต์ที่แพงจริงในเชิงการผลิต คนที่เขียนเกมในสภาพนั้นไม่ได้ประหยัดเพราะมีคุณธรรม เขาประหยัดเพราะมีกำแพง และกำแพงนั้นบังคับให้เกิดวิธีที่ฉลาดจริง ๆ — ฉากที่สร้างจากกฎแทนการเก็บเป็นภาพ ตัวละครที่ใช้รูปเดียวกันพลิกกลับด้าน เมฆกับพุ่มไม้ใน Super Mario Bros ที่เป็นรูปเดียวกันคนละสี
เรื่องที่สองเป็นสิ่งที่ต้องแย้ง ของที่บวมขึ้นในเกมสมัยนี้ไม่ใช่โค้ด
เกมขนาดร้อยกิกะไบต์ไม่ได้มีตรรกะมากกว่า Super Mario Bros เป็นล้านเท่า มันมีพื้นผิวความละเอียดสูง เสียงพากย์หลายภาษา วิดีโอ โมเดลสามมิติ แผนที่ขนาดใหญ่ สิ่งเหล่านี้คือ asset และ asset ขยายตามความละเอียดของจอกับหูของคนเล่น ไม่ได้ขยายตามความซับซ้อนของโปรแกรม ส่วนเอนจินเกมสมัยใหม่ที่ต้องดันภาพหกสิบเฟรมต่อวินาทีโดยไม่กระตุก คือโค้ดที่ถูกไล่บีบอย่างหนักที่สุดประเภทหนึ่งเท่าที่มนุษย์เขียนกัน
ตรงนี้ต้องบอกสิ่งที่ยังบอกไม่ได้ด้วย — สัดส่วนโค้ดต่อ asset ของเกมสมัยใหม่ เล่มนี้ไม่มีตัวเลขที่ตรวจแล้ว ของที่ยืนยันได้คือ 32 ต่อ 8 ของตลับ NES และคำอธิบายเชิงกลไกว่าทำไมสองฝั่งถึงโตคนละอัตรา ใครก็ตามที่มีตัวเลขจริงของฝั่งสมัยใหม่ ขอให้ส่งมา แล้วเล่มนี้จะแก้
แล้วคำว่า "เราเลิกประหยัด" มันผิดทั้งหมดหรือเปล่า
ไม่ผิด แต่มันเกิดคนละที่กับที่คนชี้
สิ่งที่หายไปจริงคือ การประหยัดในที่ที่ไม่มีกำแพงอีกแล้ว เว็บแอปที่โหลดไลบรารีห้าเมกะไบต์เพื่อแสดงข้อความสามบรรทัด แอปที่กินแรมเป็นกิกะไบต์เพื่อทำงานของโปรแกรมที่เคยกินหนึ่งเมกะ สิ่งเหล่านี้เกิดขึ้นเพราะเครื่องรับไหว และเมื่อเครื่องรับไหว การประหยัดกลายเป็นต้นทุนที่ไม่มีใครจ่าย — เวลาของโปรแกรมเมอร์แพงกว่าแรมเสมอ ตราบใดที่แรมยังพอ
ในสาขา AI เรื่องเดียวกันเกิดขึ้นชัดกว่าที่ไหน
ตั้งแต่ราวปี 2012 ถึงต้นทศวรรษ 2020 คำตอบที่ได้ผลที่สุดกับเกือบทุกโจทย์คือ ทำให้ใหญ่ขึ้น โมเดลใหญ่ขึ้น ข้อมูลเยอะขึ้น เครื่องแรงขึ้น วิธีการเดิมทั้งหมดยังใช้ได้ แค่ขยายขนาด และสิ่งที่วัดได้คือผลดีขึ้นอย่างต่อเนื่องในแบบที่คาดการณ์ได้ ซึ่งเป็นเรื่องผิดคาดสำหรับคนในวงการเอง
ในสภาพแบบนั้น งานที่ใช้สมองไปกับการทำให้ของเล็กลงคืองานที่ให้ผลตอบแทนแย่ที่สุด ใช้เวลาหกเดือนบีบโมเดลให้เร็วขึ้นสองเท่า หรือรอหกเดือนแล้วซื้อการ์ดรุ่นใหม่ที่เร็วขึ้นสองเท่า คำตอบตรงไปตรงมาและไม่มีใครต้องเถียงกัน
RBM หายไปในช่วงนี้ด้วยเหตุผลเดียวกัน มันคือวิธีที่ฉลาดสำหรับโลกที่ยังไม่มีของมากพอ พอของมีมากพอ ความฉลาดของมันเลิกเป็นข้อได้เปรียบ
และนี่คือจุดที่ควรหยุดคิดสักนิด เพราะรูปแบบนี้ไม่ได้เกิดกับซอฟต์แวร์เท่านั้น
ทุกครั้งที่ทรัพยากรมีเหลือเฟือ วิธีที่ประหยัดทรัพยากรนั้นจะถูกทิ้ง และมันถูกทิ้งด้วยเหตุผลที่ถูกต้องในตอนนั้น ไม่ใช่เพราะคนเสื่อมลง ความสง่างามไม่เคยเป็นคุณสมบัติของยุคสมัย มันเป็นผลของกำแพง
แปลว่าคำถามที่ควรถามไม่ใช่ "การประหยัดจะกลับมาไหม"
คำถามที่ควรถามคือ กำแพงถัดไปอยู่ตรงไหน
คำตอบอยู่ในบทที่ 11 และมันมีตัวเลขกำกับ
ลองเอง: เปิดที่เก็บข้อมูลในเครื่องหรือในมือถือแล้วเรียงแอปตามขนาด เลือกตัวที่ใหญ่ที่สุดสักตัว แล้วถามตัวเองว่าสิ่งที่มันทำได้ต่างจากโปรแกรมที่ทำเรื่องเดียวกันเมื่อสิบปีก่อนมากพอ ๆ กับขนาดที่ต่างกันหรือเปล่า ถ้าเป็นเกมหรือแอปรูปภาพ คำตอบมักจะสมเหตุสมผล เพราะของที่โตคือภาพกับเสียง ถ้าเป็นแอปที่แสดงตัวหนังสือเป็นหลัก คำตอบมักจะไม่สมเหตุสมผล และตรงนั้นคือที่ที่กำแพงหายไปจริง ๆ
บทนี้จะผิดเมื่อ: มีการวัดที่แสดงว่าส่วนที่โตขึ้นของขนาดติดตั้งเกมสมัยใหม่เป็นโค้ดปฏิบัติการมากกว่าเป็น asset หรือพบว่าตลับ Super Mario Bros ไม่ได้แบ่ง 32 กิโลไบต์ PRG กับ 8 กิโลไบต์ CHR ตามที่ระบุ
บทถัดไป · 11 / 1410 Deep And Narrow