NGÔN NGỮ LẬP TRÌNH 1 Mởđầu:

Một phần của tài liệu Giáo trình lý thuyết ngôn ngữ hình thức và ôtômát (Trang 74)

a) f(n1)=3n1 b) f(n 1)=n1 +3.

5.1. NGÔN NGỮ LẬP TRÌNH 1 Mởđầu:

Từ ngàn xưa con người muốn giao tiếp với nhau phải dùng ngôn ngữ. Vậy người giao tiếp với máy tính tất nhiên cũng thông qua ngôn ngữ. Con người muốn máy tính thực hiện công việc, phải viết các yêu cầu đưa cho máy bằng ngôn ngữ máy hiểu được. Việc viết các yêu cầu, ta gọi là lập trình (programming). Ngôn ngữ dùng để lập trình được gọi là ngôn ngữ lập trình (programming language).

Viết chương trình để giải quyết vấn đề sẽ dễ dàng và tự nhiên hơn nếu ngôn ngữ lập trình gần với vấn đề cần giải quyết. Có nghĩa là ngôn ngữ phải chứa đựng các cấu trúc thuật ngữ, phần tử dùng để miêu tả vấn đề và không phụ thuộc vào máy tính cụ thể.

Các ngôn ngữ lập trình có tính chất như trên được gọi là ngôn ngữ cấp cao. Nhưng máy tính chỉ hiểu, chỉ chấp nhận ngôn ngữ cấp thấp riêng của mình, đó là chuỗi các số 0 và 1, chuỗi số đó lại không gần gũi chút nào đối với con người. Việc phân cấp ngôn ngữ lập trình được dựa trên cơ sở của tính không phụ thuộc với máy tính ngày càng cao của các ngôn ngữ.

Phân loại: 1) Ngôn ngữ máy (machine language), 2) Hợp ngữ (assembly language),

3) Ngôn ngữ cấp cao (higher-level language).

Bởi vì máy tính chỉ có thể hiểu ngôn ngữ máy cho nên một chương trình viết trong ngôn ngữ cấp cao cuối cùng rồi cũng được dịch sang ngôn ngữ máy. Công cụ thực hiện việc dịch đó được gọi là chương trình dịch (translator).

Chương trình dịch được chia làm hai loại: trình biên dịch (compiler) và trình thông dịch (interpreter).

− Trình biên dịch: chuyển một chương trình viết trong ngôn ngữ cấp cao − chương trình nguồn sang chương trình trong ngôn ngữ cấp cao khác hoặc ngôn ngữ máy − chương trình đích.

+ Thời gian chuyển một chương trình nguồn sang chương trình đích được gọi là thời gian dịch (compile time).

+ Thời gian mà chương trình đích được thực thi được gọi là thời gian thực thi (run time).

Chương trình

nguồn Chươđng trình ích Máy tính thực thi Dữ liệu

Kết quả

Trình biên dịch

Như vậy, đối với trình biên dịch, chương trình nguồn và dữ liệu được xử lý trong thời gian khác nhau, đó là thời gian dịch và thời gian thực thi.

− Trình thông dịch: quá trình xử lý dạng bên trong của chương trình nguồn và dữ liệu cùng một thời gian. Chương trình nguồn Dữ liệu Kết quả Trình thông dịch

Một số trình thông dịch làm việc như sau: phân tích từng phát biểu và thực thi luôn.

Hiện nay trình thông dịch đa phần áp dụng kỹ thuật của trình biên dịch là biên dịch chương trình nguồn sang dạng mã trung gian. Từ mã trung gian sẽ được thực thi bằng trình thông dịch.

Đặc tả ngôn ngữ lập trình: đểđặc tả ngôn ngữ lập trình, tối thiểu ta cần định nghĩa:

1. Tập các ký hiệu cần dùng trong các chương trình hợp lệ. 2. Tập các chương trình hợp lệ.

3. Nghĩa của từng chương trình hợp lệ.

Việc định nghĩa tập các ký hiệu của một ngôn ngữ thật dễ dàng, ta chỉ cần liệt kê chúng. Song định nghĩa tập chương trình, gọi là hợp lệ thì quả là một công việc khó khăn hơn nhiều. Bởi vì thật là khó để xác định thế nào là một chương trình hợp lệ.

Khi đặc tả ngôn ngữ lập trình, ta thường định nghĩa lớp các chương trình bằng tập các luật văn phạm, ta có thể tạo nên cả những chương trình còn nghi vấn về tính hợp lệ.

Chẳng hạn, trong Fortran cho phép phát biểu sau: L GOTO L là hợp lệ. Mặc dù nếu phát biểu này mà được thực hiện thì sẽ là vòng lặp vô tận, không giải quyết được gì cả. Vì thế chương trình mà ta coi là hợp lệ phải được hiểu trong nghĩa hẹp. Khó khăn thứ ba cũng là vấn đề khó nhất của đặc tả ngôn ngữ là việc định nghĩa ý nghĩa của một chương trình hợp lệ. Có ba phương pháp để xác định nghĩa của chương trình hợp lệ.

Phương pháp thứ nhất là định nghĩa bằng phép ánh xạ: ánh xạ mỗi chương trình vào một câu trong ngôn ngữ mà nghĩa của nó ta hiểu được.

Phương pháp thứ hai, xác định ý nghĩa của chương trình bằng một máy lý tưởng (idealized machine). Nghĩa của chương trình có thể được đặc tả trong ngôn

từ của máy lý tưởng này. Như vậy máy lý tưởng trở thành bộ thông dịch cho ngôn ngữ.

Phương pháp thứ ba, nghĩa của một chương trình nguồn chính là sản phẩm xuất ra của trình biên dịch, khi nó dịch chương trình nguồn. Trình biên dịch được dặc tả như là tập các cặp (x, y), với x là chương trình nguồn và y là chương trình đích, là chương trình mà x sẽ được dịch sang y. Giả sử cặp (x, y) đã có trước, bây giờ ta quan tâm đến cấu trúc của thiết bị để khi nhận x là đầu vào thì sinh ra y ở đầu ra.

Ta coi tập (x, y) là sự biên dịch. Nếu mỗi chuỗi x được định nghĩa trên bảng chữ Σ và chuỗi y được định nghĩa trên bảng chữ ∆ thì biên dịch là phép ánh xạ từ Σ*đến ∆*.

Một phần của tài liệu Giáo trình lý thuyết ngôn ngữ hình thức và ôtômát (Trang 74)

Tải bản đầy đủ (PDF)

(90 trang)