Là một kỹ sư phần mềm, bạn đã bao giờ thấy ai đó biên dịch và chạy code trong đầu, sau đó phát hiện ra và gỡ lỗi mà không cần biên dịch hay chạy lại code không?

A: Bruce F. Webster, giáo sư, kỹ sư phần mềm tại Đại học Brigham Young

—-

Đây chính là cách mà thế hệ lập trình viên bọn tôi học lập trình. 

Ngôn ngữ đầu tiên mà tôi được học (Khóa học CS 132 của Đại học Brigham Young, năm 1974) là 360 Assembly. Tôi đã phải viết chương trình ra giấy, chạy nó trong đầu, nháp lại quá trình của các thanh ghi, bộ nhớ ra một tờ giấy khác.

Chỉ khi nào tôi chắn chắn với đoạn code của mình, tôi mới đi sử dụng cái máy đục lỗ (nguyên văn: key punch machine) để tạo ra một tập computer cards (ND: là những tờ giấy được đục lỗ, sau đó đưa vào máy tính thời đó để chạy chương trình).

Sau đó tôi điền vào một tờ phiếu, buộc tập computer cards bằng một cái dây nịt, đem nó đến phòng vận hành IBM 360/65.

2-5 giờ sau, tôi nhìn lại tờ giấy in ra kết quả chạy chương trình. Nếu có bất kỳ lỗi cú pháp hay logic nào, thì tôi sẽ phải ngồi lại và nghiền ngẫm lại cái tờ giấy nháp ban nãy, xem sai ở đâu, sau đó bấm lỗ lại những chỗ sai, sắp xếp lại tập cards, chạy nó lại và ngồi đợi thêm 2-5 giờ tiếp theo xem lần này chạy có đúng không.

Đúng như bạn nói, chúng tôi đã phải “biên dịch và chạy code trong đầu”, bởi thời gian mỗi lần chạy như thế rất lâu và không thể cứ chạy rồi lại kiểm tra nhiều lần được. Nếu không có kỹ năng này, có lẽ chúng tôi bị sa thải hết lượt rồi.

11 năm sau đó, tôi được bố trí giảng dạy cũng cái khóa học CS 132 (giờ gọi là CS 142) ở Đại học Brigham Young. Sinh viên lúc này đã dùng Turbo Pascal, một ngôn ngữ tuyệt vời hơn, cũng như cho phép lập trình nhanh chóng hơn rất nhiều. Tuy nhiên, khi đó tôi bắt đầu lo lắng rằng, sinh viên sẽ ý lại trình biên dịch làm tất cả công việc thay cho họ. Họ sẽ viết một đám code gì đó, đưa cho máy chạy rồi đợi xem nó báo lỗi ở đâu, thay vì nghĩ thật kỹ về thiết kế, logic cho code. Nhưng, có lẽ cách lập trình kiểu đó đã qua lâu rồi, không còn phù hợp nữa.

Theo: Bùi Thanh Lâm

Leave a Reply

Your email address will not be published. Required fields are marked *