บทความวิจัยที่มีชื่อว่า Build Systems à la Carte ได้จุดประกายการอภิปรายที่น่าสนใจในชุมชนนักพัฒนาเกี่ยวกับธรรมชาติของการศึกษา computer science และความสัมพันธ์กับการพัฒนาซอฟต์แวร์ในทางปฏิบัติ บทความนี้เขียนร่วมกันโดย Simon Peyton Jones (ที่รู้จักจาก Glasgow Haskell Compiler) และนำเสนอกรอบการทำงานที่เป็นระบบเพื่อทำความเข้าใจ build systems ต่างๆ เช่น MAKE, Buck และ Bazel
ผู้เขียนบทความและคุณสมบัติ:
- Andrey Mokhov
- Neil Mitchell (ผู้สร้าง Shake build system )
- Simon Peyton Jones ( ACM Fellow ที่มีชื่อเสียงจาก Glasgow Haskell Compiler )
ความเข้าถึงได้ทำให้เกิดความเห็นที่แตกต่างเกี่ยวกับการเขียนเชิงวิชาการ
การตอบสนองจากชุมชนแบ่งออกเป็นสองฝ่ายอย่างชัดเจนเกี่ยวกับสิ่งที่ทำให้บทความวิชาการอ่านง่าย นักพัฒนาบางคนชื่นชมรูปแบบการเขียนที่เข้าถึงได้ของบทความ โดยสังเกตว่าพวกเขาสามารถอ่านผ่านๆ และเข้าใจแนวคิดได้ง่ายแม้จะไม่มีพื้นฐานทางเทคนิคที่ลึกซึ้ง ในขณะที่คนอื่นๆ โต้แย้งว่าความเข้าถึงได้นี้เกิดจากการที่บทความเป็นการทบทวนมากกว่าการวิจัยที่ล้ำสมัย โดยชี้ให้เห็นว่าบทความ computer science ที่ซับซ้อนจริงๆ ยังคงยากเข้าใจเหมือนกับบทความในสาขาอื่นๆ
การอภิปรายเผยให้เห็นความแตกต่างที่น่าสนใจระหว่างพื้นที่ต่างๆ ของ computer science ในขณะที่บทความเรื่อง build systems นี้ใช้ภาษาในชีวิตประจำวันและคำอธิบายที่ชัดเจน บทความ theoretical computer science มักต้องการการดิ้นรนอย่างมากแม้แต่สำหรับนักพัฒนาที่มีประสบการณ์
วิกฤตอัตลักษณ์ระหว่าง Computer Science กับ Software Engineering
การถกเถียงเชิงปรัชญาที่ลึกซึ้งกว่าได้เกิดขึ้นเกี่ยวกับว่าการพัฒนาซอฟต์แวร์สมัยใหม่ควรเรียกว่า computer science หรือสิ่งอื่น สมาชิกชุมชนบางคนมองการปฏิบัติในปัจจุบันส่วนใหญ่เป็นเพียงงานช่างไม้ดิจิทัล ในขณะที่คนอื่นๆ ชอบคำที่ยอมรับมากกว่าคือ software engineering
Computer science เป็นวิทยาศาสตร์เชิงรูปแบบที่มีองค์ประกอบเชิงประจักษ์ เท่าที่ฉันอยากจะคิดว่ามันเป็นสาขาหนึ่งของคณิตศาสตร์
คำถามเรื่องอัตลักษณ์นี้สัมผัสกับแนวทางการศึกษาด้วย นักพัฒนาส่วนใหญ่เรียน computer science ในโรงเรียน แต่หลักสูตรของพวกเขามุ่งเน้นไปที่ทักษะปฏิบัติมากกว่าพื้นฐานทางทฤษฎี ไม่เหมือนสาขาวิศวกรรมแบบดั้งเดิม software engineering ไม่ได้สร้างขึ้นจากหลักการวิศวกรรมทั่วไป แต่เติบโตขึ้นมาโดยตรงจาก computer science และคณิตศาสตร์
ผลกระทบในโลกจริงต่อ Build Tools สมัยใหม่
นอกเหนือจากการอภิปรายเชิงวิชาการแล้ว บทความนี้ยังมีอิทธิพลในทางปฏิบัติต่อ build systems จริง Neil Mitchell หนึ่งในผู้เขียนร่วม ได้สร้าง Shake build system ขึ้นจากการวิจัยนี้ ระบบ Buck และ Buck2 ของ Meta ก็สืบย้อนต้นกำเนิดไปถึงแนวคิดเหล่านี้เช่นกัน โดย Buck2 ได้รับการยกย่องว่าเป็นซอฟต์แวร์ที่ยอดเยี่ยมแต่น่าเสียดายที่ยังคงเป็นเฉพาะกลุ่มเนื่องจากความท้าทายด้าน ecosystem
ชุมชนสังเกตเห็นปัญหาไก่กับไข่กับ build systems ใหม่ๆ เช่น Buck2 แม้จะเหนือกว่าเครื่องมือที่มีอยู่เช่น Bazel ในด้านเทคนิค แต่ก็ยังดิ้นรนเพื่อให้ได้รับการยอมรับโดยไม่มี ecosystem ของเครื่องมือและไลบรารีสนับสนุนที่แข็งแกร่ง
ระบบ Build ที่กล่าวถึงในการอภิปราย:
- MAKE (แบบดั้งเดิม ใช้กันอย่างแพร่หลาย)
- Shake (สร้างโดยผู้ร่วมเขียน Neil Mitchell โดยอิงจากงานวิจัยนี้)
- Buck/Buck2 (ระบบของ Meta ซึ่งเป็นผลพัฒนาต่อจากงานวิจัยนี้)
- Bazel (ระบบของ Google ที่มีระบบนิเวศที่ใหญ่กว่า)
- Blaze (ระบบภายในของ Google ที่เป็นต้นแบบของ Bazel)
สรุป
บทความวิชาการนี้ทำมากกว่าแค่อธิบาย build systems - มันได้จุดประกายการไตร่ตรองที่มีความหมายเกี่ยวกับความสัมพันธ์ระหว่างทฤษฎี computer science และการปฏิบัติในการพัฒนาซอฟต์แวร์ การอภิปรายเน้นย้ำถึงความตึงเครียดที่ดำเนินอยู่ระหว่างความเข้าถึงได้และความเข้มงวดในการเขียนเชิงเทคนิค รวมถึงคำถามเกี่ยวกับวิธีที่เรานิยามและสอนการพัฒนาซอฟต์แวร์ในฐานะสาขาวิชา ไม่ว่าเราจะเรียกมันว่า computer science, software engineering หรืองานช่างไม้ดิจิทัล ชุมชนให้ความสำคัญกับการวิจัยที่เชื่อมช่องว่างระหว่างทฤษฎีและการปฏิบัติในชีวิتประจำวันอย่างชัดเจน
อ้างอิง: Build Systems à la Carte