การถกเถียงเรื่องการเว้นวรรคใน Python กลับมาร้อนแรงอีกครั้ง หลังโครงการไวยากรณ์ทางเลือกถูกจัดเก็บ

BigGo Editorial Team
การถกเถียงเรื่องการเว้นวรรคใน Python กลับมาร้อนแรงอีกครั้ง หลังโครงการไวยากรณ์ทางเลือกถูกจัดเก็บ

การจัดเก็บโครงการทางเลือกสำหรับไวยากรณ์ของ Python เมื่อเร็วๆ นี้ได้จุดประเด็นการถกเถียงที่มีมายาวนานในชุมชนนักพัฒนาเกี่ยวกับข้อกำหนดการเว้นวรรคที่มีนัยสำคัญของ Python โครงการนี้ซึ่งนำเสนอบล็อกแบบ do..end คล้าย Ruby เป็นทางเลือกแทนการบังคับใช้การเว้นวรรคของ Python ได้จุดประเด็นการอภิปรายอย่างเข้มข้นเกี่ยวกับการจัดรูปแบบโค้ดและขั้นตอนการพัฒนา

คุณสมบัติหลักของโครงการ:

  • แปลงบล็อกแบบ do..end จากภาษา ruby/lua ให้เป็นบล็อกที่มีการเยื้อง
  • รักษารูปแบบการทำงานของ Python ไว้
  • เก็บรักษาข้อความตัวอักษรและคำอธิบายโค้ดไว้
  • ประมวลผลไฟล์ .dopy ให้เป็นไฟล์ .py ที่สอดคล้องกับมาตรฐาน PEP8
  • รองรับการระบุประเภทข้อมูล (type hints)
  • ต้องการ Python เวอร์ชัน 3.10 ขึ้นไป

ความแตกต่างในเรื่องการเว้นวรรค

การใช้การเว้นวรรคที่มีนัยสำคัญของ Python ยังคงเป็นหนึ่งในคุณสมบัติที่สร้างความขัดแย้งมากที่สุดของภาษานี้ ในขณะที่นักพัฒนาบางคนชื่นชมว่าช่วยบังคับให้เกิดโครงสร้างโค้ดที่สะอาดและอ่านง่าย คนอื่นๆ โต้แย้งว่ามันสร้างความยุ่งยากที่ไม่จำเป็น โดยเฉพาะอย่างยิ่งในระหว่างการปรับโครงสร้างและจัดการโค้ด การอภิปรายในชุมชนแสดงให้เห็นถึงการเปลี่ยนแปลงมุมมองที่สำคัญ โดยเฉพาะเมื่อเครื่องมือพัฒนาสมัยใหม่มีวิวัฒนาการ

ผมเคยเขียนโค้ดทุกอย่างด้วย Python ในช่วงปลายทศวรรษ 2000 และชอบการเว้นวรรคที่มีความหมาย แต่ทุกวันนี้ผมเขียน Rust ใน vscode และชอบการใช้วงเล็บปีกกา Rustfmt จัดรูปแบบโค้ดให้ผมทุกครั้งอยู่แล้ว ดังนั้นผมจึงไม่ต้องกังวลเรื่องการเว้นวรรค และวงเล็บปีกกาก็ถูกวางในตำแหน่งที่ควรจะเป็น

ผลกระทบของเครื่องมือพัฒนาสมัยใหม่

การเกิดขึ้นของเครื่องมือจัดรูปแบบโค้ดที่ซับซ้อนและ Language Server Protocols (LSPs) ได้เปลี่ยนวิธีที่นักพัฒนาจัดการกับการจัดรูปแบบโค้ด หลายคนโต้แย้งว่าด้วยเครื่องมือเช่น Black สำหรับ Python หรือ Rustfmt สำหรับ Rust ความสำคัญของการเว้นวรรคด้วยตนเองกลายเป็นเรื่องที่สำคัญน้อยลง เครื่องมือจัดรูปแบบอัตโนมัติเหล่านี้รับประกันความสม่ำเสมอโดยไม่คำนึงถึงกฎไวยากรณ์พื้นฐาน แม้ว่าข้อกำหนดการเว้นวรรคของ Python ยังคงต้องการการจัดการอย่างระมัดระวังระหว่างการจัดการโค้ด

ผลกระทบในทางปฏิบัติ

การถกเถียงขยายไปไกลกว่าเรื่องความชอบส่วนตัวสู่ข้อพิจารณาในทางปฏิบัติ นักพัฒนารายงานประสบการณ์ที่แตกต่างกันในงานต่างๆ เช่น การปรับโครงสร้างโค้ด การคัดลอกโค้ดระหว่างระดับการเว้นวรรคที่ต่างกัน และการทำงานกับเครื่องมือเขียนโปรแกรมเชิงอธิบาย แม้ว่าโปรแกรมแก้ไขสมัยใหม่มักจะมีวิธีแก้ปัญหาเหล่านี้ แต่นักพัฒนาบางคนยังคงพบว่าวิธีการของ Python ต้องใช้ความพยายามมากกว่าเมื่อเทียบกับภาษาที่ใช้วงเล็บปีกกา

อนาคตของไวยากรณ์

ในขณะที่สภาพแวดล้อมการพัฒนามีความซับซ้อนมากขึ้น มีการอภิปรายเพิ่มขึ้นว่าไวยากรณ์ภาษาโปรแกรมควรมีความยืดหยุ่นมากขึ้น โดยอนุญาตให้นักพัฒนาเลือกรูปแบบการแสดงผลที่ต้องการในขณะที่ยังคงความหมายพื้นฐานเดียวกัน อย่างไรก็ตาม ปรัชญาการออกแบบของ Python ที่ว่า ควรมีวิธีเดียว -- และควรมีเพียงวิธีเดียวเท่านั้น -- ที่ชัดเจนในการทำสิ่งหนึ่ง บ่งชี้ว่าการเปลี่ยนแปลงที่สำคัญต่อไวยากรณ์หลักของมันไม่น่าจะเกิดขึ้น

การจัดเก็บโครงการไวยากรณ์ทางเลือกนี้ แม้จะน่าสนใจในฐานะความพยายามทดลอง แต่ก็ตอกย้ำว่าวิธีการใช้การเว้นวรรคที่มีนัยสำคัญของ Python ยังคงเป็นลักษณะพื้นฐานของภาษา แม้จะมีการถกเถียงอย่างต่อเนื่องเกี่ยวกับข้อดีของมันในสภาพแวดล้อมการพัฒนาสมัยใหม่

อ้างอิง: Python without strict indentation