Xem mẫu

  1. Nội Dung 12.1. Tương tự với ngôn ngữ tự nhiên 12.2. Ngôn ngữ máy tính 12.3. Hợp ngữ 12.4. Ngôn ngữ cấp cao 12.5. Ngôn ngữ lập trình hướng đối tượng 12.6. Một số ngôn ngữ lập trình cấp cao 12.7. Các ngôn ngữ lập trình cấp cao khác 12.8. Đặc trưng của một ngôn ngữ lập trình 12.9. Cách lựa chọn một ngôn ngữ lập trình cho một ứng dụng 12.10.Các khái niệm liện quan khác
  2. Mã máy thông qua ngôn ngữ tự nhiên • Ngôn ngữ máy tính là một biện pháp để giao tiếp dùng để truyền đạt thông tin giữa người và máy tính • Tất cả ngôn ngữ máy tính có từ ngữ riêng của chúng. • Khác biệt chủ yếu giữa ngôn ngữ tự nhiên và ngôn ngữ máy tính là ngôn ngữ tự nhiên có từ vựng lớn nhưng đa số ngôn ngữ máy tính sử dụng rất hạn chế hoặc hạn chế từ vựng. • Ngôn ngữ máy tính có thể phân thành các loại sau : 1. Ngôn ngữ máy tính 2. Hợp ngữ 3. Ngôn ngữ cấp cao
  3. Ngôn ngữ của máy tính • Là ngôn ngữ của máy tính vật lý mà người dùng có thể lập trình được. • Lệnh máy : – Mỗi lệnh máy chỉ thực hiện một tác vụ rất đơn giản như 1 phép tính số học hay 1 hoạt động đọc/ghi vùng nhớ/thanh ghi CPU. – Một lệnh máy bao gôm 2 phần : mã lệnh và toán hạng. Mã lệnh (opcode) là một chuỗi các bit 0 và 1. Mỗi chuỗi bit miêu tả 1 số, mỗi số miêu tả 1 lệnh máy cụ thể. – Toán hạng xác định dữ liệu nào sẽ bị xử lý bởi lệnh máy tương ứng. Toán hạng cũng là chuỗi bit nhị phân, nhưng định dạng và ngữ nghĩa của nó phụ thuộc vào từng lệnh máy cụ thể.
  4. Ngôn ngữ của máy tính • Các toán hạng điển hình có trong tập lệnh của máy tính: 1. Phép toán số học 2. Phép toán logic 3. Các thao tác rẽ nhánh. 4. Thao tác để di chuyển dữ liệu giữa vị trí bộ nhớ và thanh ghi. 5. Thao tác di chuyển dữ liệu từ các thiết bị nhập/xuất của máy tính.
  5. Ngôn ngữ của máy tính Ví dụ: Giả sử ta có 2 biến nguyên 16 bit, biến nguyên thứ nhât (i) nằm ở vị trí nhớ 200h, biến nguyên thứ 2 (j) nằm ở vị trí nhớ 202h.Đọan lệnh máy (Intel 80x86) sau đây sẽ thiết lập nội dung cho biến i = 5 rồi thiết lập nội dung của biến j theo công thức i+10 : 10111000 00000101 00000000 b8 05 00 10100011 00000000 00000002 a3 00 02 10100001 00000000 00000002 a1 00 02 00000101 00001010 00000000 05 0a 00 10100011 00000010 00000010 a3 02 02 • Con người rất khó lập trình (rất khó viết và đọc) giải quyết bài toán ngoài đời trực tiếp bằng ngôn ngữ máy vì quá xa lạ với ngôn ngữ tự nhiên mà con người đã từng dùng.
  6. Ngôn ngữ của máy tính Ưu điểm và hạn chế của ngôn ngữ máy tính • Ưu: Chương trình viết ngôn ngữ máy tính có thể được thi hành rất nhanh bằng máy tính • Khuyết: – Phụ thuộc vào máy – Khó viết chương trình – Lỗi prone – Khó sửa đổi – Lập trình viên cần ghi mã số cho từng lệnh. – Lập trình viên cần ghi vị trí lưu trữ của lệnh và dữ liệu ở dạng số. – Lập trình viên cần theo dõi vị trí lưu trữ của lệnh và dữ liệu trong khi ghi chương trình.
  7. Hợp ngữ • Hợp ngữ được sử dụng vào năm 1952. Lập trình bằng hợp ngữ có những đặc điểm sau : 1. Sử dụng mã dễ nhớ theo ký tự và số thay vì mã số cho lệnh trong tập lệnh. 2. Lưu trữ vị trí được biểu diễn dưới dạng địa chỉ theo ký tự và số thay vì địa chỉ số. 3. Cung cấp lệnh bổ sung gọi là lệnh giả trong tập lệnh dùng để hướng dẫn hệ thống cách chúng ta muốn chương trình sẽ được dịch bằng hợp ngữ bên trong bộ nhớ của máy tính. START PROGRAM AT 0000 START DATA AT 1000 SET ASIDE AN ADDRESS FOR FRST SET ASIDE AN ADDRESS FOR SCND ASIDE AN ADDRESS FOR ANSR
  8. Hợp ngữ • Trình dịch hợp ngữ của hệ thống máy tính là hệ thống phần mềm, cung cấp bởi nhà sản xuất máy tính dịch chương trình hợp ngữ thành chương trình ngôn ngữ máy tính Input Output Assembler language program Assembler Machine language program One-to-once correspondence (Source Program) (Object Program) Figure 12.2. Illustrating the translation process of an assembler.
  9. Hợp ngữ • Ví dụ: Chương trình hợp ngữ mẫu cộng hai số và lưu trữ kết quả Mnemonic Opcode Meaning HLT 00 Halt, sử dụng để kết thúc chương CLA 10 trình ADD 14 Xóa và thêm vào thanh ghi A SUB 15 Thêm nội dung vào thanh ghi A STA 30 Trừ nội dung của thanh ghi A Lưu trữ thanh ghi A
  10. Hợp ngữ Thuận lợi • Dễ hiểu và dễ sử dụng • Dễ định vị hơn và sửa lỗi chính xác • Dễ để sửa • Không quan tâm đến địa chỉ • Dễ dàng xác định đúng vị trí • Hiệu xuất cao hơn ngôn ngữ máy tính
  11. Hợp ngữ Hạn chế: • Phụ thuộc vào • Người lập trình phải có kiến thức cần thiết về phần cứng • Các lệnh chỉ được viết ở mức mã máy nên viết chương trình bằng hợp ngữ vẫn còn mất thời gian và không dễ dàng lắm.
  12. Ngôn ngữ lập trình cấp thấp • Là ngôn ngữ máy chỉ có hai cấu trúc điều khiển cơ bản để thực hiện các lệnh : tuần tự và nhảy. Cấu trúc tuần tự là mặc định: sau khi thực hiện xong lệnh máy hiện hành sẽ thi hành tiếp lệnh đi ngay sau lệnh hiện hành trong chương trình. Lệnh nhảy cho phép người lập trình xác định lệnh kế tiếp được thi hành ở đâu trong chương trình. • “Ngôn ngữ lập trình cấp thấp" để miêu tả các ngôn ngữ của các máy nằm thấp dưới đáy chồng các máy nhiều cấp. Thí dụ ngôn ngữ máy là ngôn ngữ lập trình cấp thấp.
  13. Ngôn ngữ cấp cao • Là các ngôn ngữ của các máy nằm cao trên chồng các máy nhiều cấp. • Cho phép dùng nhiều kiểu dữ liệu và nhiều cấu trúc điều khiển hơn so với những gì được cung cấp bởi ngôn ngữ cấp thấp, đồng thời cách biểu diễn các lệnh cũng gần với ngôn ngữ tự nhiên. • Phân loại các ngôn ngữ lập trình cấp cao : – Ngôn ngữ đa mục đích: Basic, C, C++, C#, Java, Fortran, Pascal – Ngôn ngữ lập trình stack : TrueType, Postscript,... – Lập trình khai báo : C, Pascal,... – Ngôn ngữ lập trình logic, lập trình thủ tục & lập trình hàm : Prolog, Lisp,.. – Ngôn ngữ lập trình hướng đối tượng : C++, C#, Java,..
  14. Ngôn ngữ cấp cao Đặc điểm của ngôn ngữ cấp cao: • Độc lập với máy • Không đòi hỏi lập trình viên biết bất cứ thứ gì về cấu trúc bên trong của máy tính. • Không xử lý mã máy. • Cho phép sử dụng máy tính giải quyết vấn đề ngay cả khi người dùng không phải là chuyên gia lập trình.
  15. Ngôn ngữ cấp cao Ví dụ: • Ngôn ngữ máy dạng nhị phân NNM dạng Hex NN Assembly 10111000 00000101 00000000 b8 05 00 mov ax, 5 10100011 00000000 00000002 a3 00 02 mov [200], ax 10100001 00000000 00000002 a1 00 02 mov ax, [200] 00000101 00001010 00000000 05 0a 00 add ax, 10 10100011 00000010 00000010 a3 02 02 mov [202],ax • Ngôn ngữ cấp cao C : short i, j; // khai báo 2 biên i, j thuộc kiểu số nguyên 16 bit i = 5; // chứa 5 vào biến i j = i +10; // chứa kết quả tính công thức i + 10 vào biến j
  16. Ngôn ngữ cấp cao • Chương trình dịch để dịch chương trình bằng ngôn ngữ cấp cao phải chuyển đổi thành chương trình ngôn ngữ máy tính tương đương với nó trước khi nó có thể được thi hành trên máy tính. Quá trình dịch của một trình biên dịch
  17. Ngôn ngữ cấp cao Minh họa quá trình biên dịch lại mã nguồn của chương trình
  18. Ngôn ngữ cấp cao • Linker (Liên kết, kết nối): được sử dụng để kết hợp chính xác tất cả các tập tin đối tượng chương trình (module) của phần mềm, và chuyển đổi chúng vào chương trình thực thi cuối cùng.
  19. Ngôn ngữ cấp cao Quá trình biên dịch nhiều chương trình nguồn và kết nối chúng với nhau để thực thi chương trình (nạp module)
nguon tai.lieu . vn