Trả lời nhanh
Đáp án đúng là Assembly (hợp ngữ). Assembly là ngôn ngữ bậc thấp vì các câu lệnh của nó tương ứng gần như một – một với lệnh của máy tính và phụ thuộc vào từng loại bộ xử lí. Còn C/C++ và Python là ngôn ngữ bậc cao: câu lệnh gần với ngôn ngữ tự nhiên và toán học, không phụ thuộc vào phần cứng cụ thể.
Ba cấp độ của ngôn ngữ lập trình
| Cấp độ | Đại diện | Đặc điểm |
|---|---|---|
| Ngôn ngữ máy | Dãy bit 0 và 1 | Máy tính hiểu trực tiếp, người rất khó đọc và viết |
| Hợp ngữ (bậc thấp) | Assembly | Dùng từ gợi nhớ như MOV, ADD thay cho dãy bit; phụ thuộc vào loại máy |
| Ngôn ngữ bậc cao | C/C++, Python, Java, Pascal | Gần ngôn ngữ tự nhiên, dễ học, chạy được trên nhiều loại máy khi có trình biên dịch hoặc thông dịch |
Vì sao Assembly không phải ngôn ngữ bậc cao?
- Gắn chặt với phần cứng: chương trình Assembly viết cho bộ xử lí này thường không chạy được trên bộ xử lí khác nếu không viết lại.
- Lệnh sát với máy: mỗi câu lệnh gần như trùng khớp với một lệnh máy, người lập trình phải quản lí cả thanh ghi và địa chỉ bộ nhớ.
- Khó viết, khó bảo trì: một việc đơn giản như tính tổng hai số cũng cần nhiều dòng lệnh.
Đổi lại, Assembly cho phép điều khiển phần cứng rất chính xác và chạy rất nhanh, nên vẫn được dùng để viết trình điều khiển thiết bị hay các đoạn mã cần tối ưu tốc độ.
Vì sao C/C++ và Python là ngôn ngữ bậc cao?
Hai ngôn ngữ này dùng từ khoá giống tiếng Anh (if, while, print), có biến, kiểu dữ liệu, cấu trúc điều kiện và vòng lặp. Chương trình được dịch sang mã máy nhờ trình biên dịch (C/C++) hoặc trình thông dịch (Python). Một chương trình viết một lần có thể chạy trên Windows, Linux hay macOS mà không phải sửa nhiều.
Em có thể xem câu in lời chào ở Python: print("Xin chao"). Chỉ một dòng, trong khi cùng việc đó ở Assembly cần nhiều lệnh gọi hệ thống, nạp thanh ghi và địa chỉ chuỗi.
Phân tích các phương án
- C/C++: bậc cao. Có khi gọi là “bậc trung” vì can thiệp được vào bộ nhớ, nhưng về phân loại chung vẫn thuộc nhóm ngôn ngữ bậc cao.
- Assembly: bậc thấp, là đáp án của câu hỏi “không phải ngôn ngữ bậc cao”.
- Python: bậc cao, cú pháp ngắn gọn, thông dịch, rất thích hợp cho người mới học.
Mẹo nhớ
Nhìn thấy các ngôn ngữ có từ khoá giống tiếng Anh và chạy được ở nhiều máy thì là bậc cao. Nhìn thấy tên có chữ “asm” hoặc các lệnh như MOV, JMP, thì đó là hợp ngữ. Còn dãy toàn số 0 và 1 là ngôn ngữ máy.
Lỗi sai thường gặp
- Nhầm “bậc thấp” với “dễ”. Bậc thấp nghĩa là gần với máy, chứ không phải đơn giản.
- Cho rằng Assembly chính là ngôn ngữ máy. Hợp ngữ vẫn là chữ, cần chương trình hợp dịch (assembler) chuyển thành mã máy.
- Cho rằng ngôn ngữ nào nhanh hơn thì “bậc cao” hơn. Thang phân loại dựa vào mức độ gần với con người hay với máy, không dựa vào tốc độ chạy.
Luyện tập
Câu 1. Ngôn ngữ duy nhất máy tính hiểu trực tiếp mà không cần dịch là gì?
Đáp án: ngôn ngữ máy.
Câu 2. Chương trình Assembly được chuyển thành mã máy bằng gì?
Đáp án: chương trình hợp dịch (assembler).
Câu 3. Nêu một ưu điểm của ngôn ngữ bậc cao so với hợp ngữ.
Đáp án: dễ đọc, dễ viết, dễ bảo trì và chạy được trên nhiều loại máy khác nhau.
Câu hỏi thường gặp
Assembly có phải ngôn ngữ bậc cao không?
Không. Assembly (hợp ngữ) là ngôn ngữ bậc thấp vì lệnh của nó tương ứng sát với lệnh máy và phụ thuộc vào bộ xử lí.
Python và C/C++ thuộc loại ngôn ngữ nào?
Cả hai đều là ngôn ngữ lập trình bậc cao, có cú pháp gần ngôn ngữ tự nhiên và được dịch sang mã máy bằng trình biên dịch hoặc thông dịch.
Ngôn ngữ máy khác hợp ngữ ở điểm nào?
Ngôn ngữ máy chỉ gồm các dãy bit 0 và 1, còn hợp ngữ dùng các từ gợi nhớ như MOV, ADD để người đọc được dễ hơn.
Vì sao vẫn còn dùng Assembly?
Vì nó cho phép điều khiển phần cứng chính xác và tối ưu tốc độ, nên dùng trong trình điều khiển thiết bị hoặc hệ thống nhúng.