1.1.2 So sánh ngôn ngữ tự nhiên với ngôn ngữ lập trình (2)

Một máy tính, thậm chí hầu hết những máy tính với kỹ thuật hiện đại nhất cũng không có trí thông minh. Bạn có thể nói rằng nó giống như chú chó được huấn luyện vậy – nó chỉ phản hồi với những mệnh lệnh đã biết từ trước. Và đôi khi, cũng giống như một chú chó, nó tắt đi và từ chối làm những gì mà chúng ta nói.

Một tập hợp các lệnh phổ biến được gọi là “instruction list“, đôi khi viết tắt là “IL“. Những loại máy tính khác nhau có thể khác nhau về kích thước của IL và bản thân các lệnh có thể khác nhau hoàn toàn. Trên thực tế IL là bảng chữ cái được biết đến như là ngôn ngữ máy (machine language). Đây là ngôn ngữ chủ yếu và đơn giản nhất chúng ta có thể sử dụng để ra lệnh cho máy tính. Có thể nói nó là “tiếng mẹ đẻ” của máy tính.

Chương trình máy tính là một tập hợp các lệnh theo trật tự nhất định để tạo ra hiệu ứng mong muốn. Bản thân các hiệu ứng có thể khác nhau ở mỗi trường hợp – nó phụ thuộc vào ý định của lập trình viên, trí tưởng tượng, kiến thức và kinh nghiệm. Chương trình máy tính có thể được viết trực tiếp bằng ngôn ngữ máy sử dụng những lệnh cấp thấp. Viết những chương trình như thế này khá nhạt nhẽo, tốn thời gian và và dễ mắc sai lầm. Trong giai đầu của công nghệ máy tính, nó là phương pháp duy nhất để lập trình, và nó đã nhanh chóng để lộ ra những thiếu sót nghiêm trọng.

Lập trình bằng ngôn ngữ máy đòi hỏi lập trình viên phải có đầy đủ kiến thức về thiết kế và kiến trúc phần cứng. Điều đó cũng có nghĩa là nếu thay thế máy tính bằng một thiết kế mới có thể làm cho toàn bộ kiến thức trước đó của lập trình viên không sử dụng được nữa. Các chương trình cũ có thể trở nên hoàn toàn vô dụng nếu máy tính mới sử dụng một IL khác. Do đó, một chương trình được viết cho một loại máy tính cụ thể có thể hoàn toàn vô dụng với các máy tính khác và ngược lại. Ngoài ra, chương trình viết bằng ngôn ngữ máy rất khó hiểu đối với con người, kể cả các lập trình viên có kinh nghiệm. Thêm nữa để phát triển một chương trình bằng ngôn ngữ máy tốn rất nhiều thời gian và source code rất cồng kềnh.

Tất cả những điều trên dẫn đến cần phải có một cầu nối giữa ngôn ngữ con người (ngôn ngữ tự nhiên) và ngôn ngữ máy. Cầu nối này cũng là một ngôn ngữ – một ngôn ngữ trung gian cho con người và máy tính làm việc với nhau. Những ngôn ngữ như thế này được gọi là ngôn ngữ lập trình bậc cao (high-level programming language). Môt ngôn ngữ như vậy phải có ít nhất một phần nào đó tương tự như ngôn ngữ tự nhiên: nó sử dụng ký hiệu, từ ngữ và quy ước mà con người có thể đọc được. Ngôn ngữ này cho phép con người thể hiện những lệnh phức tạp dành cho máy tính.

Bạn có thể đặt câu hỏi là làm thế nào máy tính có thể hiểu được những chương trình được viết theo cách này ? Bởi vì chương trình của bạn có thể được dịch sang ngôn ngữ máy và việc dịch này được thực hiện bằng máy tính, làm cho toàn bộ quá trình nhanh chóng và hiệu quả.

Tuyệt quá phải không !? Bạn không cần phải học toàn bộ những ngôn ngữ máy khác nhau – bạn chỉ cần biết một ngôn ngữ lập trình bậc cao. Nếu có một trình dịch được thiết kế cho một máy tính cụ thể, bạn có thể chạy chương trình của bạn trên máy tính đó mà không có bất kỳ vấn đề gì. Nói cách khác chương trình viết bằng ngôn ngữ lập trình bậc cao có thể được dịch sang bất kỳ ngôn ngữ máy nào và điều này cho phép nó có thể được sử dụng ở những máy tính khác nhau. Cái này gọi là tính khả chuyển (portability).