การตัดสินใจของนักพัฒนาคนหนึ่งที่สร้างบล็อกส่วนตัวโดยใช้ Lua และ CGI-bin scripts แบบเก่า ได้จุดประกายการอภิปรายอย่างหลงใหลในชุมชนโปรแกรมเมอร์เกี่ยวกับการแลกเปลี่ยนระหว่างความเรียบง่ายและแนวทางการพัฒนาเว็บสมัยใหม่ ตัวเลือกนี้แสดงถึงการก้าวถอยหลังอย่างตั้งใจจาก framework ร่วมสมัยเพื่อความสามารถในการบำรุงรักษาระยะยาว
ความน่าดึงดูดของการเลือกเทคโนโลยีที่น่าเบื่อ
การย้ายของนักพัฒนาจากการตั้งค่าที่ซับซ้อนแบบ Racket ไปสู่ Lua สะท้อนความรู้สึกที่เพิ่มขึ้นในหมู่โปรแกรมเมอร์ที่ให้ความสำคัญกับเสถียรภาพมากกว่าคุณสมบัติที่ล้ำสมัย สมาชิกในชุมชนได้สะท้อนประสบการณ์ที่คล้ายกัน โดยหลายคนแบ่งปันเรื่องราวการบำรุงรักษาระบบบล็อกของตนเองตลอดหลายทศวรรษ การอภิปรายเผยให้เห็นความหงุดหงิดที่พบบ่อย: ระบบนิเวศ JavaScript สมัยใหม่เคลื่อนไหวอย่างรวดเร็วจนโค้ดที่เขียนเมื่อไม่กี่ปีที่ผ่านมามักจะกลายเป็นสิ่งที่ยากต่อการบำรุงรักษาหรือเสียหายสิ้นเชิง
วงจรการพัฒนาที่ช้ามากของ Lua - จากเวอร์ชัน 5.1 ในปี 2006 ถึง 5.4 ในปี 2020 - ดึงดูดนักพัฒนาที่แสวงหาความสามารถในการคาดการณ์ได้ ภาษานี้ต้องการเพียง C89 compiler และรักษาความเข้ากันได้แบบย้อนหลังที่น่าทึ่ง ทำให้เป็นตัวเลือกที่น่าดึงดูดสำหรับโครงการระยะยาว
ไทม์ไลน์เวอร์ชันของ Lua :
- Lua 5.1: เปิดตัวในปี 2006
- Lua 5.4: เปิดตัวในปี 2020 (เวอร์ชันปัจจุบัน)
- ช่วงห่างระหว่างเวอร์ชันหลักถึง 14 ปี แสดงให้เห็นถึงความเสถียรของภาษา
ข้อกังวลด้านความปลอดภัยเทียบกับประโยชน์ของความเรียบง่าย
การตัดสินใจใช้ CGI libraries แบบกำหนดเองได้จุดประกายการถกเถียงอย่างร้อนแรงเกี่ยวกับผลกระทบด้านความปลอดภัย นักวิจารณ์โต้แย้งว่าการสร้างคอมโพเนนต์เว็บของตัวเองสร้างความเสี่ยงที่ไม่จำเป็น เนื่องจาก framework ที่จัดตั้งขึ้นแล้วให้การป้องกันในตัวต่อช่องโหว่ทั่วไปเช่น SQL injection และ cross-site request forgery อย่างไรก็ตาม ผู้สนับสนุนโต้แย้งว่าโค้ดที่เรียบง่ายและเข้าใจได้ดีสามารถปลอดภัยกว่า framework stacks ที่ซับซ้อน
หากคุณสร้าง cgi-bin perl script เล็กๆ ของตัวเองที่อยู่เบื้องหลัง Apache คุณจะอยู่ห่างไกลจากความเสี่ยงเมื่อเปรียบเทียบกับเว็บไซต์ WordPress เป็นต้น
การอภิปรายเน้นย้ำถึงความตึงเครียดที่ดำเนินต่อไประหว่างความปลอดภัยผ่านความคลุมเครือของระบบเรียบง่ายเทียบกับการป้องกันที่ผ่านการทดสอบในสนามรบของ framework ยอดนิยม
แนวทางทางเลือกและข้อเสนะแนะเครื่องมือ
สมาชิกในชุมชนได้เสนอทางเลือกต่างๆ ที่สร้างสมดุลระหว่างความเรียบง่ายกับความเป็นจริง นักพัฒนาบางคนสนับสนุน static site generators ขั้นต่ำที่ใช้โค้ด Python หรือ Lua เพียง 50-100 บรรทัด คนอื่นๆ แนะนำเครื่องมือเช่น Hugo หรือ Zola สำหรับผู้ที่ต้องการการสนับสนุนจากชุมชนโดยไม่มีความซับซ้อนเกินไป
น่าสนใจที่ผู้แสดงความคิดเห็นหลายคนกล่าวถึง redbean ซึ่งเป็น web server ไฟล์เดียวที่อาจให้ประโยชน์คล้ายกับแนวทาง Lua ในขณะที่ให้ฟังก์ชันในตัวมากขึ้น การอภิปรายยังสัมผัสถึงภาษาที่คอมไพล์เป็น Lua เช่น Fennel และ MoonScript ซึ่งสามารถให้ syntax ที่ดีขึ้นในขณะที่รักษาประโยชน์ด้านเสถียรภาพของ Lua
เครื่องมือทางเลือกที่ชุมชนแนะนำ:
- Static Generators: Hugo , Zola , Jekyll
- โซลูชันแบบมินิมอล: สคริปต์ Python/Lua ขนาด 50-100 บรรทัด
- เซิร์ฟเวอร์ไฟล์เดียว: redbean
- ทางเลือกของ Lua : Fennel , MoonScript , YueScript
ปรัชญาที่กว้างขึ้นของโครงการส่วนตัว
การสนทนาเผยให้เห็นความแตกแยกพื้นฐานในวิธีที่นักพัฒนาเข้าหาโครงการส่วนตัว ในขณะที่บางคนให้ความสำคัญกับประสิทธิภาพและแนวทางปฏิบัติที่ดีที่สุด คนอื่นๆ มองบล็อกของตนเป็นสนามเด็กเล่นทดลองที่การเรียนรู้และความสนุกสนานมีความสำคัญเหนือการเพิ่มประสิทธิภาพ ปรัชญานี้ขยายไปเกินกว่าแค่การเขียนบล็อกเพื่อครอบคลุมคำถามที่กว้างขึ้นเกี่ยวกับเมื่อไหร่ที่เหมาะสมที่จะเลือกเครื่องมือที่ไม่เป็นไปตามแบบแผน
การถกเถียงในท้ายที่สุดสะท้อนค่านิยมที่แตกต่างกัน: นักพัฒนาบางคนต้องการให้เว็บไซต์ส่วนตัวของตนจัดการกับการเพิ่มขึ้นของ traffic อย่างมหาศาลได้อย่างมีประสิทธิภาพ ในขณะที่คนอื่นๆ พอใจกับระบบที่อาจเสียหายภายใต้โหลดหนัก แต่ให้ความเข้าใจและการควบคุมที่ลึกซึ้งกว่า ทั้งสองแนวทางมีข้อดี และตัวเลือกมักขึ้นอยู่กับเป้าหมายส่วนบุคคลและการยอมรับความเสี่ยง
อ้างอิง: Why I chose Lua for this blog