Tin Học KHMT
Ôn tập Tin học THPT › Tin học 10 › Bài 19
Tin học 10

Bài 19. Các mức ngôn ngữ lập trình và vai trò của chương trình dịch

Bài này trả lời một câu hỏi tưởng đơn giản nhưng rất căn bản: máy tính thực ra hiểu được thứ gì, và vì sao những dòng lệnh gần tiếng Anh mà ta gõ ra lại chạy được trên máy. Từ đó ta phân biệt ngôn ngữ máy, hợp ngữ, ngôn ngữ bậc cao, và hai kiểu chương trình dịch là compiler với interpreter.

Chủ đề F · Lập trình, Thuật toán & CTDL (KHMT) - đọc khoảng 12 phút · 23 câu luyện tập trong ứng dụng

Tương ứng sách giáo khoa
  • Cánh DiềuTin học 10 - Chủ đề F · Bài 1. Làm quen với ngôn ngữ lập trình bậc caotr. 50
  • Kết nối tri thứcTin học 10 - Bài 16. Ngôn ngữ lập trình bậc cao và Pythontr. 86–90
Xem bảng đối chiếu cả bộ →

Bắt đầu bằng một hình dung

Câu lạc bộ tiếng Nhật của một trường THPT đón đoàn học sinh Nhật Bản sang giao lưu. Ban tổ chức lo nhất một việc: hai bên nói hai thứ tiếng khác nhau, nếu không có người ở giữa thì buổi giao lưu coi như hỏng.

Các bạn chọn hai cách làm khác nhau cho hai phần của buổi giao lưu. Phần khai mạc đã có kịch bản viết sẵn từ trước, nên một nhóm ngồi dịch trọn vẹn cả bản kịch bản ra tiếng Nhật, in thành tập, phát cho khách. Việc dịch mất gần hai buổi tối, nhưng khi vào chương trình thì mọi thứ trôi băng băng: khách cầm bản đã dịch, đọc đến đâu hiểu đến đó, không phải chờ ai cả. Bù lại, hôm sau muốn sửa một câu trong kịch bản thì phải dịch lại và in lại tập mới.

Phần giao lưu tự do thì không thể chuẩn bị trước, vì không ai biết khách sẽ hỏi gì. Ban tổ chức mời một anh sinh viên đứng cạnh sân khấu: khách nói một câu, anh dịch ngay câu đó; bạn học sinh trả lời một câu, anh lại dịch tiếp. Cách này linh hoạt, hỏi gì đáp nấy, và hễ có một câu nói khó hiểu thì phát hiện ra ngay tại chỗ. Nhưng buổi nói chuyện rõ ràng chậm hơn hẳn, vì cứ mỗi câu lại phải dừng để dịch.

Hai cách phiên dịch trong câu chuyện này gần như y hệt hai cách mà máy tính "hiểu" chương trình do con người viết ra - và đó chính là nội dung chúng ta sẽ tìm hiểu.

Nội dung bài học

  1. 1) Ba mức ngôn ngữ lập trình
  2. 2) Vì sao nhất định phải có chương trình dịch
  3. 3) Trình biên dịch và trình thông dịch
  4. 4) Python thông dịch và hai chế độ làm việc

Tóm tắt lý thuyết cần nhớ

  • Có ba mức ngôn ngữ lập trình: ngôn ngữ máy chỉ gồm 0 và 1 và là thứ duy nhất máy thực hiện trực tiếp; hợp ngữ thay dãy bit bằng từ gợi nhớ nhưng vẫn phụ thuộc loại máy; ngôn ngữ bậc cao gần tiếng Anh, dễ đọc và chạy được trên nhiều loại máy.
  • Mã nguồn viết bằng ngôn ngữ bậc cao chưa chạy được ngay; phải có chương trình dịch chuyển nó sang ngôn ngữ máy thì bộ xử lí mới thực hiện được.
  • Trình biên dịch (compiler) dịch toàn bộ chương trình một lần thành tệp chạy được nên sau đó chạy rất nhanh; trình thông dịch (interpreter) dịch và thực hiện lần lượt từng câu lệnh nên dễ thử nghiệm, báo lỗi đúng dòng đang chạy, nhưng chạy chậm hơn.
  • Python là ngôn ngữ bậc cao theo cơ chế thông dịch, vì thế các dòng trước chỗ lỗi vẫn kịp cho kết quả; làm việc với Python có hai chế độ là gõ lệnh trực tiếp để thử nhanh và soạn tệp .py để viết bài hoàn chỉnh, lưu lại và sửa dần.

Thuật ngữ tiếng Anh trong bài

Tiếng AnhĐọc làNghĩa
PythonPAI-thầnngôn ngữ lập trình Python
Một ngôn ngữ lập trình dễ học, đặt theo tên loài trăn.
IDEai-đi-iphần mềm lập trình (IDE)
Phần mềm để em gõ code vào rồi bấm nút là chạy thử ngay - giống vừa có vở để viết, vừa có cô giáo chấm bài tại chỗ.
printpơ-rin-tờlệnh in ra màn hình (print)
Lệnh in kết quả ra màn hình cho em nhìn thấy.
inputIN-pútđầu vào (input)
Những gì em đưa vào máy: gõ chữ, bấm chuột...
intin-tờkiểu số nguyên (int)
Số nguyên, tức là số không có phần thập phân, ví dụ 5 hoặc -2.
strxì-tơkiểu chuỗi (str)
Kiểu chuỗi chữ trong Python, dùng cho đoạn chữ viết trong dấu nháy.
forphovòng lặp for
Lệnh bảo máy làm đi làm lại một việc đúng số lần - như đếm từ 1 đến 10.
rangerên-chờhàm tạo dãy số (range)
Tạo ra một dãy số liên tiếp để dùng cho vòng lặp for.

Câu hỏi trắc nghiệm có đáp án

Mấy câu mẫu để bạn tự kiểm tra ngay. Trong ứng dụng, bài này có đủ 23 câu, chấm điểm tự động và giải thích từng câu sai.

Câu 1 · Nhận biết
Ngôn ngữ nào dưới đây được bộ xử lí của máy tính thực hiện trực tiếp, không cần qua chương trình dịch?
  1. Hợp ngữ
  2. Ngôn ngữ máy
  3. Python
  4. Mọi ngôn ngữ bậc cao
Đáp án: B - Đáp án đúng là ngôn ngữ máy: các câu lệnh của nó là những dãy bit 0 và 1 mà bộ xử lí đọc và thi hành ngay. Hợp ngữ tuy rất gần phần cứng nhưng vẫn viết bằng các từ gợi nhớ, phải được dịch sang ngôn ngữ máy mới chạy được. Python là ngôn ngữ bậc cao, cần trình thông dịch. Phương án "mọi ngôn ngữ bậc cao" sai ở chỗ bậc cao nghĩa là càng xa ngôn ngữ máy, nên càng bắt buộc phải có chương trình dịch.
Câu 2 · Nhận biết
Nhiệm vụ chính của chương trình dịch là gì?
  1. Kiểm tra lỗi chính tả trong phần chú thích của chương trình rồi sửa lại giúp người viết
  2. Làm cho bộ xử lí của máy tính chạy với tốc độ cao hơn khi thực hiện chương trình
  3. Chuyển chương trình từ ngôn ngữ máy sang ngôn ngữ bậc cao để người đọc hiểu được nội dung
  4. Chuyển chương trình viết bằng ngôn ngữ bậc cao hoặc hợp ngữ sang ngôn ngữ máy để máy thực hiện được
Đáp án: D - Chương trình dịch là cầu nối giữa mã nguồn do người viết và ngôn ngữ máy mà bộ xử lí thi hành, nên đáp án cuối là đúng. Kiểm tra chính tả trong chú thích không phải việc của nó - chú thích bị bỏ qua khi dịch. Chương trình dịch không hề làm bộ xử lí chạy nhanh hơn; tốc độ phần cứng là cố định. Phương án còn lại nói ngược chiều dịch: chiều dịch bình thường là từ bậc cao xuống ngôn ngữ máy, chứ không phải từ ngôn ngữ máy lên bậc cao.
Câu 3 · Thông hiểu
Điểm khác biệt cơ bản giữa trình biên dịch (compiler) và trình thông dịch (interpreter) là gì?
  1. Trình biên dịch dịch toàn bộ chương trình một lần thành tệp chạy được, còn trình thông dịch dịch rồi thực hiện lần lượt từng câu lệnh
  2. Trình biên dịch chỉ dùng được cho ngôn ngữ máy, còn trình thông dịch chỉ dùng được cho hợp ngữ, ngôn ngữ bậc cao thì không cần chương trình dịch
  3. Trình biên dịch không phát hiện được lỗi nào, còn trình thông dịch phát hiện được toàn bộ lỗi của chương trình ngay từ trước khi chạy dòng đầu tiên
  4. Trình biên dịch luôn cho chương trình chạy chậm hơn trình thông dịch, vì phải dịch lại toàn bộ mã nguồn mỗi lần người dùng chạy chương trình
Đáp án: A - Khác biệt cốt lõi nằm ở cách xử lí: biên dịch làm một lượt cho cả chương trình rồi tạo ra tệp chạy được, thông dịch làm cuốn chiếu từng câu lệnh. Phương án thứ hai vô lí vì ngôn ngữ máy không cần dịch nữa, còn cả hợp ngữ lẫn ngôn ngữ bậc cao đều có thể có chương trình dịch tương ứng. Phương án thứ ba sai vì trình biên dịch kiểm tra lỗi cú pháp của cả chương trình trước khi dịch xong, còn trình thông dịch chỉ phát hiện lỗi ở những dòng nó thực sự chạy tới. Phương án cuối nói ngược: chương trình đã biên dịch thường chạy nhanh hơn vì không phải dịch lại trong lúc chạy.
Câu Đúng/Sai (Phần II) · Thông hiểu
Cho biết mỗi phát biểu sau đúng hay sai:
  • a)Ngôn ngữ máy là ngôn ngữ duy nhất mà bộ xử lí thực hiện được trực tiếp, không cần qua khâu dịch nào.Đúng
  • b)Hợp ngữ dùng các từ gợi nhớ thay cho dãy bit, nhờ vậy một chương trình hợp ngữ chạy được trên mọi loại máy tính.Sai
  • c)Trình thông dịch dịch rồi thực hiện lần lượt từng câu lệnh, nên chương trình thường chạy chậm hơn so với khi đã được biên dịch sẵn.Đúng
  • d)Vì Python là ngôn ngữ bậc cao nên máy tính hiểu được trực tiếp mã nguồn Python mà không cần chương trình dịch.Sai
Vì sao:
  • (a) Đúng - mọi ngôn ngữ khác đều phải được chuyển về ngôn ngữ máy thì bộ xử lí mới thi hành được.
  • (b) Sai - từ gợi nhớ chỉ giúp người viết dễ đọc hơn, còn bản thân hợp ngữ vẫn gắn với tập lệnh của từng loại bộ xử lí, nên không đem nguyên chương trình sang loại máy khác dùng được; tính chạy được trên nhiều loại máy là ưu điểm của ngôn ngữ bậc cao.
  • (c) Đúng - công đoạn dịch bị lặp lại trong suốt quá trình chạy, khác với chương trình biên dịch chỉ dịch một lần rồi thôi.
  • (d) Sai - bậc cao nghĩa là càng xa ngôn ngữ máy; mã nguồn Python bắt buộc phải qua trình thông dịch, đó cũng là lí do muốn chạy chương trình Python trên máy mới thì phải cài Python trước.

Thử ngay: minh hoạ từng bước

Bấm từng bước để tự xem cơ chế hoạt động, hoặc bấm “Tự chạy” cho nó tiến mỗi giây một lần. Đổi được dữ liệu đầu vào - không cần đăng nhập.

Học trọn bài này trong ứng dụng

Bài giảng đầy đủ, 23 câu luyện tập chấm tự động, thi thử đúng cấu trúc đề tốt nghiệp (24 trắc nghiệm + 4 Đúng/Sai), bài thực hành máy tự chấm và gia sư AI giải thích chỗ sai.

Mở bài 19 trong ứng dụng

Phần học miễn phí, không cần tạo tài khoản.