การเปิดตัวไลบรารี 'script' สำหรับภาษา Go เมื่อเร็วๆ นี้ได้จุดประเด็นการถกเถียงอย่างเข้มข้นเกี่ยวกับอนาคตของเครื่องมือบริหารระบบและการเขียนเชลล์สคริปต์ ไลบรารี Go นี้มีจุดมุ่งหมายเพื่อทำให้การทำงานของเชลล์สคริปต์ง่ายขึ้น แต่การเปิดตัวครั้งนี้ได้เผยให้เห็นความขัดแย้งที่ลึกซึ้งระหว่างการเขียนเชลล์สคริปต์แบบดั้งเดิมกับแนวทางการเขียนโปรแกรมสมัยใหม่
ความท้าทายของการเขียนเชลล์สคริปต์
การตอบสนองของชุมชนชี้ให้เห็นถึงความแตกต่างพื้นฐานในแนวทางการบริหารระบบ การเขียนเชลล์สคริปต์แบบดั้งเดิมนั้นมีความยืดหยุ่นและใช้งานได้ทันที ในขณะที่ภาษาโปรแกรมสมัยใหม่สัญญาว่าจะมีการบำรุงรักษาและจัดการข้อผิดพลาดที่ดีกว่า นักพัฒนาหลายคนเห็นว่าจุดแข็งของการเขียนเชลล์สคริปต์อยู่ที่ความสามารถในการประสานการทำงานของเครื่องมือที่มีอยู่ได้อย่างรวดเร็ว แทนที่จะสร้างขึ้นใหม่ทั้งหมด
โปรแกรมเมอร์จะแก้ปัญหาด้วยการใช้เวลา 6 สัปดาห์เพื่อออกแบบโปรแกรมที่สมบูรณ์แบบ แต่ผู้ดูแลระบบจะใช้เวลาแค่ 5 นาทีด้วยภาษาและเครื่องมือที่ไม่สมบูรณ์แบบ แต่ทำงานได้มากกว่าในเวลาที่น้อยกว่า
ข้อแลกเปลี่ยนด้านความยืดยาวของโค้ด
ประสบการณ์จริงที่นักพัฒนาแบ่งปันแสดงให้เห็นตัวเลขที่น่าสนใจเกี่ยวกับการเปลี่ยนจากเชลล์สคริปต์ไปเป็น Go นักพัฒนาคนหนึ่งรายงานว่าการเขียนเชลล์สคริปต์ขนาด 500 บรรทัดใหม่ด้วย Go ส่งผลให้มีโค้ดประมาณ 5,000 บรรทัด แม้ว่าเวอร์ชัน Go จะมีประสบการณ์ผู้ใช้ การจัดการข้อผิดพลาด และการบำรุงรักษาที่ดีกว่า แต่ความยืดยาวที่เพิ่มขึ้นทำให้เกิดคำถามว่าเมื่อไหร่ที่การเปลี่ยนแปลงเช่นนี้จะคุ้มค่า
จุดกึ่งกลาง
การอภิปรายเผยให้เห็นความเห็นร่วมกันว่าอาจมีจุดที่เหมาะสมสำหรับเครื่องมือที่แตกต่างกัน งานง่ายๆ และรวดเร็วยังคงเป็นพื้นที่ของเชลล์สคริปต์ ในขณะที่การทำงานที่ซับซ้อนกว่าซึ่งต้องการการจัดการข้อผิดพลาดที่แข็งแกร่งและการบำรุงรักษาอาจได้ประโยชน์จากแนวทางที่มีโครงสร้างของ Go นักพัฒนาบางคนแนะนำว่า Perl หรือ Python อาจเป็นทางเลือกที่ดีกว่าสำหรับสคริปต์ที่เติบโตเกินกว่าเชลล์ แต่ยังไม่จำเป็นต้องใช้ Go เต็มรูปแบบ
คำสั่งเทียบเท่าระหว่าง Unix/Shell กับไลบรารีสคริปต์:
- cat → File / Concat (การอ่านและรวมไฟล์)
- grep → Match / MatchRegexp (การค้นหาข้อความที่ตรงกับรูปแบบ)
- find → FindFiles (การค้นหาไฟล์)
- sed → Replace / ReplaceRegexp (การแทนที่ข้อความ)
- wc -l → CountLines (การนับจำนวนบรรทัด)
การพิจารณาด้านข้ามแพลตฟอร์ม
ข้อได้เปรียบที่มักถูกมองข้ามของ Go ในบริบทนี้คือความสามารถในการสร้างไบนารีแบบ static-linked ซึ่งทำให้การกระจายระหว่างแพลตฟอร์มต่างๆ ทำได้ง่าย อย่างไรก็ตาม ประโยชน์นี้มาพร้อมกับข้อโต้แย้ง เนื่องจากนักพัฒนาบางคนเถียงว่าเชลล์สคริปต์ที่เข้ากันได้กับ POSIX ก็ให้ฟังก์ชันการทำงานข้ามแพลตฟอร์มที่เพียงพอแล้วโดยไม่ต้องมีความซับซ้อนของไบนารีที่คอมไพล์
การถกเถียงนี้สะท้อนให้เห็นการอภิปรายที่กว้างขึ้นเกี่ยวกับวิวัฒนาการของเครื่องมือบริหารระบบและความสมดุลระหว่างผลิตภาพในทันทีกับการบำรุงรักษาในระยะยาวในสภาพแวดล้อมการพัฒนาสมัยใหม่
อ้างอิง: What is script?