Nói một cách đơn giản, lập trình là đưa ra một tập hợp các hướng dẫn cho máy tính để thực hiện. Nếu bạn đã từng nấu ăn bằng một công thức nào đó trước đây, bạn có thể nghĩ mình là máy tính và tác giả của công thức đó là một lập trình viên. Tác giả công thức cung cấp cho bạn một tập hợp các hướng dẫn mà bạn đọc và sau đó làm theo. Các hướng dẫn càng phức tạp, kết quả càng phức tạp!

“Được rồi, giờ thì tôi biết lập trình là gì, nhưng mã hóa là gì? Tôi ở đây để học cách mã hóa. Chúng có giống nhau không?”, bạn sẽ hỏi như vậy.

Mặc dù đôi khi được sử dụng thay thế cho nhau, nhưng lập trình và mã hóa thực sự có định nghĩa khác nhau. 

  • Lập trình  là quá trình tư duy đưa ra các hướng dẫn để đưa ra cho máy móc (như máy tính).
  • Mã hóa  là quá trình chuyển đổi những ý tưởng đó thành ngôn ngữ viết mà máy tính có thể hiểu được.

Trong thế kỷ qua, con người đã cố gắng tìm ra cách tốt nhất để giao tiếp với máy tính thông qua các ngôn ngữ lập trình khác nhau. Lập trình đã phát triển từ các thẻ đục lỗ với các hàng số mà máy đọc được, đến các giao diện kéo và thả giúp tăng tốc độ lập trình, với nhiều phương pháp khác ở giữa.

Cho đến ngày nay, mọi người vẫn đang phát triển các ngôn ngữ lập trình, cố gắng cải thiện hiệu quả lập trình của chúng ta. Những người khác đang xây dựng các ngôn ngữ mới giúp cải thiện khả năng tiếp cận việc học lập trình, như phát triển ngôn ngữ lập trình tiếng Ả Rập hoặc cải thiện khả năng tiếp cận cho người mù và khiếm thị.

Có rất nhiều ngôn ngữ lập trình, mỗi ngôn ngữ có thế mạnh và ứng dụng riêng. Cuối cùng, ngôn ngữ tốt nhất dành cho bạn phụ thuộc vào mục tiêu bạn muốn đạt được.

Khi chúng ta đưa ra hướng dẫn cho máy tính thông qua mã, theo cách riêng của chúng ta, chúng ta đang giao tiếp với máy tính. Nhưng vì máy tính được xây dựng khác với chúng ta, chúng ta phải dịch hướng dẫn của mình theo cách mà máy tính có thể hiểu được.

Máy tính diễn giải các hướng dẫn theo cách rất trực tiếp, vì vậy chúng ta phải rất cụ thể trong cách lập trình chúng. Hãy nghĩ về việc hướng dẫn ai đó đi bộ. Nếu bạn bắt đầu bằng cách nói với họ, “Đặt chân của bạn ở phía trước của bạn”, họ có biết chân là gì không? Hoặc phía trước có nghĩa là gì? (và bây giờ chúng ta hiểu tại sao phải mất nhiều thời gian để phát triển robot hai chân như vậy…). Trong lập trình, điều đó có thể có nghĩa là đảm bảo rằng những điều nhỏ nhặt như dấu câu và chính tả là chính xác. Nhiều người đã rơi nước mắt vì thiếu dấu chấm phẩy ( ;) – một ký hiệu mà nhiều ngôn ngữ lập trình sử dụng để biểu thị kết thúc của một dòng.

Nhưng thay vì nghĩ về mối quan hệ này như mối quan hệ giữa sếp và nhân viên, sẽ hữu ích hơn nếu nghĩ về mối quan hệ của chúng ta với máy tính như một sự hợp tác.

Máy tính chỉ là một công cụ (đặc biệt mạnh mẽ) trong danh sách dài các công cụ mà con người đã sử dụng để mở rộng và tăng cường khả năng của mình.

Như đã đề cập trước đó, máy tính rất giỏi ở một số thứ và cũng không giỏi ở một số thứ khác. Nhưng đây là tin tốt: những thứ máy tính giỏi thì con người lại tệ, và những thứ máy tính tệ thì con người lại giỏi! Hãy xem bảng tiện dụng này:

Các chương trình máy tính tốt nhất là những chương trình cho phép chúng ta tạo ra những thứ mà chúng ta không thể tự làm, nhưng tận dụng khả năng sáng tạo của chúng ta. Chúng ta có thể giỏi vẽ, nhưng máy tính rất tuyệt vời khi thực hiện cùng một nhiệm vụ nhiều lần — và nhanh chóng!