คำถามติดแท็ก philosophy

29
เหตุใดการเขียนหลักฐานพิสูจน์ทางคณิตศาสตร์จึงพิสูจน์ได้มากกว่าการเขียนรหัสคอมพิวเตอร์?
ฉันสังเกตว่าฉันพบว่ามันง่ายกว่ามากในการเขียนหลักฐานทางคณิตศาสตร์โดยไม่ทำผิดพลาดไปกว่าเขียนโปรแกรมคอมพิวเตอร์ที่ไม่มีข้อบกพร่อง ดูเหมือนว่านี่เป็นสิ่งที่แพร่หลายมากกว่าเพียงแค่ประสบการณ์ของฉัน คนส่วนใหญ่ทำข้อบกพร่องซอฟต์แวร์ตลอดเวลาในการเขียนโปรแกรมและพวกเขามีคอมไพเลอร์เพื่อบอกพวกเขาว่าสิ่งที่ผิดพลาดอยู่ตลอดเวลา ฉันไม่เคยได้ยินใครบางคนที่เขียนโปรแกรมคอมพิวเตอร์ขนาดใหญ่โดยไม่มีข้อผิดพลาดในครั้งเดียวและมีความมั่นใจเต็มที่ว่าจะไม่มีข้อผิดพลาด (อันที่จริงโปรแกรมแทบจะไม่มีข้อบกพร่องแม้แต่โปรแกรมที่ดีบั๊กมาก ๆ ) แต่ผู้คนสามารถเขียนบทความหรือหนังสือทั้งหมดที่มีข้อพิสูจน์ทางคณิตศาสตร์โดยไม่ต้องมีคอมไพเลอร์ใด ๆ ให้คำติชมว่าพวกเขาทำผิดพลาด ให้ฉันมีความชัดเจน นี่ไม่ใช่การบอกว่าคนไม่ทำผิดพลาดในการพิสูจน์ทางคณิตศาสตร์ แต่สำหรับนักคณิตศาสตร์ที่มีประสบการณ์เพียงเล็กน้อยความผิดพลาดมักจะไม่ใช่ปัญหานั้นและสามารถแก้ไขได้โดยไม่ต้องใช้ "oracle ภายนอก" เช่นคอมไพเลอร์ชี้ไปที่ ผิดพลาด อันที่จริงถ้าไม่ใช่อย่างนั้นคณิตศาสตร์ก็แทบจะเป็นไปได้ ดังนั้นสิ่งนี้ทำให้ฉันถามคำถาม: อะไรคือความแตกต่างเกี่ยวกับการเขียนหลักฐานทางคณิตศาสตร์ที่ไม่ผิดพลาดและการเขียนรหัสคอมพิวเตอร์ที่ผิดพลาดที่ทำให้มันเป็นแบบนั้นเพื่อให้อดีตเป็นเวไนยมากขึ้นกว่าหลัง? อาจกล่าวได้ว่ามันเป็นความจริงที่ว่าผู้คนมี "oracle ภายนอก" ของคอมไพเลอร์ชี้ให้พวกเขาเห็นความผิดพลาดที่ทำให้โปรแกรมเมอร์ขี้เกียจป้องกันไม่ให้พวกเขาทำสิ่งที่จำเป็นในการเขียนโค้ดอย่างจริงจัง มุมมองนี้จะหมายความว่าหากพวกเขาไม่มีคอมไพเลอร์พวกเขาจะสามารถเป็นนักคณิตศาสตร์ได้อย่างไร้ข้อผิดพลาด คุณอาจพบว่าการโน้มน้าวใจนี้ แต่จากประสบการณ์การเขียนโปรแกรมและการเขียนหลักฐานทางคณิตศาสตร์ดูเหมือนว่าโดยสัญชาตญาณสำหรับฉันว่านี่ไม่ใช่คำอธิบาย ดูเหมือนว่ามีบางสิ่งที่แตกต่างกันโดยพื้นฐานเกี่ยวกับความพยายามทั้งสอง ความคิดเริ่มต้นของฉันคือสิ่งที่อาจเป็นความแตกต่างคือสำหรับนักคณิตศาสตร์การพิสูจน์ที่ถูกต้องจะต้องใช้ทุกขั้นตอนตรรกะในการแก้ไขเท่านั้น หากทุกขั้นตอนถูกต้องหลักฐานทั้งหมดจะถูกต้อง ในทางตรงกันข้ามสำหรับโปรแกรมที่จะไม่มีข้อบกพร่องไม่เพียง แต่ทุกบรรทัดของรหัสจะต้องถูกต้อง แต่มันเกี่ยวข้องกับทุกบรรทัดของรหัสในโปรแกรมจะต้องทำงานเช่นกัน ในคำอื่น ๆ ถ้าขั้นตอนในหลักฐานถูกต้องจากนั้นทำผิดพลาดในขั้นตอนจะไม่เลอะขั้นตอนเคย แต่ถ้าบรรทัดของโค้ดถูกเขียนลงอย่างถูกต้องแล้วการทำผิดในบรรทัดจะมีผลต่อการทำงานของบรรทัดดังนั้นเมื่อใดก็ตามที่เราเขียน lineเราต้องคำนึงถึงความสัมพันธ์กับบรรทัดอื่นทั้งหมด เราสามารถใช้การห่อหุ้มและสิ่งเหล่านั้นเพื่อ จำกัด สิ่งนี้ แต่มันไม่สามารถลบออกได้อย่างสมบูรณ์Y X X Y X XXXXYYYXXXXXXYYYXXXXXX ซึ่งหมายความว่ากระบวนการสำหรับการตรวจสอบข้อผิดพลาดในการพิสูจน์ทางคณิตศาสตร์นั้นเป็นเชิงเส้นในจำนวนขั้นตอนการพิสูจน์ แต่กระบวนการสำหรับการตรวจสอบข้อผิดพลาดในรหัสคอมพิวเตอร์นั้นเป็นเลขชี้กำลังเชิงเส้นในจำนวนบรรทัดของรหัส คุณคิดอย่างไร? …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.