Sự khác biệt giữa chiến lược giảm và chiến lược đánh giá là gì?


10

Từ bài viết chiến lược đánh giá trên Wikipedia:

Khái niệm chiến lược giảm trong tính toán lambda là tương tự nhưng khác biệt.

Từ bài viết chiến lược rút gọn trên Wikipedia:

Nó tương tự nhưng khác biệt tinh tế với khái niệm chiến lược đánh giá trong khoa học máy tính.

Sự khác biệt tinh tế giữa chiến lược đánh giá và chiến lược giảm mà hai bài viết này gợi ý là gì? Có phải họ chỉ là hai khái niệm tương tự từ các lĩnh vực khác nhau?


3
Đánh giá chỉ được xác định cho các điều khoản đóng và không đi theo các ràng buộc. Giảm được phép đi theo chất kết dính và do đó được xác định cho các điều khoản mở.
Neel Krishnaswami

Câu trả lời:


8

Chiến lược rút gọn là một chức năng trên Lambda chọn một redex (biểu thức rút gọn) từ tất cả các redexes có thể - tùy thuộc vào những gì bạn xác định là redex.

Một cách không chính thức, một chiến lược đánh giá là thứ tự mà một ngôn ngữ đánh giá các lập luận của nó. Chiến lược truyền tham số là những gì ngôn ngữ trao cho hàm.

Để hiểu mối liên hệ giữa những điều này, hãy nghiên cứu bài viết của Plotkin về Call-by-name, call-by-value và phép tính lambda. Ông nói rõ rằng bạn muốn chọn AXIOMS ​​riêng biệt tùy thuộc vào thứ tự đánh giá mà bạn muốn. Đối với tên Cb, bạn muốn có tiên đề beta cũ và đối với giá trị cb, bạn muốn có một tiên đề giá trị beta. Nếu bạn làm điều đó, tất cả các định lý meta đều hoạt động giống nhau cho cả hai hương vị. Sau này tôi đã chỉ ra (với nhiều cộng tác viên) rằng ý tưởng này khái quát cho mọi thứ mà thế giới PL đã nghiên cứu.

Đó là tất cả các kỹ thuật, không phải là một số bài thơ có thể được giải thích. Chỉ cần đọc lên trên nó.

- Matthias Felleisen

ps Tôi sẽ nói rằng tôi nghĩ mọi người sẽ dễ hiểu hơn về bài viết của Plotkin từ Phần I trong cuốn sách Redex của chúng tôi. Nhưng vâng, nó dài gấp 3 lần.



Để điều chỉnh lại, bạn có nói đúng không khi nói rằng chiến lược rút gọn hoàn toàn quyết định thành công cho một thuật ngữ, trong khi chiến lược đánh giá chỉ xác định mức độ trừu tượng được áp dụng giảm (không nói gì về đồng quy, nói)?
Guido

6

Bài viết wikipedia "Chiến lược giảm" hoàn toàn được trích xuất từ một chỉnh sửa cụ thể được thực hiện bởi một IP ẩn danh cho bài viết "Chiến lược đánh giá".

Quan điểm mà nó thể hiện không đồng thuận, theo nghĩa là tôi nghi ngờ tương đối ít người trong lĩnh vực sẽ tự nhiên đưa ra câu trả lời này nếu bạn hỏi họ "bạn có phân biệt chiến lược giảm tên 'và' chiến lược đánh giá 'không?". Tôi mới chỉ nghe nó từ Matthias Felleisen, người rất kiên định về tầm quan trọng của sự khác biệt này - và tôi cho rằng quan điểm này được chia sẻ bởi những người khác có cơ hội dành thời gian để thảo luận chi tiết về những điểm này với anh ta.

Sự hiểu biết hiện tại của tôi về điểm này (nhưng tôi chưa nghiên cứu chi tiết kỹ thuật cho công lý đầy đủ của họ) là về vấn đề sau: đây là về việc bạn sử dụng ngữ nghĩa "bước lớn" so với "bước nhỏ" - sự khác biệt này là tiêu chuẩn và được hiểu bởi tất cả mọi người trong lĩnh vực này. Ngữ nghĩa bước nhỏ xác định một bước giảm nguyên tử, và kết quả nói chung vẫn có thể giảm. Ngữ nghĩa bước lớn xác định một bước giảm "lớn" đi suốt từ chương trình bắt đầu đến giá trị của nó (hoặc một số loại "câu trả lời" phong phú hơn nếu ngôn ngữ của bạn có các hiệu ứng có thể quan sát khác hơn là trả về một giá trị, ví dụ: đầu vào / đầu ra hoặc trạng thái đột biến).

Nếu bạn xác định cả mối quan hệ bước lớn và bước nhỏ, bạn có thể kiểm tra xem ngữ nghĩa bước lớn có được bao gồm trong việc đóng tạm thời của mối quan hệ bước nhỏ hay không và mối quan hệ bước nhỏ không làm giảm các điều khoản bị mắc kẹt khác những người đạt được bởi mối quan hệ bước lớn, hoặc phân kỳ nếu giảm bước lớn được xác định. Đây là mối quan hệ gắn kết dự kiến ​​giữa cả hai.

Tôi nghĩ rằng từ ngữ của bài viết có thể được mô tả ít nhiều , theo thuật ngữ hiện đại, vì "chiến lược đánh giá là mối quan hệ bước lớn", "chiến lược rút gọn là mối quan hệ bước nhỏ". Xin lưu ý rằng các cuộc thảo luận trong bài viết "Chiến lược giảm thiểu" chủ yếu là về các bài báo và nghiên cứu (và quan trọng hơn là các quan điểm hùng hồn được hình thành trong quá trình đọc và viết của họ) giữa năm 1973 và 1991, tại thời điểm những khái niệm đó được sinh ra, và có lẽ không được hiểu rõ như ngày nay. (ngữ nghĩa bước lớn đã được Kahn nhấn mạnh vào năm 1987, và một trong những tác phẩm quan trọng nhất về ngữ nghĩa bước nhỏ là Wright và Felleisen, 1992)

Đối với khía cạnh được quan tâm nhiều hơn về lý do tại sao Felleisen nhấn mạnh về tầm quan trọng của sự khác biệt này (đó là lý do tại sao có thể có nhiều điều hơn là chỉ "bước nhỏ so với bước lớn, meh"), cách hiểu hiện tại của tôi là như sau: điểm đang được thực hiện là ngữ nghĩa bước nhỏ nên được xem như là một chi tiết thực hiện. Cácngữ nghĩa, theo lập luận này, là hàm trừu tượng ánh xạ mỗi chương trình tới giá trị / câu trả lời của nó và phần còn lại là các thiết bị triển khai được thiết kế để ước tính nó (hoặc lý do về sự tương đương do ngữ nghĩa này gây ra). Khi chúng ta nói bước tiến lớn ngày hôm nay, chúng ta nghĩ về một hệ thống các quy tắc suy luận có tính chất cú pháp, nhưng "chiến lược rút gọn" đang được thảo luận ở trên thực tế là sự trừu tượng hóa của nó như là một ánh xạ. (Tôi không nghĩ rằng điều này mang lại nhiều biểu cảm hoặc sức mạnh hơn cho khái niệm trong thực tế, nhưng nó làm cho nó trừu tượng hơn.)

Vì vậy, tôi nghĩ rằng những gì trang wikipedia này và Matthias Felleisen đang nói là một cái gì đó như: "Xác định đánh giá của bạn theo bất cứ cách nào bạn thích, nhưng cuối cùng, điều quan trọng là cách các chương trình của bạn được ánh xạ tới các giá trị của chúng / câu trả lời / hành vi, và đây là những gì nên được gọi là "ngữ nghĩa hoạt động" và lý do. ".

Lưu ý rằng vị trí này đi ngược lại với sự khác biệt hiện tại (mà tôi nghĩ là khá đồng thuận, nhưng nó có thể là một khuynh hướng văn hóa về phía tôi) giữa "ngữ nghĩa hoạt động" và "ngữ nghĩa biểu thị", trong đó trước đây được coi là cú pháp hơn (được định nghĩa là quan hệ rút gọn) và sau này thường được đặc trưng bởi thực tế là các chương trình tương đương tính toán có cùng một ký hiệu chính xác (vì vậy ký hiệu này không biết gì về cơ chế tính toán thực tế). Theo quan điểm thứ hai này, những gì được đề xuất như một "chiến lược đánh giá" hoặc "ngữ nghĩa hoạt động" trong các bài viết và lời giải thích của tôi ở trên sẽ được coi là một ngữ nghĩa học biểu thị - nhưng phải thừa nhận có tính chất cụ thể hơn hầu hết: giá trị / câu trả lời / các hành vi gần với các đối tượng cú pháp hơn nhiều miền ngữ nghĩa.

Tài liệu tham khảo: để hiểu quan điểm này, có lẽ rất hữu ích khi quay lại nguồn được công bố của nó, đó là bài viết của Gordon Plotkin vào năm 1973. Bạn cũng có thể may mắn thử một trong những bài viết sau được trích dẫn trên wikipedia; Ví dụ, tôi thấy rằng "Thông số truyền và tính toán Lambda" của Crank và Felleisen, 1991, đã đưa ra một cái nhìn tổng quan rất rõ ràng về vị trí của họ về vấn đề này trong vài trang đầu tiên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.