10 · โค้ดเบสที่ merge ไม่จบ
ทุกอย่างในเล่มนี้จนถึงบทก่อนเป็นเรื่องของเซลล์ประสาท ซึ่งทำให้เกิดคำถามที่ควรถามกับข้ออ้างทุกข้อที่ดูกว้าง คือมันเป็นคุณสมบัติของระบบประสาท หรือเป็นคุณสมบัติของสิ่งที่ต้องควบคุมอะไรภายใต้ความหน่วง
วิธีทดสอบคือไปดูที่ที่ไม่มีเซลล์ประสาทเลย
ในเซลล์ทุกเซลล์ของคุณมีไมโทคอนเดรีย และไมโทคอนเดรียเคยเป็นแบคทีเรียที่อยู่ได้ด้วยตัวเอง เมื่อราวหนึ่งพันห้าร้อยถึงสองพันล้านปีก่อน มันเข้าไปอยู่ในเซลล์อื่นแล้วไม่ได้ออกมาอีก ข้อนี้ไม่ใช่การเปรียบเทียบ มันมีหลักฐานของตัวเอง คือไมโทคอนเดรียยังมี DNA เป็นวงของตัวเอง มีระบบสร้างโปรตีนของตัวเอง และมีเยื่อสองชั้นแบบที่เข้ากับการถูกกลืนเข้าไป กรอบอธิบายนี้ถูกผลักดันโดย Lynn Margulis ในงานปี 1967 และปัจจุบันเป็นคำอธิบายมาตรฐาน
DNA ของไมโทคอนเดรียในมนุษย์มีขนาด 16,569 คู่เบส และมียีนอยู่ 37 ตัว ในจำนวนนั้น 13 ตัวถอดรหัสเป็นโปรตีน ที่เหลือเป็น tRNA 22 ตัวและ rRNA 2 ตัว
ตัวเลขที่ต้องวางคู่กันเพื่อให้เห็นเรื่องคือจำนวนโปรตีนทั้งหมดที่ไมโทคอนเดรียใช้ทำงาน ซึ่งอยู่ในระดับหนึ่งพันตัวขึ้นไป โปรตีนเกือบทั้งหมดนั้นถูกเข้ารหัสไว้ในนิวเคลียส สร้างข้างนอก แล้วขนส่งเข้าไป
แปลว่ายีนกว่าเก้าสิบแปดเปอร์เซ็นต์ย้ายบ้านไปแล้ว เหลือสิบสามตัวที่ไม่ย้าย และเวลาที่ผ่านไปคือหนึ่งพันห้าร้อยล้านปี
คำถามคือทำไมสิบสามตัวนั้นไม่ย้าย
คำอธิบายที่ได้รับน้ำหนักมากที่สุดตอนนี้มีชื่อย่อว่า CoRR ย่อมาจาก co-location for redox regulation ผลักดันโดย John Allen ใจความคือโปรตีนสิบสามตัวนั้นเป็นชิ้นส่วนแกนกลางของโซ่ส่งอิเล็กตรอน ซึ่งเป็นที่ที่พลังงานถูกผลิต และอัตราการสร้างชิ้นส่วนเหล่านั้นต้องปรับตามสภาพทางเคมีที่จุดนั้นเดี๋ยวนั้น การส่งข่าวออกไปถึงนิวเคลียสแล้วรอโปรตีนขนกลับมา ช้าเกินไปสำหรับการควบคุมชนิดนี้
ข้อนี้เป็นสมมติฐานนำ ไม่ใช่ข้อสรุป และมีคำอธิบายอื่นที่แข่งอยู่ ข้อที่แข็งที่สุดในกลุ่มนั้นคือคุณสมบัติทางเคมีของโปรตีนสิบสามตัวนี้เอง มันไม่ชอบน้ำมาก ซึ่งทำให้การขนส่งข้ามเยื่อเข้าไปทำได้ยาก ถ้าข้อนี้จริง สิบสามตัวนั้นไม่ได้อยู่เพราะมีประโยชน์ที่จะอยู่ มันอยู่เพราะย้ายไม่ได้ ทั้งสองคำอธิบายอาจถูกทั้งคู่ในสัดส่วนที่ยังไม่มีใครแยกออก
ถ้า CoRR ถูก สถาปัตยกรรมในเล่มนี้ก็เก่ากว่าเซลล์ประสาทราวหนึ่งพันล้านปี และมันเป็นสถาปัตยกรรมเดียวกันคำต่อคำ คือ เก็บผู้ควบคุมไว้ที่หน้างาน เพราะทางไปหาส่วนกลางช้าเกิน
รีเฟล็กซ์ไขสันหลังในบทแรก เขียนไว้ด้วยภาษาของเคมี ก่อนที่จะมีกระดูกสันหลังให้เขียนถึง
สิบสามยีนนั้นยังเป็นข้อสอบที่ดีสำหรับประโยคที่ว่าชีวิตเขียนโค้ดมาดี
ถ้าโค้ดชุดนี้ดี มันควรย้ายให้จบ หนึ่งจีโนม หนึ่งที่เก็บ หนึ่งระบบสำเนา หนึ่งพันห้าร้อยล้านปีนานพอสำหรับงานที่เหลืออีกสิบสามชิ้นอย่างเหลือเฟือ แต่มันไม่จบ และค่าของการไม่จบยังถูกจ่ายอยู่ทุกวัน ไมโทคอนเดรียต้องมีระบบสำเนา DNA ระบบซ่อม DNA และระบบแปลรหัสของตัวเองแยกอีกชุดทั้งชุด เพื่อยีนสิบสามตัว โรคทางไมโทคอนเดรียทั้งกลุ่มเกิดจากรอยต่อที่ไม่เคยเรียบ และการที่ไมโทคอนเดรียถ่ายทอดทางแม่ข้างเดียว เป็นกฎที่ออกมาเพื่อกันไม่ให้จีโนมสองชุดขัดกัน ไม่ใช่การออกแบบที่สะอาด แต่เป็นข้อบังคับที่ตั้งขึ้นเพื่อกลบปัญหาที่แก้ไม่ได้
นี่ไม่ใช่โค้ดที่ดี มันคือการรวมโค้ดเบสสองชุดเข้าด้วยกันแล้วไม่เคย refactor ให้จบ
โค้ดที่ดีคือโค้ดที่คนเขียนพอใจ ส่วนโค้ดที่ยังไม่ตายคือโค้ดที่ผ่านการทดสอบทุกวันเป็นเวลาหนึ่งพันห้าร้อยล้านปีโดยไม่มีใครมาแก้ให้ สองอย่างนี้ไม่เหมือนกัน และอย่างที่สองตรวจได้ ส่วนอย่างแรกเป็นเรื่องของรสนิยม
ชีวิตไม่ได้เขียนโค้ดสวย ชีวิตเขียนโค้ดที่ยังไม่ตาย
บทถัดไป · 12 / 1211 · ราคาของสถาปัตยกรรมนี้