ฉันมักจะรู้สึกขาดการเชื่อมต่อระหว่างเครื่องที่เป็นนามธรรม (เช่นเครื่องทัวริง) และสถาปัตยกรรมคอมพิวเตอร์ (รวมถึงสถาปัตยกรรมของเครื่องเสมือน ดังนั้นฉันอยากรู้ว่าพวกเขาเกี่ยวข้องกันอย่างไร คนหนึ่งมีอิทธิพลต่อกันอย่างไร? การอ้างอิงยังชื่นชม ขอบคุณ
ฉันมักจะรู้สึกขาดการเชื่อมต่อระหว่างเครื่องที่เป็นนามธรรม (เช่นเครื่องทัวริง) และสถาปัตยกรรมคอมพิวเตอร์ (รวมถึงสถาปัตยกรรมของเครื่องเสมือน ดังนั้นฉันอยากรู้ว่าพวกเขาเกี่ยวข้องกันอย่างไร คนหนึ่งมีอิทธิพลต่อกันอย่างไร? การอ้างอิงยังชื่นชม ขอบคุณ
คำตอบ:
เครื่องจักรทัวริงและ "เครื่องจักร" ที่คล้ายกันเป็นแบบจำลองของการคำนวณพวกเขามีวัตถุประสงค์เพื่อตรวจสอบปัญหาต่าง ๆ เช่น:
เพื่อจุดประสงค์ดังกล่าวเครื่องต้องเรียบง่ายที่สุดเท่าที่จะทำได้ ความสะดวกสบายของโปรแกรมเมอร์หรือการใช้งานที่น่ารำคาญนั้นไม่สำคัญเนื่องจากเป็นวัตถุทางคณิตศาสตร์และมีเพียงไม่กี่โปรแกรมเท่านั้นที่ถูกเขียนโดยตรงสำหรับพวกเขา
ตรงกันข้ามสถาปัตยกรรมเครื่องเสมือนและสถาปัตยกรรมเครื่องซิลิกอนตามที่เกิดขึ้นจริงเป็นศูนย์กลางในการดำเนินการโปรแกรมที่กำหนด เครื่องมีความซับซ้อนเกินความจำเป็นอย่างเคร่งครัดสำหรับข้อกังวลข้างต้นและในทางกลับกันมันใช้เวลาน้อยลง (และชัดเจนยิ่งขึ้น) คำแนะนำในการทำสิ่งที่น่าสนใจ ไม่ซับซ้อนเกินไปเนื่องจากยังต้องเข้าใจได้ (และใช้งานได้อย่างมีประสิทธิภาพ) แต่ซับซ้อนกว่า
ดังนั้นทั้งสองวิธีจึงมีความเป็นไปได้สูง นอกจากนี้ทั้งสองอยู่ในสาขาวิทยาศาสตร์คอมพิวเตอร์พวกเขาไม่ได้มีอะไรเกี่ยวข้องกันมากนัก
ความสัมพันธ์หลักคือคุณสามารถจำลองโครงสร้างทางทฤษฎีในทางกายภาพ
ความจริงที่ว่ากายภาพนั้นมีความสามารถในทุกสิ่งที่ทฤษฎีได้ก่อให้เกิดความสามารถในการทดสอบเชิงทฤษฎีและการวิเคราะห์ของเครื่องจักรเชิงทฤษฎีที่จะได้รับการยอมรับว่าสามารถนำไปใช้ได้จริงในโลกแห่งความเป็นจริง
ปัญหาการหยุดชะงักเป็นตัวอย่างที่สมบูรณ์แบบของบางสิ่งบางอย่างที่แสดงบนเครื่องทัวริงที่ไม่สามารถแก้ไขได้และด้วยการพิสูจน์บนเครื่องทัวริงมันจึงเป็นที่รู้กันว่าแก้ไม่ได้บนเครื่องจริงที่ปฏิบัติตามกฎหมายของเครื่องทัวริง
มันคือความแตกต่างระหว่างการรวมสิ่งต่าง ๆ โดยการนับและทำมันโดยการเขียนลงบนกระดาษมันได้รับการพิสูจน์แล้วว่าความจริงของการนับนั้นเป็นไปตามกฎเดียวกันกับการสรุปบนแผ่นกระดาษ ดังนั้นเมื่อคุณจำลองการนับจำนวนทางกายภาพผลลัพธ์ของคุณจะได้รับการยอมรับว่าเหมาะสมกับโลกแห่งความจริงดังนั้นคุณจึงรู้ว่าจะต้องเสียค่าขนมแท่งแท่งสองแท่งเท่าไหร่โดยการจำลองการนับจิตใจโดยไม่จำเป็นต้องนับเงินทางกายภาพ
ขณะนี้ผู้คนกำลังทำการวิเคราะห์และทดสอบแบบจำลองทางทฤษฎีที่เรียกว่า "Quantum Turing Machine" เพื่อดูว่าเครื่องอำนวยความสะดวกอะไรบ้างที่สามารถใช้ได้กับเครื่องคำนวณควอนตัม มันสมเหตุสมผลที่ผู้คนจะทำงานกับแบบจำลองเหล่านี้เมื่อแบบจำลองทางกายภาพของแบบจำลองของพวกเขามีทั้งการใช้งานที่มีราคาแพงมากหายากและในปัจจุบันยังขาดอยู่มาก แบบจำลองเชิงทฤษฎีใช้เพื่อแสดงว่าเราสามารถทำอะไรได้บ้างเมื่อการปรับใช้ทางกายภาพของเราดีขึ้น
พวกมันมีความสัมพันธ์กันในลักษณะเดียวกับที่กระสวยอวกาศมีความสัมพันธ์กับบอลลูนที่คุณพองลมหายใจจากนั้นก็ปล่อยมือจากและมองดูแมลงวัน
หลักการพื้นฐานของการขับไล่บางสิ่งในทิศทางเดียวเพื่อขับเคลื่อนบางสิ่งในทิศทางตรงกันข้ามคือมี
นั่นคือสิ่งที่ความคล้ายคลึงกันสิ้นสุดลง
ฉันเห็นเครื่องจักรเชิงทฤษฎีเพื่อเชื่อมช่องว่างระหว่างการคำนวณในโลกแห่งความเป็นจริงและคณิตศาสตร์ เครื่องทัวริงมีพลังมากพอที่จะจำลองสถาปัตยกรรมจริงหรือภาษาการเขียนโปรแกรมเรียบง่ายพอที่จะจำลองได้อย่างง่ายดายและที่สำคัญที่สุดคือง่ายพอที่จะเป็นเรื่องของการให้เหตุผลเชิงคณิตศาสตร์และการพิสูจน์ที่ตรงไปตรงมา
สิ่งสำคัญคือต้องรู้ว่าคำจำกัดความของการคำนวณไม่ใช่ "สิ่งที่คอมพิวเตอร์ทำ" การคำนวณมาก่อนคอมพิวเตอร์ คอมพิวเตอร์ได้รับชื่อของพวกเขาเพราะพวกเขาถูกสร้างขึ้นเพื่อช่วยงานการคำนวณไม่ใช่เพราะพวกเขากำหนด
เครื่องทัวริงจึงไม่เกี่ยวกับการทำงานของคอมพิวเตอร์ มันเกี่ยวกับปัญหาที่คำนวณได้หรือไม่- นั่นคือแก้ไขได้โดยกระบวนการตรรกะ / คณิตศาสตร์อย่างเป็นทางการ มันไม่ได้บอกว่าจะนำกระบวนการนั้นไปใช้อย่างไร ถ้ามันเป็นคำนวณจะสามารถแก้ไขได้โดยมนุษย์ด้วยดินสอและกระดาษ, ให้เวลาเพียงพอหรือกับคอมพิวเตอร์หรือ (นี่คือสิ่งที่สำคัญ) กับใด ๆระบบที่สามารถแสดงให้เห็นว่าทัวริงสมบูรณ์
เครื่องทัวริงจึงทำสองสิ่งที่สำคัญมาก:
ประเด็นแรกช่วยให้เราสามารถคิดเกี่ยวกับปัญหาต่าง ๆ โดยไม่ถูกรบกวนจากการใช้งานจริง สิ่งนี้เป็นสิ่งที่ดีเพราะฮาร์ดแวร์จริงมักจะทำให้ผู้คนสนใจรายละเอียดที่ไม่เกี่ยวข้อง (เช่น "เกิดอะไรขึ้นถ้าเรามีหน่วยความจำไม่เพียงพอหรือพื้นที่เก็บข้อมูล?" เนื่องจาก Turing Machines มีทรัพยากรที่ไม่สิ้นสุด) วิธีแก้ปัญหาเชิงทฤษฎีที่พิสูจน์ได้สามารถพัฒนาขึ้นสำหรับเครื่องทัวริงแล้วทุกคนต้องทำคือแปลมันเป็นสิ่งที่จะทำงานบนสถาปัตยกรรมที่กำหนด
จุดที่สองช่วยให้เราสามารถตรวจสอบความสามารถของการใช้งานโดยไม่ต้องทำการทดสอบที่แตกต่างกันมากมาย หากสามารถจำลองเครื่องทัวริงได้ก็สามารถทำทุกอย่างที่เครื่องทัวริงทำได้ เนื่องจากเครื่องจักรทัวริงสามารถคำนวณสิ่งที่คำนวณได้ดังนั้นจึงทำได้
ซึ่งหมายความว่าความสัมพันธ์ระหว่างทัวริงเครื่องและสถาปัตยกรรมคอมพิวเตอร์ที่ใช้งานได้จริง ๆ (แม้กระทั่งเสมือนจริง) เป็นเพียงสิ่งเดียว: พวกเขาสามารถคำนวณได้
สถาปัตยกรรมของ Von Neumann เป็นความพยายามในการสร้างแม่แบบการออกแบบสำหรับคอมพิวเตอร์ดิจิตอลอิเล็กทรอนิกส์ทั่วไปที่มีประสิทธิภาพ งานของทัวริงเป็นหลักฐานยืนยันความถูกต้อง
ถ้าคุณคิดเกี่ยวกับมันสถาปัตยกรรมเป็นเครื่องจักรที่เป็นนามธรรม พวกเขาอธิบายว่าก้อนของซิลิคอนที่ทำขึ้นอย่างระมัดระวังควรจะมีพฤติกรรมอย่างไร ความแตกต่างระหว่างสถาปัตยกรรมและเครื่องทัวริงเป็นเรื่องของขนาดมากกว่าการเปลี่ยนแปลงขั้นพื้นฐานในแนวทาง
ข้อดีของเครื่องทัวริงคือมีชุดการพิสูจน์ที่มีประโยชน์ซึ่งง่ายต่อการใช้เครื่องทัวริง มันง่ายที่จะพิสูจน์ว่าเครื่องจักรใดที่ทรงพลังพอที่จะจำลองเครื่องทัวริงสามารถแก้ปัญหาใด ๆ ที่เครื่องทัวริงสามารถ (duh) อย่างไรก็ตามมันจะน่าสนใจยิ่งขึ้นเมื่อคุณกำหนดฟังก์ชันที่คำนวณได้ ปรากฎว่ามีคำจำกัดความที่เข้ากันได้มากมายของฟังก์ชันที่คำนวณได้ หากคุณสามารถกำหนดพฤติกรรมทั้งหมดของคุณเป็นฟังก์ชันที่คำนวณได้คุณสามารถจำลองในเครื่องทัวริง
สมมติว่าคุณมีสถาปัตยกรรมที่สนับสนุนโปรแกรมสไตล์ LISP โดยตรงและอีกอย่างเช่น x86 ซึ่งเป็นขั้นตอนมากกว่า เพื่อนของคุณอ้างว่า "LISP แสดงออกได้มากกว่าดังนั้นคุณสามารถเขียนโปรแกรมบนเครื่องนี้ได้คุณไม่สามารถเขียนบน x86 ของคุณได้" นี่เป็นการโหดร้ายที่จะโต้กลับ (โดยเฉพาะอย่างยิ่งเนื่องจากคุณอาจไม่รู้จัก LISP มากพอ) อย่างไรก็ตามคุณสามารถละเมิดเครื่องนามธรรมหลายอย่างเช่นเครื่องทัวริง:
แน่นอนว่ามีตัวอย่างอื่นอีกมากมาย เกมแห่งชีวิตของ Conway ได้รับการพิสูจน์แล้วว่าเป็นทัวริงสมบูรณ์ซึ่งหมายความว่าในทางทฤษฎีแล้วสิ่งใดก็ตามที่คอมพิวเตอร์ของคุณสามารถทำได้ วิธีที่ง่ายที่สุดที่จะทำนี้คือการสร้างเครื่องทัวริงในอนาคต ฉันนำสิ่งนี้มาเพราะนี่จะเป็นกรณีของสิ่งที่คุณเรียกว่าเครื่องนามธรรมที่ถือว่าเป็นสถาปัตยกรรมที่แท้จริง! คุณสามารถจินตนาการได้ว่าการเรียกร้องความสามารถในการคำนวณในชีวิตนั้นยากเพียงใดหากปราศจากความช่วยเหลือของแบบจำลองนามธรรม (ฉันแน่ใจว่าในขณะที่ฉันไม่ได้สร้างแบบจำลอง x64 พร้อมด้วยการแอบดูแคชเพื่อพิสูจน์ว่าชีวิตนั้นคำนวณได้!)
ในที่สุดความแตกต่างที่สำคัญระหว่างสถาปัตยกรรมและเครื่องจักรที่เป็นนามธรรมคือสถาปัตยกรรมมักเกี่ยวข้องกับประสิทธิภาพ สถาปัตยกรรมต้องการทราบว่าคุณสามารถทำอะไรได้อย่างรวดเร็ว เครื่องบทคัดย่อมักจะเป็นเนื้อหาที่เพิ่งรู้ว่าคุณสามารถ พิจารณาUniversal Constructor ที่พัฒนาขึ้นสำหรับเครื่องของ von Neuman มันเพียงพอที่จะพิสูจน์ได้ว่า UC สามารถทำงานได้ไม่ต้องกังวลว่าผู้เขียนไม่เคยมีพลังในการคำนวณเพียงพอที่จะมองเห็นมันได้
สถาปัตยกรรมราคาจ่ายเพื่อแสดงให้เห็นว่าพวกเขาทำงานได้เร็วแค่ไหนก็มักจะยากที่จะพิสูจน์ว่าพวกเขาสามารถคำนวณทุกอย่างได้ ด้วยเหตุนี้สถาปัตยกรรมจึงหันกลับมาและเริ่มใช้เครื่องนามธรรม