การพัฒนาเว็บเซิร์ฟเวอร์ใหม่ที่เขียนด้วย COBOL ทั้งหมดได้ดึงดูดความสนใจจากนักพัฒนา จุดประกายการถกเถียงเกี่ยวกับความปลอดภัยของหน่วยความจำ ความแท้จริงของภาษาโปรแกรมมิ่ง และการประยุกต์ใช้ภาษาเก่าในระบบสมัยใหม่ โปรเจกต์นี้ชื่อ Webbol แสดงให้เห็นว่า COBOL สามารถจัดการงานเครือข่ายร่วมสมัยได้ แต่ก็ได้ยกประเด็นคำถามสำคัญเกี่ยวกับความปลอดภัยและแนวปฏิบัติในการพัฒนา
ข้อจำกัดของเซิร์ฟเวอร์ Webbol :
- การทำงานแบบเธรดเดียว (ประมวลผลคำขอทีละรายการ)
- ไม่รองรับ SSL/TLS
- ขนาดไฟล์สูงสุด: 64KB
- รองรับเฉพาะการจัดระเบียบไฟล์แบบลำดับเชิงเส้น
- ไม่มีระบบแคชหรือการบีบอัดข้อมูล
- ไม่รองรับ range requests หรือการส่งเนื้อหาบางส่วน
ข้อกังวลด้านความปลอดภัยของหน่วยความจำปรากฏในการใช้งาน COBOL
ชุมชนได้ระบุช่องโหว่ด้านความปลอดภัยที่อาจเกิดขึ้นในการพัฒนาเว็บเซิร์ฟเวอร์ COBOL อย่างรวดเร็ว นักพัฒนาสังเกตว่า COBOL แม้จะมีชื่อเสียงในด้านความเสถียร แต่ก็ไม่ได้มีความปลอดภัยของหน่วยความจำโดยธรรมชาติเหมือนภาษาสมัยใหม่อย่าง Rust ภาษานี้อนุญาตให้มีการปรับเปลี่ยนการอ้างอิงที่สามารถเข้าถึงหน่วยความจำนอกขอบเขตของโครงสร้างข้อมูลเดิม ซึ่งสร้างความเสี่ยงด้านความปลอดภัยที่อาจเกิดขึ้น
ข้อกังวลเฉพาะอย่างหนึ่งที่เกิดขึ้นเกี่ยวกับความเป็นไปได้ของ buffer overflow ใน HTTP handler ที่การขาดช่องว่างระหว่าง method และ path อาจทำให้เกิดการล้นของ memory buffer ที่จัดสรรไว้ แม้ว่าคอมไพเลอร์ COBOL สมัยใหม่จะตรวจจับการละเมิดขอบเขตหลายอย่างระหว่างการคอมไพล์หรือรันไทม์ แต่ความยืดหยุ่นของภาษาในการเข้าถึงหน่วยความจำหมายความว่านักพัฒนาต้องระมัดระวังเกี่ยวกับแนวปฏิบัติด้านความปลอดภัย
Reference modification: ฟีเจอร์ของ COBOL ที่อนุญาตให้โปรแกรมเข้าถึงส่วนเฉพาะของฟิลด์ข้อมูล คล้ายกับการดำเนินการ substring ในภาษาอื่น
แนวปฏิบัติการโปรแกรมมิ่ง COBOL แท้จริงแบ่งความคิดเห็น
การถกเถียงที่น่าสนใจเกิดขึ้นรอบการใช้ fixed-format mode ของ COBOL ในโปรเจกต์ ซึ่งเลียนแบบสไตล์การโปรแกรมยุค punch card เดิม รูปแบบนี้ต้องการการจัดตำแหน่งคอลัมน์เฉพาะสำหรับองค์ประกอบโค้ดต่าง ๆ โดยใช้คอลัมน์ 1-6 สำหรับหมายเลขบรรทัด คอลัมน์ 7 สำหรับตัวบ่งชี้ และคอลัมน์ 12-72 สำหรับคำสั่งโปรแกรมจริง
หากคุณจะเขียน COBOL ในปี 2025 คุณก็ควรพยายามให้ได้ประสบการณ์ที่แท้จริงที่สุด!
อย่างไรก็ตาม นักพัฒนาบางคนสังเกตเห็นความไม่สอดคล้องกันที่ Makefile ของโปรเจกต์ใช้แฟล็ก -free
สำหรับการคอมไพล์ ซึ่งแสดงถึงแนวทางผสมผสานต่อแบบแผนการจัดรูปแบบของ COBOL สิ่งนี้เน้นความตึงเครียดที่ดำเนินต่อไประหว่างการรักษาแนวปฏิบัติการโปรแกรมในอดีตและการปรับตัวเข้ากับขั้นตอนการพัฒนาสมัยใหม่
Fixed-format mode: สไตล์การโปรแกรม COBOL เดิมที่อิงตามข้อจำกัดของ punch card ต้องการการจัดตำแหน่งคอลัมน์เฉพาะสำหรับองค์ประกอบโค้ดต่าง ๆ
โครงสร้างคอลัมน์แบบ Fixed-Format ของ COBOL :
- คอลัมน์ 1-6: หมายเลขบรรทัด
- คอลัมน์ 7: ตัวอักษรบ่งชี้ (* สำหรับคอมเมนต์)
- คอลัมน์ 8-11: เครื่องหมายแบ่งส่วนพิเศษ
- คอลัมน์ 12-72: คำสั่ง COBOL
- คอลัมน์ 73-80: คอมเมนต์/หมายเหตุของโปรแกรมเมอร์
การโปรแกรมตรรกะทางธุรกิจได้รับการตีความอย่างตรงไปตรงมา
การถกเถียงเปลี่ยนไปในทิศทางที่ขบขันเมื่อนักพัฒนาชี้ให้เห็นถึงความขัดแย้งของวัตถุประสงค์เดิมของ COBOL สมาชิกชุมชนคนหนึ่งสังเกตว่า ผู้คนมักจะบอกให้เลือกเครื่องมือที่ดีที่สุดสำหรับงาน แต่แล้วกลับปฏิเสธที่จะใช้ COBOL สำหรับปัญหา Common Business Oriented Language ซึ่งเป็นวัตถุประสงค์ที่แท้จริงที่ COBOL ถูกออกแบบมา
การสังเกตนี้จุดประกายการไตร่ตรองเกี่ยวกับวิธีที่การเลือกภาษาโปรแกรมมิ่งมักเกี่ยวข้องกับปัจจัยทางวัฒนธรรมและการรับรู้นอกเหนือจากคุณค่าทางเทคนิคล้วน ๆ การใส่คอมเมนต์อย่างครอบคลุมตลอดโค้ดเว็บเซิร์ฟเวอร์ COBOL ยังท้าทายสมมติฐานเกี่ยวกับโค้ดที่อธิบายตัวเอง โดยเฉพาะเมื่อผู้อ่านที่ตั้งใจไว้อาจไม่คุ้นเคยกับภาษาโปรแกรมมิ่ง
โปรเจกต์ Webbol ทำหน้าที่เป็นทั้งการสาธิตทางเทคนิคและจุดเริ่มต้นการสนทนาเกี่ยวกับบทบาทของภาษาเก่าในการคอมพิวเตอร์สมัยใหม่ แม้ว่าอาจจะยังไม่พร้อมสำหรับการใช้งานจริงเนื่องจากข้อจำกัดเช่น single-threading และขีดจำกัดขนาดไฟล์ 64KB แต่ก็แสดงให้เห็นสำเร็จว่าแม้แต่ภาษาโปรแกรมมิ่งที่มีอายุหลายทศวรรษก็สามารถปรับตัวเข้ากับความท้าทายการคอมพิวเตอร์ร่วมสมัยได้เมื่อใช้อย่างสร้างสรรค์
อ้างอิง: Webbol