แลมบ์ดาแคลคูลัสมีส่วนช่วยอะไรในด้านทฤษฎีการคำนวณ?


85

ฉันแค่อ่านแคลคูลัสแลมบ์ดาเพื่อ "ทำความรู้จัก" ฉันเห็นว่าเป็นรูปแบบอื่นของการคำนวณซึ่งต่างจาก Turing Machine มันเป็นวิธีที่น่าสนใจในการทำสิ่งต่าง ๆ ด้วยฟังก์ชั่น / การลด (การพูดหยาบ) บางคำถามที่จู้จี้มาที่ฉันว่า:

  • แคลคูลัสแลมบ์ดาคืออะไร? เหตุใดจึงต้องผ่านฟังก์ชั่น / การลดค่าเหล่านี้ทั้งหมด จุดประสงค์คืออะไร?
  • ด้วยเหตุนี้ฉันจึงสงสัยว่า: แลมด้าแคลคูลัสทำอะไรเพื่อพัฒนาทฤษฎีของ CS? มีส่วนร่วมอะไรบ้างที่จะทำให้ฉันมีช่วงเวลา "aha" ที่เข้าใจความต้องการการมีอยู่ของมัน
  • ทำไมแคลคูลัสแลมบ์ดาไม่ครอบคลุมในตำราเกี่ยวกับทฤษฎีออโตมาตะ? เส้นทางทั่วไปคือการผ่านออโตมาตาไวยากรณ์เครื่องทัวริงและคลาสที่ซับซ้อนมากมาย แลมบ์ดาแคลคูลัสจะรวมอยู่ในหลักสูตรสำหรับหลักสูตรสไตล์ SICP เท่านั้น (อาจไม่ใช่?) แต่ฉันไม่ค่อยเห็นว่ามันเป็นส่วนหนึ่งของหลักสูตรแกนกลางของ CS นี่แปลว่ามันมีค่าทั้งหมดใช่ไหม อาจจะไม่และฉันอาจจะหายไปบางสิ่งบางอย่างที่นี่?

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


6
ชุดคำตอบที่เกี่ยวข้องอธิบายความแตกต่างของพลังระหว่าง -calculus และ TMs : cstheory.stackexchange.com/questions/1117/…λ
Suresh Venkat


5
ในทางหนึ่งก็มีส่วนร่วมในการสร้างสนาม อย่าลืมว่าคริสตจักรมาพร้อมแคลคูลัสแลมบ์ดาก่อน แต่ในตอนแรกมันไม่ได้เป็นรูปแบบการคำนวณที่เป็นสากล
Dan Hulme

ในการศึกษาหลักของฉันฉันได้Functional Programmingพูดคุยกับ Haskell และ Lisp เล็กน้อย ตัวตายตัวแทนที่เคยPrinciples of Programming Languagesใช้ ML และแนะนำแคลคูลัสแลมบ์ดา ดังที่คำตอบบางข้อแสดงนั่นคือที่ซึ่งแคลคูลัสแลมบ์ดาอยู่: ในชั้นเรียนเกี่ยวกับภาษาการเขียนโปรแกรมการพิมพ์และอื่น ๆ
Shaz

คำถามนี้เป็นความสัมพันธ์ที่คล้ายกันระหว่าง TMs & แลมบ์ดาแคลคูลัสและยังกล่าวถึงความสำคัญทางประวัติศาสตร์ของแลมบ์ดาแลมบ์ดา
vzn

คำตอบ:


96

λ -calculus มีบทบาทสำคัญสองประการ

  • มันเป็นพื้นฐานทางคณิตศาสตร์อย่างง่ายของพฤติกรรมการคำนวณตามลำดับที่สูงขึ้น

  • มันเป็นตัวแทนของการพิสูจน์ในตรรกะเชิงสร้างสรรค์

นอกจากนี้ยังเป็นที่รู้จักกันเป็นแกงโฮเวิร์ดจดหมาย ร่วมกันมุมมองแบบคู่ของแคลคูลัสเป็นข้อพิสูจน์และเป็น (ลำดับ, การทำงาน, ลำดับสูงกว่า) ภาษาโปรแกรมเสริมสร้างความเข้มแข็งโดยความรู้สึกเกี่ยวกับพีชคณิตของ -calculus (ซึ่งไม่ได้ใช้ร่วมโดยเครื่องจักรทัวริง) มีขนาดใหญ่ การถ่ายทอดเทคโนโลยีระหว่างตรรกะพื้นฐานของคณิตศาสตร์และการเขียนโปรแกรม การโอนนี้ยังคงต่อเนื่องเช่นในประเภททฤษฎีฮอมอโท โดยเฉพาะอย่างยิ่งการพัฒนาภาษาการเขียนโปรแกรมโดยทั่วไปและการพิมพ์โดยเฉพาะอย่างยิ่งเป็นไปไม่ได้โดยไม่ต้อง λ λ λ λλλλ-แคลคูลัส. ภาษาโปรแกรมส่วนใหญ่เป็นหนี้หนี้ Lisp และ ML (เช่นการรวบรวมขยะถูกประดิษฐ์ขึ้นเพื่อ Lisp) ซึ่งเป็นทายาทโดยตรงของ -calculus สาระที่สองของงานรับอิทธิพลจากแคลคูลัสเป็น ผู้ช่วยหลักฐานการโต้ตอบλλ

เราต้องรู้จักแคลคูลัสเพื่อเป็นโปรแกรมเมอร์ที่มีความสามารถหรือแม้กระทั่งนักทฤษฎีวิทยาศาสตร์คอมพิวเตอร์หรือไม่? ไม่หากคุณไม่สนใจประเภทการตรวจสอบและภาษาการเขียนโปรแกรมที่มีคุณสมบัติการสั่งซื้อสูงกว่านั่นอาจเป็นรูปแบบการคำนวณที่ไม่ได้มีประโยชน์สำหรับคุณมากนัก โดยเฉพาะอย่างยิ่งหากคุณสนใจในทฤษฎีความซับซ้อนแล้ว -calculus อาจไม่ใช่โมเดลในอุดมคติเพราะขั้นตอนการลดขั้นพื้นฐานนั้นทรงพลัง: มันสามารถ ทำสำเนาตามอำเภอใจในดังนั้น λ ( λ x . M ) N เบต้า M [ N / x ] N บีตา λ λ M N M Nλλ

(λx.M)NβM[N/x]
Nβเป็นแนวคิดพื้นฐานที่ไม่สมจริงในการบัญชีสำหรับต้นทุนการคำนวณด้วยกล้องจุลทรรศน์ ฉันคิดว่านี่เป็นเหตุผลหลักที่ว่าทำไมทฤษฎี A ถึงไม่หลงรัก -calculus ตรงกันข้ามเครื่องจักรทัวริงไม่ได้สร้างแรงบันดาลใจชะมัดสำหรับการพัฒนาภาษาโปรแกรมเพราะไม่มีพัฒนาการตามธรรมชาติขององค์ประกอบเครื่องในขณะที่มีแคลคูลัสถ้าและเป็นโปรแกรมแล้วเพื่อให้เป็นMNมุมมองเชิงพีชคณิตของการคำนวณนี้เกี่ยวข้องกับภาษาการเขียนโปรแกรมที่ใช้ในทางปฏิบัติและการพัฒนาภาษาจำนวนมากสามารถเข้าใจได้ในการค้นหาและการสอบสวนผู้ประกอบการเขียนโปรแกรมนวนิยายλλMNMN

สำหรับภาพรวมสารานุกรมประวัติศาสตร์ของแคลคูลัสดูประวัติของแลมบ์ดาแคลคูลัสและ Logic Combinatory โดย Cardone และ Hindleyλ


8
นี่เป็นคำตอบที่ดีมาก
Suresh Venkat

9
ที่เกี่ยวข้องกับ "ความไม่สมจริง" ของ -reduction: Beniamino Accattoli และ Ugo Dal Lago เพิ่งพิสูจน์ผลลัพธ์ที่น่าประหลาดใจโดยระบุว่าจำนวนของ -steps สู่รูปแบบปกติในกลยุทธ์การลดมาตรฐานใด ๆ (เช่นซ้ายสุด - สุด) วัด. ซึ่งหมายความว่าแม้ว่าการใช้ -reduction ต่อ seจะมีราคาแพงการนับจำนวนการลดลงนั้นไม่ใช่การวัดความซับซ้อนที่ไม่สมจริง (ตัวอย่างเช่นมันจะไม่ส่งผลกระทบต่อคำจำกัดความของ class ) บีตาบีตาPβββP
Damiano Mazza

5
@DamianoMazza เนื่องจากเป็นผลใหม่มันไม่สามารถมีอิทธิพลในประวัติศาสตร์ของทฤษฎี A. นอกจากนี้ฉันคิดว่า resuld นี้มีไว้สำหรับความคิดลดลงบางอย่างเท่านั้น IIRC Asperti กระดาษP = NP, มากถึงการแบ่งปันแสดงให้เห็นว่า P และ NP ยุบถ้าคุณมีกลยุทธ์การลด 'ที่ดีที่สุด' ในแง่ของ J-J การจัดเก็บ
Martin Berger

6
@MartinBerger: ใช่แน่นอน ความคิดเห็นของฉันหมายถึงการเพิ่มข้อมูลเกี่ยวกับความซับซ้อนของ -reduction ไม่ใช่แค่เพื่อ "แก้ไข" ข้อความของคุณเกี่ยวกับการขาดอิทธิพลในทฤษฎี A (ซึ่งฉันตอบซ้ำแล้วซ้ำอีก) อย่างไรก็ตามผลลัพธ์ของ Accattoli และ Dal Lago ถือเป็นปกติลดเหลือ - ( cf. p.2, c.2, l.11 ของกระดาษ) นั่นเป็นเหตุผลว่าทำไมมันจึงน่าสนใจมาก ความกังวลเกี่ยวกับผลลัพธ์ของ Asperti อย่างที่คุณพูดคือการลดLévy-ที่ดีที่สุดซึ่งไม่ใช่กลยุทธ์การลด (โดยเฉพาะอย่างยิ่งซ้ายสุด - นอกสุดไม่ใช่Lévy-ดีที่สุด) บีตาบีตาβββ
Damiano Mazza

27

ฉันคิดว่า -calculus มีส่วนร่วมในหลาย ๆ ด้านในด้านนี้และยังคงมีส่วนช่วย มีสามตัวอย่างที่ตามมาและนี่ก็ไม่ครบถ้วนสมบูรณ์ เนื่องจากฉันไม่ใช่ผู้เชี่ยวชาญใน -calculus ฉันพลาดจุดสำคัญบางอย่างไปλλλ

  • ก่อนอื่นฉันคิดว่าการคำนวณรูปแบบที่แตกต่างซึ่งเป็นตัวแทนของชุดฟังก์ชั่นที่เหมือนกันคือต้นกำเนิดของวิทยานิพนธ์ของโบสถ์ - ทัวริงและแคลคูลัสมีบทบาทสำคัญควบคู่ไปกับเครื่องจักรทัวริงและ -recursive ฟังก์ชั่น.μλμ

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

  • ในที่สุดและเป็นตัวอย่างที่เฉพาะเจาะจงยิ่งขึ้นฉันคิดถึงความซับซ้อนของการคำนวณโดยนัยซึ่งมีจุดมุ่งหมายในการอธิบายลักษณะของคลาสที่ซับซ้อนด้วยภาษาเฉพาะ ผลลัพธ์แรกเช่นทฤษฎีบทของ Bellantoni-Cookได้ระบุไว้ในแง่ของฟังก์ชันการเรียกคืน แต่ผลลัพธ์ล่าสุดใช้คำศัพท์และเทคนิคของ -calculus เห็นนี้แนะนำสั้นซับซ้อนในการคำนวณโดยปริยายสำหรับคำแนะนำเพิ่มเติมและหรือการดำเนินการของการประชุมเชิงปฏิบัติการ DICEλμλ


20

นอกเหนือจากบทบาทพื้นฐานของ -calculus ซึ่งถูกกล่าวถึงในคำตอบอื่น ๆ ทั้งหมดฉันต้องการเพิ่มบางอย่างในλ

แคลคูลัสแลมบ์ดาทำอะไรกันแน่เพื่อพัฒนาทฤษฎีของ CS?

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

นอกเหนือจากการเห็นพ้องด้วยกันฉันมีความสุขที่ได้เห็นความซับซ้อนของการคำนวณโดยนัย (ICC) ที่กล่าวถึงในคำตอบอย่างใดอย่างหนึ่ง อย่างไรก็ตามจะต้องมีการกล่าวว่าจนถึงตอนนี้ ICC ไม่ได้ใช้ในทฤษฎี CS นอกภาษาการเขียนโปรแกรมและการตรวจสอบซอฟต์แวร์ในทางที่ จำกัด อย่างมาก นี่เป็นเพียงตัวอย่างของสถานการณ์ทั่วไปเพิ่มเติมที่: modular, compositional มุมมองโครงสร้างสูงของการคำนวณพื้นฐานแคลคูลัสและเด่นใน "ทฤษฎี B" ดูเหมือนว่าจะนำข้อมูลเชิงลึกที่น้อยลงในปัญหาลึกที่น่าสนใจใน "ทฤษฎี" . ทำไมสิ่งนี้จึงเป็นเรื่องที่น่าสนใจและในเวลาเดียวกันทำให้เกิดความสับสน (ดูคำถามนี้สำหรับการสนทนาที่เกี่ยวข้อง)λ

(ในฐานะที่เป็นบันทึกด้านให้ฉันพูดถึงว่าขอบคุณการเชื่อมต่อลึกกับทฤษฎีการพิสูจน์ (Curry-Howard), -calculus มีแอปพลิเคชั่นที่น่าสนใจนอก CS "เหมาะสม" โดยเฉพาะอย่างยิ่งในทฤษฎีเซต ยิ่งทำให้งานล่าสุดเกี่ยวกับ realizability คลาสสิกโปรแกรมวิจัยที่พัฒนาจากต้นยุค 2000 เป็นต้นไปโดยJean-Louis Krivine (และคนอื่น ๆ อีกหลายตอนนี้เช่น Alexandre Miquel การบรรยายที่พบในหน้าเว็บของเขาเป็นการแนะนำที่ดีในเรื่องนี้) จากมุมมองแบบจำลองเชิงทฤษฎีความสามารถในการรับรู้แบบคลาสสิกอาจถูกมองว่าเป็นลักษณะทั่วไปของการบังคับของโคเฮนซึ่งไม่ใช่แบบจำลองการยอมจำนนแบบจำลองของทฤษฎีเซตที่เป็นไปไม่ได้λ


2
จุดที่ดีเกี่ยวกับทฤษฎีการทำงานพร้อมกัน: การพัฒนาประเภทสำหรับระบบการติดต่อซึ่งดำเนินการโดยเคฮอนด้าและเพื่อนร่วมงานของเขาส่วนใหญ่คือเกี่ยวกับการใช้ถ้อยคำใหม่สำหรับ -calculi เป็นประเภทสำหรับระบบโต้ตอบ สะพานสำคัญที่ทำให้งานนี้ทุกคนเป็นมิลเนอร์ของฟังก์ชั่นเป็นกระบวนการให้การแปลจากจะ\สิ่งนี้นำไปสู่การถ่ายโอนเทคโนโลยีแบบย้อนกลับไปแล้ว: Logics ส่วนใหญ่ของ Hoare สำหรับภาษาการเขียนโปรแกรมคล้าย ML นั้นเกิดมาเป็น logics สำหรับพิมพ์ -fragments แล้วจึงผลักกลับด้วยการเข้ารหัสของ Milner λ เธเธλλππ
Martin Berger

5
ถ้าฉันสามารถโคลนตัวเองฉันจะทำซ้ำเพื่อดูเป็น P / NP โดยใช้ BLL และการใช้งานได้จริง ความสัมพันธ์เชิงตรรกะดูเหมือนจะไม่เป็น "บทพิสูจน์ตามธรรมชาติ" ระเบียบวินัยเชิงเส้นประเภททำให้คุณไม่สามารถสัมพัทธภาพได้และทฤษฎีบทความสมบูรณ์แบบ polytime ของ BLL ดูเหมือนจะทำให้คุณไม่ต้องกังวลว่ามีคลาสของอัลกอริทึมที่คุณพลาดหรือไม่ ความสัมพันธ์ระหว่างเชิงเส้นตรงและทฤษฎีการเป็นตัวแทนแนะนำการเชื่อมต่อกับ GCT เช่นกัน ฉันคิดว่าทั้งหมดนี้เป็นเหตุผลว่าทำไมคุณถึงถูกยั่วเย้าและผิดหวัง :)
Neel Krishnaswami

1
เฮ้ @NeelKrishnaswami คุณช่วยชี้ให้ฉันดูเนื้อหาที่เกี่ยวข้องกับ BLL (ตรรกะเชิงเส้นตรง) และการพิสูจน์ตามธรรมชาติได้หรือไม่?
Martin Berger

Re B vs. A: lambda-แคลคูลัสเป็นเพียงการสร้างโครงสร้างการคำนวณเดียวกันที่ดีกว่า แต่ไม่สามารถสร้างอัลกอริทึมที่ดีกว่าได้ โดยการตัดการตัดออกและคุณสมบัติของฟอร์มย่อยบนผลลัพธ์โปรแกรมใด ๆ ที่มีประเภทคำสั่งแรกสามารถเขียนได้โดยไม่ต้องมีฟังก์ชั่นชั้นหนึ่ง แต่การตัดออกนั้นสอดคล้องกับโค้ดที่ซ้ำกัน: ดังนั้นเราจึงพบอีกครั้งว่าคุณไม่จำเป็นต้องมีฟังก์ชั่นการสั่งซื้อที่สูงขึ้นหากคุณยินดีที่จะทำสำเนาให้เพียงพอ (การทำให้เป็นหน้าที่ของเรย์โนลด์สช่วยให้คุณสามารถหลีกเลี่ยงแม้กระทั่งการคัดลอก แต่เป็นการเปลี่ยนแปลงระดับโลกดังนั้นจึงเป็นสิ่งที่ดีกว่าสำหรับคอมไพเลอร์)
Blaisorblade

ความคิดเห็นของฉันได้แรงบันดาลใจจากการเขียนโปรแกรมกับอัลกอริทึม - เขายอดเยี่ยม แต่ดูเหมือนว่าเขาจะมีความเป็นนามธรรมน้อยกว่าที่ฉันต้องการ ฉันไม่ได้อ้างว่าเป็นเรื่องทั่วไป แต่ฉันอ้างว่าสิ่งที่เป็นนามธรรมในรหัสมักไม่จำเป็น / เน้นเมื่อเขียนอัลกอริทึม (พิจารณาจำนวนการใช้งาน quicksort แบบอินไลน์ในฟังก์ชั่นพาร์ติชั่น - ฉันพบว่าไม่สามารถยอมรับได้)
Blaisorblade

13

คำถามของคุณสามารถเข้าถึงได้จากหลาย ๆ ด้าน ฉันอยากจะทิ้งประเด็นทางประวัติศาสตร์และปรัชญาไว้ที่ด้านข้างและตอบคำถามหลักของคุณซึ่งฉันก็เป็นเช่นนี้:

แคลคูลัสแลมบ์ดาคืออะไร? เหตุใดจึงต้องผ่านฟังก์ชั่น / การลดค่าเหล่านี้ทั้งหมด

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

ประเด็นคือ: ไม่ว่าด้วยเหตุผลใดก็ตามที่คริสตจักรมีเมื่อสร้างแลมบ์ดาแคลคูลัสแลมบ์ดาแคลคูลัสมีจุดแตกต่างกันไปจากผู้ประกอบโรคหนึ่งไปยังอีกคนหนึ่ง

  • สำหรับใครบางคนมันเป็นสัญกรณ์ที่สะดวกสำหรับการพูดคุยเกี่ยวกับการคำนวณ อีกทางเลือกหนึ่งสำหรับเครื่องจักรทัวริงและอื่น ๆ

  • อีกสิ่งหนึ่งคือพื้นฐานทางคณิตศาสตร์ที่แข็งแกร่งที่จะสร้างภาษาการเขียนโปรแกรมที่ซับซ้อนยิ่งขึ้น (เช่น McCarthy, Stanley)

  • สำหรับบุคคลที่สามมันเป็นเครื่องมือที่เข้มงวดในการให้ความหมายของภาษาธรรมชาติและภาษาโปรแกรม (เช่น Montague, Fitch, Kratzer)

ฉันคิดว่าแลมบ์ดาแคลคูลัสเป็นภาษาทางการที่ควรค่าแก่การเรียนรู้ด้วยตนเอง คุณสามารถเรียนรู้ความจริงว่าในแคลคูลัสแลมบ์ดาที่ไม่มีการพิมพ์เรามีสัตว์ตัวเล็ก ๆ ที่เรียกว่า 'Y-combinators' และวิธีที่พวกเขาช่วยเรากำหนดหน้าที่แบบเรียกซ้ำและพิสูจน์ถึงความเด็ดเดี่ยวและสง่างาม คุณสามารถเรียนรู้ความจริงที่น่าพิศวงว่ามีการโต้ตอบอย่างใกล้ชิดระหว่างแคลคูลัสแลมบ์ดาเพียงพิมพ์และตรรกะปรีชาแบบหนึ่ง มีหัวข้อที่น่าสนใจอื่น ๆ ให้สำรวจ (เช่นเราจะให้ความหมายของแคลคูลัสแลมบ์ดาได้อย่างไรเราจะเปลี่ยนแลมด้าแคลคูลัสเป็นระบบนิรนัยเช่น FOL ได้อย่างไร)


ลองดูคำแนะนำเบื้องต้นของCombinators และ Calcul – แคลคูลัสของ Hindley & Seldin สำหรับคำแนะนำเบื้องต้น แลมบ์ดาแคลคูลัสของ Barendregt เป็นพระคัมภีร์ดังนั้นหากคุณติดใจ Hindley & Seldin มีหัวข้อมากมายทั้งในด้านความหมายและลักษณะทางวากยสัมพันธ์ในการสำรวจ


6
ฉันไม่ได้ซื้ออาร์กิวเมนต์นี้ "เพื่อประโยชน์ของตัวเอง" จุดประสงค์ของการทำพิธีทางคณิตศาสตร์คือการอธิบายให้เราเข้าใจแนวคิดบางอย่าง สิ่งที่อธิบายไว้อาจพัฒนาไปตามกาลเวลา แต่ถ้าพิธีการช่วยให้เราคิดได้ชัดเจนขึ้นเกี่ยวกับความคิดบางอย่างมันมักจะตายไป ในแง่นั้นมันใช้ได้กับ aks อย่างไรแลมบ์ดาแคลคูลัสอธิบายแนวคิดของการคำนวณในแบบที่ไม่ได้ถูกวิทยฐานะโดย TM
Sasho Nikolov

1
ฉันคิดว่าเราสามารถศึกษาแคลคูลัสแลมบ์ดาได้โดยไม่ต้องคิดถึงการลดและการทดแทนเป็นการคำนวณ ถ้าฉันพูดถูกและเป็นไปได้จริงแล้วเราสามารถมีแคลคูลัสแลมบ์ดาได้แม้ว่าเราจะไม่สนใจการคำนวณเลย แต่ขอบคุณสำหรับความคิดเห็นของคุณ; ฉันจะพยายามแก้ไขคำตอบของฉันทันทีที่ฉันมีโอกาส
หูหนาน Rostomyan

@SashoNikolov - "ด้วยวิธีที่ไม่ได้รวมเข้ากับ TM" ตามคำจำกัดความนั้นเป็นไปไม่ได้เนื่องจาก LC และ TM นั้นเทียบเท่ากัน ทุกสิ่งที่คุณสามารถแสดงหรือพิสูจน์ด้วยอันใดอันหนึ่งคุณสามารถทำได้กับอีกฝ่ายหนึ่ง (และในทางกลับกัน) ดังนั้นพวกเขาจึงทำซ้ำซ้อนกัน (อย่างที่พวกเขาทั้งสองทำกับทฤษฎีแบบเรียกซ้ำทั่วไป นั่นหมายความว่าเราควรละทิ้งระบบที่เทียบเท่า TM ทั้งหมด แต่เป็น TM เอง ฉันจะไม่พูดเช่นนั้นเนื่องจากบางครั้งสิ่งที่ง่ายที่จะแสดงใน LC กว่า TM หรือในทางกลับกัน มันเป็นอีกวิธีหนึ่งในการพูดคุยเกี่ยวกับความสามารถในการคำนวณ
Gabriel L.

1
@GabrielL ถ้าคุณอ่านประโยคทั้งหมดมันจะบอกว่า "แลมบ์ดาแคลคูลัสอธิบายแนวคิดของการคำนวณอย่างไรในแบบที่ไม่ถูกวิทยฐานะใช้โดย TM" คำจำกัดความทางคณิตศาสตร์สองตัวที่มีความเท่าเทียมกันอย่างเป็นทางการอาจอธิบายแนวคิดพื้นฐานที่เหมือนกันในรูปแบบที่แตกต่างและสมบูรณ์ ความคิดเห็นของฉันหมายความว่ามีเหตุผลที่จะถามความชัดเจนที่ได้รับจากการแสดงความสามารถในการคำนวณในแง่ของแลมบ์ดาแคลคูลัสมากกว่าในแง่ของ TM นี่ไม่ได้เกี่ยวกับความเท่าเทียมอย่างเป็นทางการ
Sasho Nikolov

เข้าใจแล้ว - สามารถพลาดคำสำคัญได้ ขอบคุณสำหรับการตอบกลับ.
Gabriel L.

12

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

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

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

ตอนนี้เราสามารถถามได้ว่าทำไมการรักษา LC ในฐานะดั้งเดิมมากกว่าภาษาถิ่น TM คำตอบก็คือความหมาย LC มีdenotational : แง่ LC มี 'ภายใน' ความหมาย มีเลขคริสตจักร, มีฟังก์ชั่นสำหรับการเพิ่ม, การคูณ, การเรียกซ้ำ, ฯลฯ ซึ่งทำให้ LC สอดคล้องกับวิธีการทางคณิตศาสตร์ที่เป็นทางการซึ่งเป็นเหตุผลว่าทำไมอัลกอริธึมจำนวนมากยังคงนำเสนอโดยตรงใน LC

ในทางตรงกันข้ามความหมายของโปรแกรม TM นั้นใช้งานได้ : ความหมายถูกกำหนดเป็นพฤติกรรมของเครื่อง ในแง่นี้เราไม่สามารถตัดเทปบางส่วนออกและพูดว่า "นี่คือส่วนเสริม" เพราะขึ้นอยู่กับบริบท พฤติกรรมของเครื่องเมื่อมันกระทบกับส่วนของเทปนั้นขึ้นอยู่กับสถานะของเครื่องความยาว / ออฟเซ็ต / ฯลฯ ของข้อโต้แย้งจำนวนเทปที่จะใช้สำหรับผลลัพธ์ไม่ว่าการดำเนินการก่อนหน้านี้จะเกิดความเสียหายในส่วนของเทปหรือไม่ ฯลฯ นี่เป็นวิธีการทำงานที่น่ากลัว ("ไม่มีใครต้องการตั้งโปรแกรม Turing Machine") ซึ่งเป็นสาเหตุ อัลกอริทึม (จำเป็น) จำนวนมากถูกนำเสนอเป็น pseudocode


5

คำตอบอื่น ๆ ดีนี่คืออีกหนึ่งมุมมอง / เหตุผลเพิ่มเติมสำหรับการพิจารณาว่าตาข่ายกับคนอื่น ๆ แต่อาจจะชัดเจนยิ่งขึ้น แต่อาจจะยากที่จะจำไว้อย่างชัดเจนในขณะที่ต้นกำเนิดเก่าหายไปบ้างในเวลา:

ความสำคัญทางประวัติศาสตร์!

แคลคูลัสแลมบ์ดาได้รับการแนะนำอย่างน้อยที่สุดเท่าที่2475ในการอ้างอิงต่อไปนี้:

  • A. โบสถ์, "ชุดของ postulates สำหรับพื้นฐานของตรรกะ", พงศาวดารของคณิตศาสตร์, ชุด 2, 33: 346–366 (1932)

เครื่องทัวริงเป็นที่รู้จักใน~ 1936จึงแลมบ์ดาแคลคูลัสถือกำเนิดลักษณะของ TM โดยหลายปีที่ผ่านมา!

  • ทัวริง, AM (1936) "ตัวเลขที่คำนวณได้โดยใช้แอพพลิเคชั่นเพื่อแก้ไขปัญหา Entscheidungs" การดำเนินการของสมาคมคณิตศาสตร์แห่งลอนดอน 2 (1937) 42: 230–265 ดอย: 10.1112 / PLMS / s2-42.1.230

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

แลมบ์ดาแคลคูลัสเป็นเพียงวิธีในการศึกษาการคำนวณจากPOV เชิงตรรกะเป็นศูนย์กลางมากขึ้นในแง่ของการแสดงว่ามันเป็นทฤษฎีบทคณิตศาสตร์และสูตรอนุพันธ์ตรรกะเป็นต้น ก็ยังแสดงให้เห็นถึงความสัมพันธ์ที่ลึกซึ้งระหว่างคอมพิวเตอร์และการเรียกซ้ำและการมีเพศสัมพันธ์แน่นอีกด้วยอุปนัยทางคณิตศาสตร์

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

ดังนั้นอย่างมากใคร ๆ ก็อาจบอกว่าแคลคูลัสแลมบ์ดาเป็นเหมือนเครื่องบันทึกเวลาสำหรับการสำรวจต้นกำเนิดของการคำนวณ!


1
ภาคผนวกแลมบ์ดาแคลคูลัสยังดูเหมือนว่าจะได้รับอิทธิพลอย่างสูงจากPrincipia Mathematicaโดย Whitehead / รัสเซลซึ่งยังเป็นแรงบันดาลใจสำคัญสำหรับGodels THM บางส่วนของงานวิจัยนี้ได้รับแรงบันดาลใจจากปัญหา 10 ของฮิลเบอร์ตในช่วงเปลี่ยนศตวรรษซึ่งขอวิธีแก้ปัญหาอัลกอริทึมก่อนที่จะกำหนด"อัลกอริทึม"อย่างแม่นยำ (ในทางคณิตศาสตร์) และในความเป็นจริง
vzn

btw / clarification / iiuc จริง ๆ แล้วมันเป็นระบบที่ได้รับการยอมรับจากการศึกษาครั้งที่ 1 โดยโพสต์โพสต์และเห็นได้ชัดว่าปัญหาการติดต่อทางจดหมายที่เรียบง่ายเป็นกรณีพิเศษ มันก็เป็น Kleene ที่เป็นเครื่องมือในการพัฒนาแนวคิดของทัวริงสมบูรณ์ (ไม่ใช่ nec ภายใต้ชื่อนั้น) โดยช่วยพิสูจน์ทั้งสามระบบที่สำคัญแทนกัน / เทียบเท่า (TM, แลมบ์ดาแคลคูลัสระบบโพสต์ที่เป็นที่ยอมรับ)
vzn

ดูประวัติความเป็นมาของวิทยานิพนธ์คริสตจักรทัวริงวิกิพีเดียที่ติดตามรายละเอียดทางประวัติศาสตร์จำนวนมาก / ความสัมพันธ์
vzn

4
ฉันมีช่วงเวลาที่ยากลำบากที่ไม่ได้ถูกรุกรานจากการเปรียบเทียบโคบอล
Neil Toronto

-2

ฉันเพิ่งเจอโพสต์นี้และแม้ว่าโพสต์ของฉันจะค่อนข้างช้าในวัน (ปี!) ฉันคิดว่าบางที "คุ้มค่าเงินของฉัน" อาจมีประโยชน์

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

ที่จะพูดคือช่วงเวลา "aha" ของฉัน

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


"aha" บนคอมไพเลอร์คืออะไร
ปริญญาเอก

ย่อหน้าสุดท้ายของคุณดูเหมือนจะเป็นการเก็งกำไรโดยสิ้นเชิงและคุณไม่เคยอธิบายว่าทำไมคำหนึ่งคำว่า "คอมไพเลอร์" จึงตอบคำถาม
David Richerby

@PhD: การลดเบต้าและการแทนที่ไม่ได้ใช้เมื่อเรียกใช้โปรแกรม แต่จะใช้ในการปรับแต่งคอมไพเลอร์ให้เหมาะสม นั่นไม่ใช่ความสำคัญหลักของแลมบ์ดาแคลคูลัส แต่เป็นการประยุกต์ที่เป็นรูปธรรมมาก
Blaisorblade
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.