Sự khác biệt cơ bản giữa các ngữ nghĩa hoạt động nhỏ và lớn là gì?
Tôi đang có một thời gian khó khăn để nắm bắt nó là gì và động lực để có hai.
x = 0; while ( true ) { x = x + 1; }
gì?
Sự khác biệt cơ bản giữa các ngữ nghĩa hoạt động nhỏ và lớn là gì?
Tôi đang có một thời gian khó khăn để nắm bắt nó là gì và động lực để có hai.
x = 0; while ( true ) { x = x + 1; }
gì?
Câu trả lời:
Ngữ nghĩa bước nhỏ xác định một phương pháp để đánh giá biểu thức một bước tính toán tại một thời điểm. Nói một cách chính thức, một ngữ nghĩa bước nhỏ cho một ngôn ngữ biểu thức là một mối quan hệ được gọi là quan hệ rút gọn. Ngữ nghĩa bước nhỏ mô tả những gì xảy ra với một biểu thức một cách chi tiết. Nó có thể cung cấp cho một tài khoản chính xác của ngay cả các chương trình không kết thúc, với một chuỗi vô hạn . Một chương trình chấm dứt là một trong những ví dụ mà chấm dứt với một giá trị mà ∀ e ' ∈ E , v ↛ e ' .
Ở đầu kia của phổ là ngữ nghĩa học biểu thị . Ngữ nghĩa học biểu thị gán một ý nghĩa của người Viking cho mỗi biểu thức. Đây là một chức năng từ biểu thức đến ký hiệu: ( D được gọi là miền). Không gian của denotations có thể hoàn toàn không liên quan đến không gian cú pháp, ví dụ E có thể là biểu thức được đánh giá đối với một số và D có thể là một tập hợp các số như N hoặc R .
Ngữ nghĩa bước lớn là loại ở giữa. Một lớn bước ngữ nghĩa trên một ngôn ngữ biểu thức và một tập hợp các giá trị V là một mối quan hệ ⇓ : E × V . Nó liên quan đến một biểu thức với giá trị của nó (có thể là nhiều giá trị nếu ngôn ngữ không mang tính quyết định). Thông thường, một giá trị đặc biệt ⊥ được sử dụng cho các biểu thức không kết thúc.
Vậy tại sao chúng ta có ba khái niệm này? Tất cả các khái niệm này có thể mô hình hóa lẫn nhau, nhưng mô hình thêm một mức độ phức tạp.
Nói một cách vận hành, ngữ nghĩa bước nhỏ tương ứng với việc xem xét từng thao tác được thực hiện bởi một thông dịch viên cho ngôn ngữ. Ngữ nghĩa bước lớn chỉ nhìn vào giá trị kết quả. Ngữ nghĩa học hàm ý xem xét một diễn giải toán học có thể có hoặc không có liên quan gì đến những gì xảy ra trên máy tính.
Ngữ nghĩa bước nhỏ là một trong những rõ ràng nhất. Nó rõ ràng cung cấp thông tin hữu ích về các chương trình không kết thúc. Tổng quát hơn, nó cung cấp thông tin chi tiết về hành vi của chương trình.
Ngữ nghĩa học biến đổi cấu trúc cú pháp thành các đối tượng toán học tùy ý; nó có thể diễn đạt bất cứ điều gì các nhà khoa học muốn (bạn có thể định nghĩa biểu thị của một biểu thức là tất cả các chuỗi giảm có thể có từ nó), nhưng với chi phí thêm một mức độ phức tạp. Nó được sử dụng khi chúng ta muốn trừu tượng hóa một số chi tiết như chính xác cách thức biểu thức được đánh giá.
Ngữ nghĩa bước lớn nằm ở giữa: nó trừu tượng hóa các chi tiết của đánh giá nhưng vẫn giữ nguyên bản chất cú pháp của kết quả. Thông thường các khái niệm được sử dụng khi có một tiềm ẩn ngữ nghĩa nhỏ bước, như một cách để thể hiện chính xác “ Và như e ⇓ e nMùi. Trong các cấu trúc như vậy, trong khi các khái niệm rất khác nhau (một khái niệm cho phép chúng ta nói về các bước tính toán riêng lẻ và về các chương trình không kết thúc, thì các khái niệm khác không), các định nghĩa sẽ trông rất giống nhau, vì trong trường hợp này, các quy tắc xác định lớn bước ngữ nghĩa cơ bản của hình thức “nếu và ... và e n → * v và v là một giá trị thì e 1 ⇓ v ”.
3
trong phần ((2+1)+1)⇓3
tôi đoán 'biểu thị' là một giá trị cuối cùng, nhưng trong trường hợp nào thì 'bước tiến lớn' không nhất thiết phải ánh xạ trực tiếp đến điều đó? Sự khác biệt có liên quan đến bối cảnh, như (a + 1)
tùy thuộc vào môi trường có chứa a
?
3