2010-07-28 32 views
15

Nếu gần đây bạn đã xem Going Deep shows of the Channel9, một chủ đề được đề cập rất thường xuyên là mathematical duality trong lập trình. TomasP có số blog post tốt về tính hai mặt trong lập trình hướng đối tượng.Các cặp toán học nào có trong lập trình OO?

Điều này đã xảy ra kể từ khi Microsoft Research phát hiện ra rằng mẫu thiết kế quan sát thực sự là một toán kép của mẫu lặp. Kể từ đó, họ đã sử dụng khái niệm nhị nguyên trong various ways.

Câu hỏi của tôi là:

gì nhị nguyên toán học trong lập trình nào?

Lập trình hướng đối tượng là một khởi đầu tốt. Các mẫu thiết kế chính của GoF là: Decorator, State, Iterator, Facade, Strategy, Proxy, Factory Method, Adapter, Observer, Template Method, Composite, Singleton, Abstract Factory và Command. Here là một đối tượng-biểu đồ-áp phích tốt.

+2

Thú vị. Bạn không thấy nhiều cuộc thảo luận về lý thuyết danh mục trên SO. Có thể có một lý do cho điều đó ... ;-) –

+1

Tôi biết tôi đã chạy qua chúng, nhưng không thể nghĩ ra bất kỳ chi tiết cụ thể nào. Tôi nghi ngờ có một sự phân biệt giữa các đối tượng và các chức năng (không chỉ các đối tượng và các sự kiện). – phkahler

+0

Câu hỏi hay - Tôi mong đợi một số câu trả lời tiện lợi –

Trả lời

1

Không chắc chắn nếu đó là hoàn toàn những gì bạn đang tìm kiếm, vì nó là FP nhiều hơn OO, nhưng tất nhiên là có Curry-Howard Correspondance (a.k.a. Curry-Howard Isomorphism) "equates" chương trình với bằng chứng và các loại với công thức.

+0

Không phải Curry-Howard là một đẳng cấu hơn là một chủ nghĩa nhị nguyên? –

+0

Xin lỗi, tôi đã không nhận thức được ý nghĩa chính thức của chủ nghĩa nhị nguyên, và thực tế là Curry-Howard đi theo hai cái tên khác nhau làm rối tung mọi thứ. – pdbartlett

2

Tôi muốn nói nhị nguyên chính trong lập trình là nhị phân mã-dữ liệu, được phơi bày rõ ràng nhất trong Lisp, nhưng cũng rõ ràng trong hầu hết các ngôn ngữ hiện đại cung cấp chức năng nội tâm.

1

Bạn có thể lập luận rằng tính hai mặt của người quan sát/vòng lặp là (loại, làm việc với tôi ở đây :-)). Trước đây, các đối tượng chuyên dụng hơn sử dụng chức năng cơ sở (chỉ lên) để kế thừa các khả năng chung và trong các đối tượng tổng quát hơn, sử dụng ủy nhiệm để truy cập nhiều chức năng chuyên dụng hơn (điểm xuống/ra). thiết kế có thể được thể hiện bằng một trong hai hình thức, và kể từ khi sự bất hòa giữa hình thức là (hợp lý) rigourous và xác định, tôi muốn nói rằng nó có thể được phân loại như một kép

Xem Treaty of Orlando 2 để biết thêm

1

tôi nghĩ về đối tượng và đóng cửa/các chức năng ẩn danh dưới dạng kép.

Đối tượng là một loạt dữ liệu, với một tập hợp các thói quen được "đính kèm" với nó (tức là các phương pháp của nó).

Kết thúc, theo ý nghĩa lập trình chức năng của từ, là một tham chiếu (có thể gọi) đến một hàm, với một bộ dữ liệu đính kèm (dưới dạng các biến tự do ràng buộc của nó).

Các vấn đề liên quan