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.
- 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
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) Ba mức ngôn ngữ lập trình
- 2) Vì sao nhất định phải có chương trình dịch
- 3) Trình biên dịch và trình thông dịch
- 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 |
|---|---|---|
| Python | PAI-thần | ngô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. |
| IDE | ai-đi-i | phầ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ỗ. |
| pơ-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. | |
| input | IN-pút | đầu vào (input) Những gì em đưa vào máy: gõ chữ, bấm chuột... |
| int | in-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. |
| str | xì-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. |
| for | pho | vò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. |
| range | rê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.
- Hợp ngữ
- Ngôn ngữ máy
- Python
- Mọi ngôn ngữ bậc cao
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- (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.
Phần học miễn phí, không cần tạo tài khoản.
Bài liên quan - Lập trình, Thuật toán & CTDL (KHMT)
Cùng mạch kiến thức với bài này, học nối tiếp cho chắc phần lí thuyết.