Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 4 - Tô Oai Hùng

47 20 0
Bài giảng Các vấn đề cơ sở của khoa học máy tính: Chương 4 - Tô Oai Hùng

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Bài giảng Các vấn đề cơ sở của khoa học máy tính - Chương 4: Phần mềm cung cấp cho người học các kiến thức: Các thệ hệ của ngôn ngữ lập trình, trình biên dịch và trình thông dịch, máy ảo, lập trình thủ tục, lập trình hướng đối tượng, ngôn ngữ kịch bản, ngôn ngữ lập trình hàm, cú pháp ngôn ngữ và ngữ nghĩa. Mời các bạn cùng tham khảo nội dung chi tiết.

Chương 4: PHẦN MỀM Nội Dung Các thệ hệ ngơn ngữ lập trình Trình biên dịch trình thơng dịch Máy ảo Lập trình thủ tục Lập trình hướng đối tượng Ngơn ngữ kịch Ngơn ngữ lập trình hàm Cú pháp ngôn ngữ ngữ nghĩa Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngơn Ngữ Lập Trình • Các nhà khoa học máy tính gọi chung • • • • ngơn ngữ lập trình, chương trình sản phẩm phần mềm (software) Một lệnh máy dãy bit chứa nhớ máy tính Khi máy tính đọc nhớ, xác định xem dãy bit đọc có phải lệnh máy khơng Nếu đúng, máy tính thực thi lệnh đó, ngược lại máy tính dừng lệnh khơng hợp lệ Mỗi máy tính (một họ CPU) có tập lệnh máy hữu hạn Hầu hết máy tính ngày có từ 75 đến 150 lệnh máy tập lệnh Mỗi kiến trúc máy tính thể Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngôn Ngữ Lập Trình • tập lệnh Các tập lệnh kiển trúc khác khác Ví dụ, tập lệnh Intel Pentium khác với Sun SPARC Cả thực tác vụ, lệnh kiến trúc khác với kiến trúc khác Trong máy tính trước đây, việc lập trình thực trực tiếp lệnh máy Người lập trình làm việc với bit để viết mã cho lệnh Ví dụ sau ba lệnh máy tính 16 bit để cộng hai giá trị chứa nhớ địa 64 65 lưu kết vào địa 66: Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngôn Ngữ Lập Trình • • • 0110000001000000 Nạp giá trị 64 vào AX 0100000001000001 Cộng với giá trị 65 0111000001000010 Chứa giá trị AX vào 66 Khi tất lệnh máy tạo, người lập trình lưu chúng vào nhớ Sau đó, thiết lập ghi PC trỏ đến lệnh chương trình thực thi Các thao tác máy tính đọc lệnh nhớ trỏ ghi PC, tăng ghi PC, thực thi lệnh lặp lại Một cải tiến trước để lập trình hiệu sử dụng hợp ngữ (assembly language) Trong hợp ngữ, Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngơn Ngữ Lập Trình • đọc mã lệnh từ gợi nhớ (chữ số mnemonic) thay mã máy từ gợi nhớ ứng với lệnh máy Hợp ngữ gọi ngôn ngữ hệ thứ hai (second-generation language) Trong hợp ngữ, người lập trình viết mã lệnh gợi nhớ biên dịch (bằng trình hợp dịch – assembler) trực tiếp thành mã máy Một số từ gợi nhớ tiêu biểu sau: - LDA m: Nạp giá trị địa m vào ghi AX - ADA m: Cộng giá trị AX với giá trị địa m, kết chứa AX Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngơn Ngữ Lập Trình - ALS: Dịch bit AX sang trái đơn • • vị - SSA: Nếu bit msb AX 1, bỏ qua lệnh Ngược lại, thực thi lệnh - JMP m: Nhảy đến địa m Sau mã hợp ngữ để viết lại lệnh máy trên: LDA 100 // 100 octal = 64 ADA 101 // 101 octal = 65 STA 102 // 102 octal = 66 Người lập trình thường sử dụng hợp ngữ để viết chương trình gần gũi với phần Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngơn Ngữ Lập Trình • • • • cứng máy tính chương trình tối ưu tốc độ hay nhớ Như công cụ giáo dục, lập trình hợp ngữ quan trọng, cách tốt để biết máy tính làm làm Vào năm 1954, ngôn ngữ hệ thứ ba đời Ngơn ngữ FORTRAN, John Backus IBM phát minh FORTRAN chữ viết tắt FORmula TRANslation Ngôn ngữ giúp người lập trình làm việc mức trừu tượng cao Thay bị hạn chế tập lệnh máy, người Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngôn Ngữ Lập Trình • • • lập trình sử dụng câu lệnh giống tiếng Anh biểu thức tốn học Ngơn ngữ bao gồm lệnh rẽ nhánh, lặp nhập/xuất Sau câu lệnh FORTRAN Các tên biến X, Y Z trở thành tên đại diện cho vị trí nhớ Câu lệnh cộng nội dung Y với Z chứa tổng vào X: X = Y + Z So sánh với hợp ngữ, câu lệnh FORTRAN dễ đọc, dễ viết ngắn gọn FORTRAN “ngôn ngữ thủ tục” (procedural language) Nghĩa là, người lập trình phải tổ Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngôn Ngữ Lập Trình • • chức hợp lý dãy bước cần thiết để thực thi tác vụ Các ngơn ngữ thủ tục cịn gọi “ngơn ngữ mệnh lệnh” (imperative language), câu lệnh ngôn ngữ mệnh lệnh cho máy tính – bước chương trình định hành động máy tính Khác với ngơn ngữ mệnh lệnh ngôn ngữ “hướng đối tượng” (objectoriented) Hầu hết, tất chương trình ngày viết ngơn ngữ mệnh lệnh 10 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • Ngơn Ngữ Lập Trình Hàm Các ngơn ngữ lập trình hàm (functional programming language) phát minh từ sớm lịch sử máy tính Năm 1958, John McCarthy cho đời ngơn ngữ LISP (LISt Processing) Ngơn ngữ lập trình hàm thường dùng để xử lý hàm toán học Một hàm cần hay nhiều đối số trả trị Cho ví dụ, phương trình đường parabol là: f(x) = 2x2 + Khi cung cấp giá trị cho x (ví dụ x = 3), hàm trả kết sau: f(3) = 2(3)2 + = 23 33 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng • • • Ngơn Ngữ Lập Trình Hàm Với ngơn ngữ lập trình hàm, việc tính tốn thực cách truyền đối số đến hàm nhận kết trả hàm Trong ví dụ, sử dụng ngơn ngữ Scheme Ngôn ngữ Scheme gọi ngôn ngữ thao tác ký hiệu (symbolic manipulation), đời năm 1975 thuộc họ LISP Một biểu thức Scheme atom (nguyên tử) hay list (danh sách) Một atom số, ký tự, tên hay hàm Một list tập biểu thức chứa dấu 34 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Ngơn Ngữ Lập Trình Hàm • ngoặc () Các phần tử list atom list khác Trong ngôn ngữ lập trình hàm nào, số hàm tạo sẵn Ngồi ra, người lập trình tự định nghĩa hàm Sau số ví dụ Scheme: 1.(+ 5) → 2.(+ 2) → 21 3.(/ (+ 5) (- 5)) → 4.(list 6) →(1 6) Scheme/ 5.(car (list 6)) → (cdr (list 6)) → (5 6) LISP 35 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Ngơn Ngữ Lập Trình Hàm 7.(define sum (lambda (n m) (+ n m))) > (sum 3) Trong ví dụ trên, định nghĩa hàm sum sử dụng ký pháp lambda (lambda notation) Ưu điểm không phân biệt định nghĩa hàm với định nghĩa giá trị 8.(define factorial (lambda (n) (if ( (factorial 5) 120 Lưu ý: Thay sử dụng lệnh if lồng nhau, Scheme cho phép sử dụng lệnh cond Ví dụ: cond((>= grade 8) “Gioi”) ((>= grade 7) “Kha”) ((>= grade 6) “TB kha”) ((>= grade 5) “Trung binh”) (else “Kem”))) 37 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Ngơn Ngữ Lập Trình Hàm • 9.(define listSum (lambda (n) (cond ((null? n) 0) ((null? (cdr n)) (car n)) (else (+ (car n) (listSum( cdr n)))) ))) > (listSum (list 5)) 11 Lập trình hàm thường sử dụng trí tuệ nhân tạo (artificial intelligence) hệ chuyên gia (expert system) 38 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • Cú Pháp Ngôn Ngữ Ngữ Nghĩa Trước biên dịch chương trình ngơn ngữ cấp cao thành mã máy, xử lý ngơn ngữ (chương trình dịch) phải thực nhiều tác vụ phân tích từ vựng (lexical analysis), phân tích cú pháp (syntax analysis) sinh mã (phân tích ngữ nghĩa - semantic analysis) Trong bước phân tích từ vựng, chương trình dịch đọc dãy ký tự từ tập tin mã nguồn tạo token ngôn ngữ Token từ ngơn ngữ có nhiều dạng, từ khố (key word) String, ký hiệu ‘+’, danh hiệu myCount, 3.14 hay chuỗi ký tự “Please enter your name:”.39 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • • Cú Pháp Ngôn Ngữ Ngữ Nghĩa Sau token tạo, phân tích cú pháp (parser) xây dựng phân tích cú pháp (parse tree) theo qui tắc văn phạm ngơn ngữ tìm lỗi có Cú pháp ngơn ngữ mơ tả lệnh hợp lệ ngơn ngữ Cú pháp đúng, khơng đảm bảo kết chương trình đúng, chương trình phải có cú pháp Ngày nay, qui tắc cú pháp thường biểu diễn dạng Backus-Naur form (BNF) hay BNF mở rộng (EBNF) Từ “Backus-Naur” 40 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Cú Pháp Ngôn Ngữ Ngữ Nghĩa • • ghép từ tên John Backus nhà phát minh ngôn ngữ FORTRAN Peter Naur BNF sử dụng tập qui tắc hay luật sinh (production rule) để mô tả văn phạm hay cú pháp Bên trái luật sinh, BNF cho thấy khái niệm ngôn ngữ học biết “ký hiệu khơng kết thúc” (non-terminal) Ví dụ, ký hiệu không kết thúc tiếng Anh “câu” (sentence) “ngữ động từ” (verb phrase) Trong ngôn ngữ lập trình, ký hiệu khơng kết thúc “expression” hay “term” 41 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • Cú Pháp Ngơn Ngữ Ngữ Nghĩa Bên phải luật sinh, BNF cho thấy kết hợp ký hiệu không kết thúc và/hoặc ký hiệu kết thúc thay cho ký hiệu khơng kết thúc bên trái Ví dụ sau văn phạm biểu thức toán học: 1.expression → term | expression addop term 2.term → factor | term multop factor 3.factor → identifier | number | -factor | (expression) 4.addop → + | 5.multop → * | / 42 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • • • • • Cú Pháp Ngôn Ngữ Ngữ Nghĩa Các vạch đứng “|” nghĩa “hoặc” Các luật sinh 3, 4, tạo ký hiệu kết thúc Trong luật sinh 1, biểu thức term biểu thức khác addop (+ | -) với term Trong luật sinh 2, term factor term khác multop(* | /) với factor Cho ví dụ, phân tích cú pháp biểu thức sau dựa vào văn phạm trên: X * + Áp dụng luật sinh 1: X * + → (X * 3) addop term expr + 43 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng • • • • Cú Pháp Ngôn Ngữ Ngữ Nghĩa Áp dụng luật sinh cho term: term → factor → number Áp dụng luật sinh cho (X * 3): (X * 3) → term → term multop factor (X * 3) X * Áp dụng luật sinh cho factor: factor → number Áp dụng luật sinh cho term: term → factor → identifier X X X 44 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • Cú Pháp Ngơn Ngữ Ngữ Nghĩa Sự phân tích biểu thức thành ký hiệu kết thúc dựa vào qui tắc văn phạm gọi dẫn xuất (derivation) Kết dẫn xuất thành cơng phân tích cú pháp hay cú pháp (syntax tree) Sau phân tích cú pháp dẫn xuất mà vừa thực hiện: 45 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Cú Pháp Ngôn Ngữ Ngữ Nghĩa 46 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • Cú Pháp Ngơn Ngữ Ngữ Nghĩa Để tính ý nghĩa biểu thức, phân tích cú pháp duyệt (traverse) từ lên Tính phép nhân trước đến phép cộng Lúc này, trình biên dịch tạo lệnh máy tương ứng để thực thi biểu thức Đây giai đoạn cuối gọi sinh mã (code generation) 47 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng ... tích cú pháp dẫn xuất mà vừa thực hiện: 45 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Cú Pháp Ngôn Ngữ Ngữ Nghĩa 46 Các Vấn Đề Cơ Sở KHMT ThS GVC Tơ Oai Hùng • Cú Pháp Ngơn Ngữ Ngữ Nghĩa Để tính... 18 Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng • • Máy Ảo Máy ảo (virtual machine) máy tính định nghĩa phần mềm phần cứng Máy ảo chạy chương trình giống máy tính thật, máy ảo thực điều khiển chương. .. tập lệnh máy hữu hạn Hầu hết máy tính ngày có từ 75 đến 150 lệnh máy tập lệnh Mỗi kiến trúc máy tính thể Các Vấn Đề Cơ Sở KHMT ThS GVC Tô Oai Hùng Các Thế Hệ Ngơn Ngữ Lập Trình • tập lệnh Các tập

Ngày đăng: 09/05/2021, 18:21

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan