คำขออ้างอิง: ทฤษฎีหมวดหมู่ตามที่ใช้กับระบบการพิมพ์


13

ฉันคอยฟังว่าจะต้องเรียนรู้ทฤษฎีหมวดหมู่อย่างไรเพื่อให้เข้าใจทฤษฎีภาษาโปรแกรมอย่างแท้จริง จนถึงตอนนี้ฉันได้เรียนรู้ PL จำนวนมากโดยไม่ต้องก้าวเข้าสู่หมวดหมู่ อย่างไรก็ตามฉันคิดว่ามันเป็นเวลาที่จะก้าวกระโดดเพื่อดูสิ่งที่ฉันได้หายไป

น่าเสียดายที่ไม่มีแหล่งข้อมูลใดที่ฉันสามารถค้นหาได้ทำการเชื่อมต่อกับระบบประเภทหรือการเขียนโปรแกรม พวกเขาบอกว่าเป็นการแนะนำทฤษฎีหมวดหมู่สำหรับนักวิทยาศาสตร์คอมพิวเตอร์ แต่หลังจากนั้นก็เปลี่ยนไปเป็นเรื่องไร้สาระทั่วไป

ฉันเดาคำถามของฉันเป็นสองเท่าจริง:

  1. ทฤษฎีหมวดหมู่จำเป็นสำหรับการทำความเข้าใจ "แนวคิดที่ลึกซึ้ง" ใน PL หรือไม่?
  2. แหล่งที่มาที่อธิบายทฤษฎีหมวดหมู่จากมุมมองของแอปพลิเคชันเชิงปฏิบัติเพื่อพิมพ์ระบบและการเขียนโปรแกรมคืออะไร

จนถึงตอนนี้สิ่งที่ไกลที่สุดที่ฉันได้รับคือความคิดที่คลุมเครือของ functors (ซึ่งดูเหมือนจะไม่เกี่ยวข้องกับ functors ใน ML เท่าที่ฉันจะบอกได้) ฉันกลัวสิ่งที่เป็นนามธรรมฉันจะต้องเก็บไว้ในหัวของฉันที่จะเข้าใจพระจากมุมมองตามทฤษฎีหมวดหมู่


2
@ ราฟาเอลมันเป็นความคิดที่ดีที่จะถามคำถามซึ่งประกอบด้วยคำถามที่แตกต่างกันสองคำถามเท่านั้นที่เกี่ยวข้องกันอย่างคลุมเครือ แต่คำถามที่ 1 ไม่ใช่เรื่องส่วนตัว มันค่อนข้างจะขอคำชี้แจงและคำอธิบาย ฉันเดาคำถามที่ 2 มีความหมายในแง่ที่ว่าเขามีความสุขกับการอ้างอิงถึงสถานที่ที่มีการอธิบายแทนคำอธิบายที่เกิดขึ้นจริงเช่นกัน
Thomas Klimpel

2
ในอนาคตควรถามคำถามเพียงหนึ่งคำถามต่อโพสต์ คุณสามารถถามคำถาม 1 จากนั้นขึ้นอยู่กับคำตอบที่คุณได้รับตัดสินใจว่าจะถามคำถาม 2 แยกจากกันหรือไม่ มักทำให้สิ่งต่าง ๆ ราบรื่นขึ้น
DW

1
@Raphael คำถามหนึ่งอัตนัยเป็นอย่างไร มันอาจจะยากที่จะตัดสิน - นั่นคือสิ่งที่คุณหมายถึงอะไร? และอาจมีคำตอบว่า“ ขึ้นอยู่กับว่าคุณเป็นคนแบบไหน” - นั่นคือสิ่งที่คุณหมายถึงอะไร ก็ยังอาจเปิดออกว่ามันแน่นอนที่สำคัญหรือแน่นอนไม่สำคัญใช่มั้ย? (และผู้คนดูเหมือนจะยอมรับว่ามันไม่จำเป็น)
k.stm

1
@ k.stm คำถามทั่วไปทำให้ฉันกังวล ถ้ามีใครซักคนถามว่า "พีชคณิตมีความสำคัญต่อการทำความเข้าใจแนวคิดเชิงลึกของภาษาทางการหรือไม่" ฉันรู้ด้วยความจริงที่ว่าผู้คนที่แตกต่างกันจะให้คำตอบที่ต่างกัน - ขึ้นอยู่กับความชอบและรสนิยมของพวกเขา ฉันไม่คิดว่ามันจะแตกต่างจากที่นี่
กราฟิลส์

1
@ ราฟาเอลเอาล่ะฉันเข้าใจแล้ว แต่ฉันคิดว่าเป็นคนที่ให้คำตอบกับคำถามเชิงอัตวิสัย (รู้สึกเหมือนมีคนพูดว่า“ โอ้ฉันดื่มห้าถ้วยต่อวันและฉันรู้สึกดีมาก!” เมื่อถูกถามว่ากาแฟมีสุขภาพดีหรือไม่)
k.stm

คำตอบ:


15

ทฤษฎีหมวดหมู่ไม่จำเป็นต้องเข้าใจภาษาโปรแกรม แต่ก็ไม่จำเป็นที่จะต้องทำการวิจัยขั้นสูงเกี่ยวกับภาษาโปรแกรม คนภาษาโปรแกรมส่วนใหญ่ไม่รู้ทฤษฎีหมวดหมู่ (มาก)

หมวดหมู่วิธีการทางทฤษฎีมีประโยชน์ส่วนใหญ่ในส่วนเล็ก ๆ ของการวิจัยภาษาการเขียนโปรแกรมกล่าวคือในการวิเคราะห์การเขียนโปรแกรมการทำงานโดยเฉพาะอย่างยิ่งตั้งแต่การค้นพบที่ยิ่งใหญ่ของ Moggi ว่าผลการคำนวณบางอย่างมีโครงสร้าง monadic ในปี 1990 หลังจากการพัฒนาของ Moggi มีการวิจัยจำนวนมากเพื่อขยายวิธีการจัดหมวดหมู่ให้เป็นภาษาโปรแกรมรูปแบบอื่น ๆ อย่างไรก็ตามสำหรับวิธีการจัดหมวดหมู่ความรู้ที่ดีที่สุดของฉันยังไม่พบสิ่งที่มีประโยชน์สำหรับ OO, การคำนวณแบบขนาน, แบบขนานและแบบกระจาย, การคำนวณแบบกำหนดเวลาหรือคอมไพเลอร์ ด้วยเหตุนี้ผู้คนส่วนใหญ่จึงละทิ้งวิธีการขยายอย่างแน่ชัด

วิธีการแบ่งหมวดหมู่เพื่อการโปรแกรมมิงพิมพ์นั้นทำงานได้ดีในฟังก์ชั่นแท้ อันที่จริงระบบการพิมพ์อย่างง่ายบางประเภทเป็นหมวดหมู่ เรื่องนี้อธิบายไว้ในเช่น

ขณะนี้มีงานหลายประเภทสำหรับกระบวนการที่เกิดขึ้นพร้อมกัน (เช่นประเภทเซสชัน) และไม่มีสิ่งใดที่จัดอยู่ในประเภทตามธรรมชาติในเดือนกันยายน 2016

ที่กล่าวว่าหนึ่งไม่สามารถรู้คณิตศาสตร์มากเกินไปและรู้ทฤษฎีหมวดมีประโยชน์ ดังนั้นจึงเป็นคำถามของต้นทุน / ผลประโยชน์ ถ้าคุณชอบคณิตศาสตร์ถ้าคุณมีพื้นฐานด้านพีชคณิตบ้าง (เช่นกลุ่มฟรีในชุดฟรีวงแหวน ฯลฯ ) การเรียนรู้ทฤษฎีหมวดหมู่จะง่ายและถ้าคุณวางแผนที่จะทำงานที่ได้รับแรงบันดาลใจจาก การเขียนโปรแกรมฟังก์ชั่นรู้หมวดหมู่จะเป็นประโยชน์

ในที่สุดทฤษฎีหมวดหมู่ก็คือคณิตศาสตร์ที่สวยงามและควรค่าแก่การศึกษาเพียงเพราะมันประณีตมาก


ดูการสนับสนุนของ Uday Reddy ในการสนทนานี้เพื่อมุมมองที่แตกต่าง


"อย่างไรก็ตามสำหรับวิธีการจัดหมวดหมู่ความรู้ที่ดีที่สุดของฉันยังไม่พบสิ่งที่มีประโยชน์สำหรับ ... " นั่นคือปัญหาของฉัน ความหมายในการดำเนินงานสามารถอธิบายแนวคิดเหล่านี้ได้อย่างแม่นยำดังนั้นฉันจึงไม่รู้สึกว่าฉันพลาดไป ฉันรักคณิตศาสตร์ แต่ภูมิหลังของฉันในพีชคณิตนามธรรมขาดไปอย่างน่าเศร้า ฉันเข้าใจพื้นฐานของโครงสร้างพีชคณิตทั่วไปเท่านั้น สิ่งนี้ทำให้ทฤษฎีหมวดหมู่ที่เข้าใจยากโดยเฉพาะอย่างยิ่ง
Gardenhead

2
@gardenhead แล้ว CT อาจไม่ใช่ทั้งหมดที่มีประโยชน์สำหรับคุณ หากคุณต้องการอ่านเอกสารจำนวนมากในพื้นที่ "ฟังก์ชั่นการเขียนโปรแกรม" รวมถึงการทำงานกับประเภทแล้วส่วนมากของพวกเขาจะใช้ภาษาของ CT
Martin Berger

อันนี้เป็นคู่กันหรือเปล่า
กราฟิลส์

2
ฉันขอแนะนำหนังสือcs.unibo.it/~asperti/PAPERS/book.pdfนอกจากนี้"หมวดหมู่ประเภทและโครงสร้าง" ซึ่งเห็นได้ชัดว่าล้าสมัยแต่เป็นลิงก์ไปยัง PDF จากหนึ่งใน หน้าแรกของผู้เขียนดังนั้นฉันเดาว่ามันถูกต้อง
John Forkosh

6

ทฤษฎีหมวดการเรียนรู้เป็นการลงทุนครั้งใหญ่และคำถามที่ว่ามันคุ้มค่าหรือไม่นั้นถูกต้องมาก ฉันยังคงต่อสู้กับสิ่งนี้เช่นกันและฉันรู้อยู่แล้วว่าทำไมฉันจึงควรเรียนรู้ ฉันเขียน:

ฉันชอบภาษาแอสเซมบลีเมื่อฉันเริ่มโปรแกรมและทฤษฎีเซตรู้สึกคล้ายกับภาษาแอสเซมบลี ทฤษฎีหมวดหมู่เป็นอีกทางเลือกหนึ่งในการหลีกเลี่ยงอคติทั้งหมดที่เกี่ยวกับตรรกะและทฤษฎีแบบจำลองที่ฝังอยู่ในทฤษฎีเซต ZFC หลัก

ความคิดที่นี่คือการใช้หมวดหมู่แทนชุดหรือ "บิตที่ไม่ระบุ" เป็นความหมายที่เป็นไปได้สำหรับทฤษฎีประเภทหรือภาษาการเขียนโปรแกรมที่กำหนด ทำไมคนเราควรทำเช่นนี้? พิจารณาความเป็นคู่ระหว่างการกระทำและการสังเกต การสังเกตที่แตกต่างกัน (หรืออย่างน้อยก็ในเวลา) ไม่รบกวนซึ่งกันและกัน (นอกกลศาสตร์ควอนตัม) แต่สิ่งนี้ไม่จำเป็นสำหรับการกระทำที่แตกต่างกัน อคติเกี่ยวกับตรรกะที่ฝังกลบในทฤษฎีเซตทำให้ยากต่อการกระทำแบบจำลองเปรียบเทียบกับแบบจำลองการสังเกตการณ์


ฉันไม่มั่นใจว่ามีการติดต่อที่สมบูรณ์แบบระหว่างทฤษฎีหมวดหมู่และทฤษฎีประเภทเหมือนที่อ้างสิทธิ์ที่นี่ :

โดยความหมายของคู่ - ซินแท็คซ์ซินแท็คซ์อาจดูทฤษฎีประเภทที่เป็นทางการหรือภาษาแคลคูลัสสำหรับประเภททฤษฎีวากยสัมพันธ์และในทางกลับกันคนหนึ่งอาจคิดว่าทฤษฎีประเภทที่ให้ความหมายสำหรับทฤษฎีประเภท

มันเป็นความจริงที่หมวดหมู่ทฤษฎีสามารถให้ความหมายสำหรับทฤษฎีประเภท (ซึ่งมีประโยชน์จริง ๆ ) แต่ฉันสงสัยว่าทฤษฎีประเภทให้จริง ๆ แล้วเป็นภาษา syntactic ทางการทรงพลังเพียงพอที่จะแสดงการคำนวณทั้งหมดในทฤษฎีหมวดหมู่


ในทางปฏิบัติประโยชน์ของทฤษฎีหมวดหมู่สามารถเกิดขึ้นได้โดยการแนะนำคำถามที่มีประโยชน์และการเปรียบเทียบ แต่ทฤษฎีหมวดหมู่ยังสามารถแนะนำกิจกรรมและคำถามที่ท้ายที่สุดกลายเป็นเพียงสิ่งที่ทำให้ไขว้เขว (เสียเวลา) จากประเด็นที่สำคัญจริงๆ และแน่นอนคุณสามารถเรียนรู้ตรรกะและทฤษฎีประเภทโดยไม่ต้องกังวลเกี่ยวกับทฤษฎีหมวดหมู่


ขอบคุณสำหรับความคิดของคุณ เหตุผลในการเรียนรู้ทฤษฎีหมวดหมู่ของคุณดูเหมือนจะแตกต่างจากของฉัน คุณสนใจมาจากมุมมองทางคณิตศาสตร์ที่บริสุทธิ์ในขณะที่ฉันต้องการขยายความเข้าใจประเภท ถึงกระนั้นก็ดีที่รู้ว่าคนอื่นขอตัวเองพบหมวดหมู่ยากที่จะเข้าใกล้และใช้
Gardenhead
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.