Tư duy lập trình Tổng quan về lập trình
Ngôn ngữ tự nhiên và ngôn ngữ lập trình
Ngôn ngữ là phương tiện (và cũng là công cụ) để diễn đạt và ghi lại tư tưởng. Có rất nhiều loại ngôn ngữ xung quanh chúng ta. Một số ngôn ngữ không yêu cầu phải nói hay viết, ví dụ như ngôn ngữ cơ thể; bạn hoàn toàn có thể thể hiện những cảm xúc sâu sắc nhất của mình một cách chính xác mà không cần thốt ra một lời nào.
Một ngôn ngữ khác mà bạn sử dụng mỗi ngày chính là tiếng mẹ đẻ, ngôn ngữ mà bạn dùng để thể hiện ý chí và suy nghĩ về thế giới thực tại. Máy tính cũng có ngôn ngữ riêng của mình, gọi là ngôn ngữ máy (machine language), và nó rất thô sơ.
Một chiếc máy tính, dù có tiên tiến đến đâu, cũng hoàn toàn không có một chút trí tuệ nào. Bạn có thể hình dung nó giống như một con chó được huấn luyện tốt – nó chỉ phản ứng với một tập hợp các mệnh lệnh đã được biết trước.
Các lệnh mà máy tính có thể hiểu được rất đơn giản. Chúng ta có thể tưởng tượng rằng máy tính chỉ thực hiện những mệnh lệnh như “lấy số này, chia cho số kia và lưu kết quả”.
Một tập hợp đầy đủ các lệnh mà máy tính có thể nhận biết được gọi là danh sách lệnh (instruction list – viết tắt là IL). Các loại máy tính khác nhau có thể có danh sách lệnh với kích thước khác nhau, và thậm chí các lệnh cũng có thể hoàn toàn khác nhau giữa các mẫu máy tính khác nhau.

Ngôn ngữ máy là do con người phát triển.
Hiện tại chưa có chiếc máy tính nào có khả năng tự tạo ra một ngôn ngữ mới. Tuy nhiên, điều đó có thể sẽ thay đổi trong tương lai gần. Cũng giống như con người sử dụng nhiều loại ngôn ngữ rất khác nhau, máy tính cũng có nhiều loại ngôn ngữ khác nhau. Tuy nhiên, sự khác biệt nằm ở chỗ: ngôn ngữ của con người được phát triển một cách tự nhiên.
Hơn nữa, ngôn ngữ tự nhiên vẫn đang tiếp tục tiến hóa, mỗi ngày lại có những từ mới được tạo ra và những từ cũ dần biến mất. Những ngôn ngữ như vậy được gọi là ngôn ngữ tự nhiên.
Ngôn ngữ máy (machine language) thì giúp cho máy tính dễ hiểu, tuy nhiên lại khó hiểu đối với con người. Do đó, các lập trình viên thường không sử dụng trực tiếp ngôn ngữ máy, mà sẽ sử dụng các ngôn ngữ bậc cao (high level programming language) để lập trình, rồi sau đó chuyển ngôn ngữ bậc cao đó sang ngôn ngữ máy để máy tính thực thi.
Hẳn bạn đã nghe đến tên của những ngôn ngữ lập trình rất phổ biến như C, C++, Python, C#, Java, PHP, Javascript,... Chúng ta không thể thành thạo được tất cả các ngôn ngữ lập trình này (cũng giống như không thể thành thạo được hết những ngôn ngữ tự nhiên), nhưng chỉ cần sử dụng một vài ngôn ngữ là chúng ta đã có thể giap tiếp với máy tính một cách thuận lợi.