Tại sao kỳ hạn viết lại?


12

Tôi đã thực hiện một chút về google và đã đưa ra một chút ngắn.

Tôi tự hỏi những lý do chính cho các nhà khoa học máy tính, lập trình viên, để nghiên cứu viết lại thuật ngữ, và / hoặc viết lại biểu đồ thuật ngữ.

Theo như tôi có thể nói, nó chỉ giúp cho lý luận cơ bản về các chương trình chức năng và điều khiển chương trình (bắt buộc). Rõ ràng, nó là một chủ đề rất được quan tâm đối với các nhà logic học và những người nghiên cứu các đại số trừu tượng mang tính xây dựng.

Bất kỳ trợ giúp sẽ được đánh giá cao nhất!

Câu trả lời:


11

Tôi không chắc chắn rằng điều này sẽ mang lại cho bạn nhiều hơn bạn đã biết. Nhưng sau đó, tôi có thể không hiểu lý do khiến bạn băn khoăn về việc viết lại thuật ngữ. Nó giúp.

Như bạn có thể biết, ngữ pháp là các hệ thống viết lại chuỗi. Ở đầu phân cấp Chomsky, bạn có loại 0 ngữ pháp, xác định các khoảng cách đệ quy (RE) đệ quy và có sức mạnh tính toán của các máy Turing.

Vì vậy, điều đó cho bạn biết rằng các hệ thống viết lại nói chung có rất nhiều việc phải làm với việc thể hiện các thuật toán.

Vấn đề với các chuỗi nói chung là không có cách rõ ràng để gắn ngữ nghĩa với chúng. Nó là một loại viết lại vô định hình.

Điều mọi người thường quan tâm là thể hiện các thuật toán trong các lĩnh vực cụ thể có cấu trúc và thuộc tính. Các miền như vậy thường được xác định từ các thực thể cơ bản (nguyên tử) và được đóng bởi các hoạt động khác nhau, có thể được xác định bởi các mối quan hệ tương đương, v.v. Chúng thường được gọi là đại số.

Những miền này thường trừu tượng. Nhưng tính toán trên các yếu tố của chúng chỉ có thể được thể hiện trên các biểu diễn cụ thể. Các thuật ngữ là sự phản hồi tự nhiên của các yếu tố này vì chúng thể hiện cách các yếu tố có thể thu được cho các yếu tố khác bằng cách áp dụng các hoạt động, các yếu tố nguyên tử xuống cấp đệ quy (mặc dù các đặc tính chung không phải luôn luôn đi xuống). Các thuật ngữ là một loại cú pháp cấu trúc cây có thể được thao tác để thể hiện các thuật toán (như đối với chuỗi). Nhưng cấu trúc toán hạng toán tử cũng cho phép liên kết với chúng về ngữ nghĩa trong một số miền trừu tượng bằng phương pháp đồng cấu.

Thay vì có cái nhìn rất chính thức về wikipedia và nhiều văn bản về chủ đề này, chỉ cần xem xét các chương trình. Người ta thường nhận ra rằng một biểu diễn cú pháp thuận tiện của các chương trình là cái được gọi là Cây cú pháp trừu tượng (AST). Nhưng AST chỉ là một thuật ngữ để đại diện cho một đối tượng chương trình. Ngữ nghĩa học là một cách xác định các miền trừu tượng và liên kết các giá trị từ các miền này với AST (hoặc các cây con AST) bằng phương pháp đồng cấu. Các chương trình ở dạng AST có thể được chuyển đổi hoặc tối ưu hóa bằng cách áp dụng các quy tắc viết lại (Tôi không khẳng định rằng tất cả các tối ưu hóa có thể hoặc nên được thực hiện theo cách đó).

Chuyển đổi các biểu thức đại số cho các mục đích khác nhau có thể được thể hiện bằng cách viết lại thuật ngữ. Ví dụ, đơn giản hóa một số biểu thức. Các loại tính toán khác nhau cũng có thể được thể hiện một cách tự nhiên như viết lại thuật ngữ, chẳng hạn như tính toán của các công cụ phái sinh. Viết lại thuật ngữ đôi khi cũng được sử dụng để xác định các dạng chính tắc trong đại số, khi cùng một thực thể ngữ nghĩa có thể có một số biểu diễn cú pháp.

Tôi khuyên bạn nên xem bài viết trên wikipedia về chủ đề này .


6

Tôi nghĩ rằng, đó là bởi vì Viết lại thuật ngữ là một thứ gì đó cực kỳ cơ bản và cho phép bạn mô tả mọi thứ theo một cách cực kỳ thấp, không phụ thuộc vào bất kỳ phần cứng nào.

Viết lại thuật ngữ có thể mô tả ngữ pháp, nhưng nó cũng cung cấp cho bạn cơ chế để mô tả các hệ thống logic, như logic thứ tự đầu tiên, v.v. Chứng minh và suy luận có thể được viết dưới dạng các thuật ngữ. Sau đó, việc thay thế viết lại thuật ngữ thực sự là hoạt động duy nhất bạn có. Sự đơn giản ở đây rất có giá trị vì bạn đang mô tả logic, vì vậy bạn không thể sử dụng toàn bộ độ phức tạp của logic để mô tả hệ thống của mình (vì đó là hệ thống mà bạn đang cố gắng mô tả).

Điều này sau đó cung cấp cho bạn các cơ chế bạn cần nói về phép tính lambda như một hệ thống logic / tiên đề, cung cấp cho bạn một phiên bản tính toán cơ bản, cực kỳ chính thức.

Máy Turing rất hữu ích, nhưng các định nghĩa cơ bản của chúng đòi hỏi bạn phải có khái niệm về tập hợp, hàm, v.v. Có rất nhiều phép toán được cho là đã được xây dựng.

Mặt khác, tính toán Lambda được định nghĩa theo logic, vì vậy bạn có thể sử dụng nó mà không cần nhiều cách định nghĩa cho lý thuyết tập hợp, hàm, v.v.

Viết lại thuật ngữ, được mô hình hóa bằng logic, không chỉ áp dụng cho lập trình chức năng. Khi bạn đang xác minh chính thức phần cứng hoặc phần mềm, bạn sẽ luôn đưa ra lý do nào đó và lý do này có thể được mô hình hóa bằng cách viết lại thuật ngữ.


2

Một lý do rất thực tế là nó dẫn đến việc xây dựng các hệ thống chuyển đổi chương trình , các công cụ cho phép người ta thao tác mã cho các chương trình dưới dạng các thuật ngữ (cây cú pháp trừu tượng) bằng cách viết lại cú pháp bề mặt.

Một ví dụ về hệ thống này của tôi, Bộ công cụ tái cấu trúc phần mềm DMS , đã được sử dụng cho nhiều phân tích chương trình và các nhiệm vụ chuyển đổi lớn. Bạn có thể thấy DMS diễn tả như thế nào . Những cách viết này được áp dụng bởi một hệ thống viết lại thuật ngữ kết hợp giao hoán hoạt động đằng sau hậu trường.

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.