สงครามศาสนาที่คงอยู่มายาวนานของวงการโปรแกรมเมอร์คือ การย่อหน้าด้วย space vs tab ซึ่งก็คงยังไม่มีข้อยุติในเร็ววัน
เรื่องนี้เป็นประเด็นขึ้นมาอีกครั้ง เมื่อเว็บไซต์ The Register ไปค้นพบว่า Linus Torvalds ไปแก้โค้ดในเคอร์เนลลินุกซ์ ซึ่งในแพตช์นี้มีการแก้ไขเพียงอย่างเดียวคือเปลี่ยนอักขระ space มาเป็น tab
อย่างไรก็ตาม Linus ไม่ได้เลือกข้างในสงครามศาสนานี้แต่อย่างใด เพราะเหตุผลของเขาคือไฟล์ที่เขาแก้ไขคือ Kconfig ซึ่งเป็นไฟล์คอนฟิกค่าต่างๆ ของเคอร์เนล (ลักษณะเดียวกับ YAML ในปัจจุบัน) และมี parser รุ่นเก่าๆ บางตัวที่ยังเขียนมาได้ไม่ดีพอ ทำให้อ่านค่า space/tab ผิดพลาด
จุดที่น่าสนใจคือ สิ่งที่ Linus ทำไม่ได้แก้ให้ไฟล์ Kconfig อ่านค่าได้ง่ายขึ้น แต่เขา "จงใจ" ทำให้ไฟล์ซับซ้อนขึ้นแทน โดยเปลี่ยน space ธรรมดาให้เป็น tab ความกว้าง 8 ตัวอักษร เพื่อบีบให้ parser บางตัวทำงานพลาด คนเขียน parser จะได้กลับมาแก้ไขโค้ด parser ของตัวเอง
Linus ให้คำอธิบายการแก้ไขไว้ดังนี้
Let's make sure it gets fixed. Because if you can't parse tabs as whitespace, you should not be parsing the kernel Kconfig files.
ที่มา - The Register , ภาพจาก Reddit r/programming
Comments
ผมสาย tab
ผมไม่ได้มีปัญหากับ spaceและผมเห็นด้วยกับภาพท้ายข่าว
ตุบตับตุบตับ
CivilWar2024
dev: เฮ~พวก ไม่เอาน๊า พวกเราเป็นprogrammerเหมือนกัน
reviewer: แล้วคุณเป็น programmer ที่เคาะspace หรือเคาะtabละ?
:)
คนที่ไม่เขียน program คงปวดหัวสิ่งนี้ จะเว้นวรรคใน word processor ใช้ tab..
word processor นี่น่าจะใช้ tab/space กันหนักหน่วงกว่าเขียนโปรแกรมอีกนะ
ฮาตรงไม่ได้แก้ให้ compatible แต่แก้ให้แอพที่เขียนไม่ดีพัง
The Register ก็ไปตัดมานิดเดียว อ่าน คอมเม้นเต็มๆ ของไลนัสเองจะรู้สึก amusement กว่า
เป็นสายใช้อะไรก็ได้ แล้วจบด้วย clang-format
ผมว่าขอแค่แต่ละภาษาหรือ script มี formatter ของตัวเองก็พอ จะเป็นอะไรก็ได้
..: เรื่อยไป
ทีมใส่ Tab...
Coder | Designer | Thinker | Blogger