ทำไมต้องเป็นธรรมชาติแทนที่จะเป็นจำนวนเต็ม?


28

ฉันสนใจว่าเพราะเหตุใดจำนวนธรรมชาติจึงเป็นที่รักของผู้เขียนหนังสือเกี่ยวกับทฤษฎีการเขียนโปรแกรมภาษาและทฤษฎีการพิมพ์ (เช่น J. Mitchell, รากฐานสำหรับภาษาโปรแกรมและ B. Pierce, ประเภทและภาษาโปรแกรม) คำอธิบายของแลมบ์ดาแคลคูลัสที่พิมพ์ได้อย่างง่ายและโดยเฉพาะอย่างยิ่งภาษาการเขียนโปรแกรม PCF มักขึ้นอยู่กับแน็ตและบูล สำหรับคนที่ใช้และสอน PL อุตสาหกรรมที่ใช้งานทั่วไปมันเป็นเรื่องที่เป็นธรรมชาติมากขึ้นในการรักษาจำนวนเต็มแทนที่จะเป็นธรรมชาติ คุณช่วยพูดถึงเหตุผลที่ดีได้ไหมว่าทำไมนักทฤษฎี PL ชอบของนัท นอกจากนั้นมันมีความซับซ้อนน้อยกว่าเล็กน้อย มีเหตุผลพื้นฐานใด ๆ หรือเป็นเพียงประเพณีที่ให้เกียรติ?

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

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


ฉันเดาว่านี่ไม่ใช่คำถามระดับการวิจัยแม้ว่าจะเป็นคำถามที่น่าสนใจ
Raphael

4
ไม่ใช่ แต่เป็นคำถามภาพใหญ่ที่เรายอมรับ
Suresh Venkat

1
ฉันสงสัยว่าในบางวิธีชุดของจำนวนเต็มไม่เป็นลบอาจมากกว่าพื้นฐานมากกว่าตัวเลขธรรมชาติเนื่องจากคุณสมบัติเฉพาะของ 0 ค่าที่ไม่มีอยู่ในหลัง ฉันขอแนะนำด้วยว่านี่เป็นสิ่งที่ถูกต้องมากกว่าสำหรับการเลือกประเภทตัวเลขพื้นฐานสำหรับคอมพิวเตอร์ดิจิทัลที่ให้ความสำคัญกับ 0
Richard Cook

ฉันไม่เข้าใจคุณUPD ธรรมชาติมีพื้นฐานมากกว่าจำนวนเต็มและคำตอบให้ตัวอย่างว่าทำไมในกรณีนี้
Radu GRIGore

เรื่อง UPD ฉันไม่แน่ใจเหมือนกันว่าทำไม "ผู้คนในอุตสาหกรรม" ถึง "ผิดหวัง" (ฉันใช้เวลาทำงานในอุตสาหกรรมของตัวเอง) ทำไมทุกคนควรคาดหวังว่าทฤษฎีควรจะเป็นส่วนขยายที่ชัดเจนของสิ่งที่พวกเขาคุ้นเคยอยู่แล้ว? เป็นเรื่องธรรมดาที่บางสิ่งที่พบได้ทั่วไปในอุตสาหกรรมเช่นเดียวกับตัวแปรจำนวนเต็มนั้นมี "เหตุผลทางประวัติศาสตร์" มากกว่าเหตุผลเชิงทฤษฎี
Marc Hamann

คำตอบ:


24

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

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


20

ธรรมชาติเป็นแนวคิดพื้นฐานที่สำคัญกว่าจำนวนเต็ม

การเหนี่ยวนำเกิดขึ้นเหนือธรรมชาติและจำนวนเต็มสามารถได้มาจากธรรมชาติด้วยการเพิ่มง่ายของผู้ประกอบการผกผัน unary

ฉันอยากถามคำถามย้อนกลับ: ทำไมนักเขียนโปรแกรมภาษาต้น (และเครื่องลงทะเบียน) จึงออกแบบตัวเลขจำนวนเต็มให้เป็นประเภทข้อมูลพื้นฐานเมื่อพวกเขาเป็นรองและได้มาจากธรรมชาติง่าย ๆ ?

ฉันสงสัยว่ามันเป็นเพราะมีการเข้ารหัสเลขฐานสองแบบบางอย่างที่สามารถจัดการจำนวนเต็มได้อย่างสวยงาม ;-)

คิดว่าคุณต้องการละเว้นช่วงลบของจำนวนเต็มแบบเป็นโปรแกรมและพิจารณาแรงกระตุ้นที่จะมีประเภทจำนวนเต็มที่ไม่ได้ลงชื่อเพื่อกู้คืนบิตที่หายไป


5
อีกเหตุผล: ถ้าคุณต้องการบางอย่างเช่นเลขคริสตจักรเลขจำนวนเต็มลบจะต้องแสดงถึงการผกผันของฟังก์ชัน ดังนั้นในบริบทจำนวนเต็มจะเป็นธรรมชาติมากขึ้นในแคลคูลัสของฟังก์ชัน bijective ที่คำนวณได้
ต่อ Vognsen

@Per Vognsen: ไม่แน่ใจว่าวิธีการโต้เถียงที่นั่น แต่ฉันคิดว่ามันปลอดภัยที่จะบอกว่าฟังก์ชั่น bijective ที่คำนวณได้นั้นเป็นพื้นฐานที่น้อยกว่าฟังก์ชั่นคำนวณโดยพลการส่วนใหญ่ ;-)
Marc Hamann

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

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

17

มี bijection คำนวณระหว่างอยู่และ{Z} ดังนั้นมันเพียงพอที่จะให้เหตุผลเกี่ยวกับความสามารถในการคำนวณและสิ่งที่คล้ายกันโดยใช้ตัวเลขธรรมชาติตลอดเวลาที่รู้ว่าผลลัพธ์ของคุณสรุปเป็นจำนวนเต็ม (และจำนวนตรรกยะZNZ

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


11

อีกเหตุผลหนึ่ง (ที่เกี่ยวข้องกับสิ่งที่ได้รับแล้ว แต่คำตอบนี้เพิ่มข้อมูลใหม่) ก็คือมันมีโครงสร้างที่เรียบง่ายและไม่มีความฉลาดของธรรมชาติซึ่งมาพร้อมกับหลักการอุปนัยที่ดี [ดังที่ได้กล่าวไปแล้ว] . สิ่งที่ยังไม่ได้ขยายตัวคือความยากลำบากในการสร้างจำนวนเต็มที่ไม่มีความฉลาด

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


มีภาษาที่มีประเภทพื้นฐานสำหรับธรรมชาติคุณรู้ไหม
Raphael

@ ราฟาเอล: ฉันรู้ แต่ไม่ใช่คนที่ฉันชอบ (คือ Haskell และ OCaml) ฉันยังไม่พร้อมที่จะเริ่ม 'การเขียนโปรแกรม' ใน Agda หรือ Coq
Jacques Carette

อะไรคือสิ่งที่ไม่ดีเกี่ยวกับการคิดเงิน
David Harris

3
Quotients นั้นยอดเยี่ยมในความหมาย พวกเขามีมากยากที่จะจัดการกับในการคำนวณจริงและในรูปธรรมที่เป็นรูปธรรม มีบทความมากมายเกี่ยวกับวิธีจัดการกับพวกเขาใน Coq, Isabelle, Agda, (ทฤษฎีประเภทโดยทั่วไป), ฯลฯ ฉันแค่คิดว่ามันเป็นความรู้ของชาวบ้านในชุมชนทุกแห่งที่ความฉลาดเป็นเพียงความเจ็บปวดที่จะจัดการกับ
Jacques Carette

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

7

มีเหตุผลที่ดีไหมที่นักทฤษฎี PL ชอบธรรมชาติมากกว่าเป็นจำนวนเต็ม? มีบางอย่าง แต่ในหนังสือข้อความเกี่ยวกับความหมายของภาษาการเขียนโปรแกรมฉันคิดว่าไม่มีเหตุผลทางเทคนิคว่าทำไมพวกเขาต้องการ ฉันไม่สามารถนึกถึงสถานที่อื่นนอกเหนือจากระบบประเภทพึ่งพาซึ่งการเหนี่ยวนำข้อมูลมีความสำคัญในทฤษฎี PL หนังสือตำราอื่น ๆ โดยMike Gordon , David Schmidt , Bob TennentและJohn Reynoldsไม่ได้ทำ (และหนังสือเหล่านั้นอาจเหมาะกว่าสำหรับการสอนคนที่ใส่ใจเกี่ยวกับ PL เพื่ออุตสาหกรรมทั่วไป!)

ดังนั้นที่นั่นคุณมีหลักฐานว่าไม่จำเป็น ในความเป็นจริงฉันขออ้างว่าหนังสือตำราทฤษฎี PL ที่ดีควรเป็นตัวแปรในภาษาการเขียนโปรแกรมแบบดั้งเดิมและเป็นความเข้าใจผิดที่จะแนะนำเป็นอย่างอื่น


6

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


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