3 Câu hỏi khi tôi bắt đầu học lập trình mà đến gần ra trường tôi mới tự tìm được câu trả lời thỏa đáng

Đó là:

  • Trình biên dịch là gì? Nó là 1 file .exe hay là nằm trong folder nào?
  • Tại sao phải phân biệt biến và hằng? Mình dùng biến thôi cũng làm bài được rồi.
  • Chỉ học kiểu double là đủ, vì double vẫn có thể biểu diễn được số nguyên, đâu cần biết đến int?

Tôi còn nhớ đó là môn Nhập môn lập trình – năm 2009. Trước đó tôi đã được học Pascal ở phổ thông nhưng thực sự tôi không chú tâm vào bài giảng và chỉ biết gõ lại theo bài giải của thầy. Và tôi thắc mắc 3 câu hỏi ấy trước tiết học thứ 2 của nhập môn lập trình. Hôm đó tôi nhận lại lời giải không mấy thuyết phục:

  • Trình biên dịch là Visual C++ 6.0 nằm ở thư mục C:/Program Files/Visual C++/…
  • Dùng biến thôi thì vẫn làm bài được. Nhưng dùng hằng thì nó thể hiện đúng bản chất hơn, dễ hiểu hơn.
  • Dùng double cũng được. Lập trình là có nhiều cách giải 1 bài toán.

Các nội dung khác của môn học làm tôi không còn thời gian để tìm hiểu nữa. Cho đến năm học thứ 3 tôi mới tự trả lời được 3 thắc mắc cơ bản này:

  • 1 ngôn ngữ có thể có nhiều trình biên dịch: https://en.wikipedia.org/wiki/List_of_compilers#C_compilers Trình biên dịch có thể gồm nhiều file và tùy hệ điều hành mà có file chạy dịch (Execution) khác nhau. Visual C++ là môi trường phát triển (IDE) có tích hợp trình biên dịch khi cài đặt. Mình có thể môi trường phát triển và trình biên dịch độc lập.
  • Đúng là dùng biến thôi thì vẫn làm bài được. Nhưng dùng hằng thì nó thể hiện đúng bản chất hơn, dễ hiểu hơn và tận dụng được hỗ trợ của trình biên dịch nữa. Vd: Quên mất PI là hằng số mà thực hiện phép gán thì nếu có khai báo const thì sẽ báo lỗi. Cũng như khi viết If(PI = d) thì trình biên dịch sẽ báo lỗi ngay vì đang nhầm lẫn phép bằng và phép gán. 1 lý do khác là khi đụng tới con trỏ hằng thì sẽ hiểu ngay vấn đề immutable/mutable trong các ngôn ngữ lập trình hiện đại.
  • Double không thay thế cho int được. Ngoài vấn đề về tốc độ thực thi, bộ nhớ, miền trị… Int còn có thể ép kiểu char, enum,… chia nguyên, lấy dư. 

Còn bạn, bạn có thắc mắc từ lúc bắt đầu học lập trình không?

Bình luận về bài viết này