Những loại lập trình yêu cầu lý thuyết thể loại thực tế?


8

Lý thuyết phạm trù có ứng dụng trong khoa học máy tính lý thuyết và rõ ràng là trung tâm của toán học trừu tượng. Tôi đã nghe nói rằng nó cũng có các ứng dụng thực tế trực tiếp trong lập trình và phát triển phần mềm.

Những loại lập trình là lý thuyết thể loại thực tế cần thiết cho? Lập trình viên sử dụng lý thuyết thể loại để làm gì?

Xin lưu ý việc tôi sử dụng "cần thiết" và "yêu cầu" trong bài viết này. Tôi nhận ra rằng ở một khía cạnh nào đó, hầu hết các lập trình viên sẽ được hưởng lợi từ việc có kinh nghiệm trong các loại lý thuyết khác nhau, nhưng tôi đang tìm kiếm các ứng dụng trực tiếp trong đó việc sử dụng lý thuyết danh mục là điều cần thiết, tức là nếu bạn không biết lý thuyết thể loại, có lẽ bạn không thể làm đi.

Ngoài ra, tôi muốn làm rõ rằng bằng "loại lập trình nào", tôi hy vọng ít hơn cho một câu trả lời rộng như "lập trình chức năng" và nhiều hơn cho các ứng dụng cụ thể như "viết phần mềm ngân hàng" hoặc "tạo hệ điều hành".


2
Tôi nghĩ rằng một trong những cách giải thích tốt nhất (nhưng không dễ nếu bạn chưa quen với FP) về lý do tại sao tư duy lý thuyết trong lập trình lại có lợi rất cao là stackoverflow.com/questions/16015020/ .:
Erik Kaplun

2
Đây là một đoạn trích hay: "[...] chỉ là một mô hình phổ biến trong toán học đã được" đưa ra ", giống như chúng ta làm với mã. Mọi người nhận thấy rằng cả một loạt những điều thú vị đã ngăn chặn các đơn sắc, nhóm, mạng và đã nói ở trên Vì vậy, trên tất cả các mô hình tương tự như vậy, vì vậy họ đã trừu tượng hóa nó. Ưu điểm của việc này giống như trong lập trình: nó tạo ra các bằng chứng có thể tái sử dụng và làm cho một số loại lý luận dễ dàng hơn. "
Erik Kaplun

"Mềm", và khái niệm. Tôi không muốn bỏ phiếu để tự đóng câu hỏi, vì tôi thích nó, nhưng nếu bạn muốn, vâng, bạn có thể gắn cờ cho việc di chuyển. Có lẽ dễ dàng hơn để xóa nó và hỏi về lập trình viên, mặc dù.
Michael Petrotta

1
@MichaelPetrotta Tôi sẽ gắn cờ để nhận xét của Erik không bị mất.

Câu trả lời:


3

Câu hỏi là hỏi về một khái niệm toán học trừu tượng (lý thuyết thể loại) trong khi hy vọng cho một câu trả lời rất thực tế (các ứng dụng cụ thể). Với tất cả sự tôn trọng, tôi nghĩ rằng đây là kỳ vọng không thực tế.

Các khái niệm toán học trừu tượng là một phần của các nguyên tắc cơ bản của ngôn ngữ lập trình, không phải ứng dụng. Ví dụ, các loại dữ liệu là trung tâm để lập trình. Mỗi ngôn ngữ có một số dạng dữ liệu và thực hiện một hệ thống loại - cho dù là tĩnh hay động, mạnh hay yếu, rõ ràng hay ẩn, v.v. Tuy nhiên, không có tiêu chuẩn nào.

Do đó, nhiều nhà khoa học máy tính đã cố gắng sử dụng lý thuyết thể loại để xác định một hệ thống loại thống nhất . Ví dụ, hãy xem Ngôn ngữ lập trình phân loại của Hagino (1987) và từ thiện (1996), sau đó ML (2003) và CAML, và Haskell , tất nhiên, định nghĩa một loại "Haskell" và các hàm Haskell là hình thái trên các loại ...

Đây là trường hợp bởi vì lý thuyết loại có liên quan chặt chẽ với lý thuyết thể loại . Để trích dẫn JL Bell: "Bản thân các danh mục có thể được xem là lý thuyết loại của một loại nào đó ... Vì vậy, lý thuyết loại có liên quan chặt chẽ hơn nhiều với lý thuyết thể loại so với lý thuyết ... Nói một cách đơn giản, một thể loại có thể được nghĩ đến như một lý thuyết kiểu loại bỏ cú pháp của nó. " Nó đã được chứng minh rằng, ví dụ, danh mục đóng Descartes tương ứng với đánh máy λ-calculus và C-monoids tương ứng với untyped λ-calculus ...

Tôi không nghĩ rằng lý thuyết danh mục là cần thiết cho bất kỳ loại lập trình nào, nhưng nó là một công cụ rất hữu ích trong việc thiết kế và thực hiện các ngôn ngữ lập trình, và đặc biệt. những cái vốn là toán học. Đó là lý do tại sao Lập trình chức năng thường được trích dẫn là một chương trình phân loại và tất cả các ngôn ngữ lập trình được đề cập ở trên là ngôn ngữ FP.

Một giới thiệu được đề xuất cho chủ đề này là " Hương vị của lý thuyết thể loại cho các nhà khoa học máy tính " của BC Pierce (1988). Thông tin này và thông tin hữu ích khác đã được tìm thấy trong một cuộc thảo luận tương tự trên mathoverflow .


"Với tất cả sự tôn trọng, tôi nghĩ rằng đây là kỳ vọng không thực tế.": Tại sao? Có những ví dụ khác về các ứng dụng rất thực tế của các khái niệm toán học trừu tượng, ví dụ như về mật mã trong ngân hàng trực tuyến.
Giorgio

1
Mật mã học không phải là một khái niệm toán học trừu tượng. Điều đó rất cụ thể: ngăn chặn một số người hiểu thông tin liên lạc của bạn với người khác.
thỉnh thoảng

-2

Nó giống như chế độ org cho các ngân hàng.

Tôi nhận ra điều đó mơ hồ nhưng bạn đã nói rằng bạn muốn có một câu trả lời thiết thực ..

Các danh mục là tất cả về tính đối ngẫu (hoặc ít nhất đó là cách tôi nhìn thấy) vì tiên đề của sự lựa chọn, vì vậy cá nhân tôi nói rằng đó là một cách ngớ ngẩn để tạo ra một hệ thống loại thống nhất mặc dù chính nó là một loại (ví dụ của một loại) về cơ bản là một thể loại.

Đơn giản là gõ lambda tính toán không có hệ thống loại tiên đề, đó là lý do tại sao chúng được cho là nền tảng cho lý thuyết loại. Điều này khác với tính toán lambda sử dụng một hệ thống loại thích hợp.

Đơn giản chỉ cần gõ tính toán lambda bình thường hóa mạnh mẽ và mặc dù các loại kết hợp khá nhàm chán, logic là âm thanh.

Ngoài ra tính toán lambda vô hạn / phụ thuộc (hoặc hoàn toàn gõ) không bình thường hóa đúng vì nó có một loại cho tất cả các loại, về cơ bản là một hệ thống loại mã hóa nhà thờ.

Thể loại có ở khắp mọi nơi nhưng về bản chất hầu như không thể nhìn thấy ngay lập tức.


1
"Nó giống như chế độ org cho các ngân hàng." Tôi cười thầm, nhưng tôi không hiểu.
tóm tắt
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.