Một triển khai web server mới được viết hoàn toàn bằng COBOL đã thu hút sự chú ý của các nhà phát triển, khơi mào các cuộc thảo luận về an toàn bộ nhớ, tính xác thực của ngôn ngữ lập trình, và các ứng dụng thực tế của các ngôn ngữ kế thừa trong hệ thống hiện đại. Dự án này, có tên Webbol , chứng minh rằng COBOL có thể xử lý các tác vụ mạng đương đại, nhưng cũng đặt ra những câu hỏi quan trọng về bảo mật và thực hành phát triển.
Giới hạn của Webbol Server:
- Hoạt động đơn luồng (xử lý từng yêu cầu một)
- Không hỗ trợ SSL/TLS
- Kích thước file tối đa: 64KB
- Chỉ hỗ trợ tổ chức file tuần tự theo dòng
- Không có bộ nhớ đệm hoặc nén dữ liệu
- Không hỗ trợ yêu cầu phạm vi hoặc nội dung từng phần
Mối Quan Ngại Về An Toàn Bộ Nhớ Xuất Hiện Trong Triển Khai COBOL
Cộng đồng nhanh chóng xác định các lỗ hổng bảo mật tiềm ẩn trong triển khai web server COBOL . Các nhà phát triển lưu ý rằng COBOL , mặc dù có danh tiếng về tính ổn định, nhưng không có tính an toàn bộ nhớ vốn có như các ngôn ngữ hiện đại như Rust . Ngôn ngữ này cho phép sửa đổi tham chiếu có thể truy cập bộ nhớ ngoài giới hạn của cấu trúc dữ liệu gốc, tạo ra các rủi ro bảo mật tiềm ẩn.
Một mối quan ngại cụ thể xuất hiện liên quan đến khả năng tràn bộ đệm trong bộ xử lý HTTP , nơi thiếu khoảng trắng giữa phương thức và đường dẫn có thể gây tràn bộ đệm bộ nhớ được phân bổ. Trong khi các trình biên dịch COBOL hiện đại phát hiện nhiều vi phạm ranh giới trong quá trình biên dịch hoặc thời gian chạy, tính linh hoạt của ngôn ngữ trong việc truy cập bộ nhớ có nghĩa là các nhà phát triển phải luôn cảnh giác về các thực hành bảo mật.
Sửa đổi tham chiếu: Một tính năng của COBOL cho phép các chương trình truy cập các phần cụ thể của các trường dữ liệu, tương tự như các thao tác chuỗi con trong các ngôn ngữ khác.
Thực Hành Lập Trình COBOL Xác Thực Chia Rẽ Ý Kiến
Một cuộc tranh luận thú vị xuất hiện xung quanh việc dự án sử dụng chế độ định dạng cố định của COBOL , bắt chước phong cách lập trình thời kỳ thẻ đục lỗ nguyên bản. Định dạng này yêu cầu vị trí cột cụ thể cho các phần tử mã khác nhau, với cột 1-6 cho số dòng, cột 7 cho chỉ báo, và cột 12-72 cho các câu lệnh chương trình thực tế.
Nếu bạn định viết COBOL vào năm 2025, thì cũng nên cố gắng có được trải nghiệm xác thực nhất!
Tuy nhiên, một số nhà phát triển lưu ý sự không nhất quán khi Makefile của dự án sử dụng cờ -free
để biên dịch, gợi ý một cách tiếp cận hỗn hợp đối với các quy ước định dạng của COBOL . Điều này làm nổi bật sự căng thẳng đang diễn ra giữa việc duy trì các thực hành lập trình lịch sử và thích ứng với quy trình phát triển hiện đại.
Chế độ định dạng cố định: Phong cách lập trình COBOL nguyên bản dựa trên các ràng buộc của thẻ đục lỗ, yêu cầu vị trí cột cụ thể cho các phần tử mã khác nhau.
Cấu trúc cột định dạng cố định của COBOL:
- Cột 1-6: Số thứ tự dòng
- Cột 7: Ký tự chỉ thị (* cho chú thích)
- Cột 8-11: Các dấu hiệu phân chia đặc biệt
- Cột 12-72: Các câu lệnh COBOL
- Cột 73-80: Chú thích/ghi chú của lập trình viên
Lập Trình Logic Kinh Doanh Nhận Được Diễn Giải Theo Nghĩa Đen
Cuộc thảo luận có một bước ngoặt hài hước khi các nhà phát triển chỉ ra sự mỉa mai về mục đích ban đầu của COBOL . Như một thành viên cộng đồng lưu ý, mọi người thường nói hãy chọn công cụ tốt nhất cho công việc nhưng sau đó lại từ chối sử dụng COBOL cho các vấn đề Common Business Oriented Language - chính xác là mục đích mà COBOL được thiết kế.
Quan sát này khơi mào sự suy ngẫm về cách lựa chọn ngôn ngữ lập trình thường liên quan đến các yếu tố văn hóa và nhận thức ngoài giá trị kỹ thuật thuần túy. Việc chú thích rộng rãi trong toàn bộ mã web server COBOL cũng thách thức các giả định về mã tự tài liệu, đặc biệt khi đối tượng mục tiêu có thể không quen thuộc với ngôn ngữ lập trình.
Dự án Webbol đóng vai trò như một minh chứng kỹ thuật và là chất xúc tác cho cuộc trò chuyện về vai trò của các ngôn ngữ kế thừa trong máy tính hiện đại. Mặc dù có thể chưa sẵn sàng cho sản xuất do các hạn chế như đơn luồng và giới hạn kích thước tệp 64KB , nó đã thành công chứng minh rằng ngay cả các ngôn ngữ lập trình hàng thập kỷ tuổi cũng có thể thích ứng với các thách thức máy tính đương đại khi được sử dụng một cách sáng tạo.
Tham khảo: Webbol