ฉันเห็นการจำลองและการจำลองทางวิทยาศาสตร์คอมพิวเตอร์บ่อยครั้ง คำสองคำนี้ดูเหมือนตรงกัน มีความแตกต่างระหว่างการจำลองและการจำลองหรือไม่?
ฉันเห็นการจำลองและการจำลองทางวิทยาศาสตร์คอมพิวเตอร์บ่อยครั้ง คำสองคำนี้ดูเหมือนตรงกัน มีความแตกต่างระหว่างการจำลองและการจำลองหรือไม่?
คำตอบ:
ใช่แนวคิดแตกต่างกัน
A simulation
เป็นระบบที่ทำงานคล้ายกับอย่างอื่น แต่มีการใช้งานในวิธีที่แตกต่างอย่างสิ้นเชิง มันแสดงพฤติกรรมพื้นฐานของระบบ แต่อาจไม่จำเป็นต้องยึดตามกฎทั้งหมดของระบบที่กำลังจำลอง มันอยู่ที่นั่นเพื่อให้คุณมีความคิดเกี่ยวกับสิ่งที่ทำงาน
ตัวอย่าง
ลองนึกภาพตัวจำลองการบินเป็นตัวอย่าง มันดูเหมือนและให้ความรู้สึกเหมือนกำลังบินเครื่องบิน แต่คุณถูกตัดการเชื่อมต่ออย่างสมบูรณ์จากความเป็นจริงของการบินเครื่องบินและคุณสามารถโค้งงอหรือทำลายกฎเหล่านั้นตามที่เห็นสมควร ตัวอย่างเช่นบินเครื่องบินแอร์บัส A380 กลับหัวกลับหัวระหว่างลอนดอนและซิดนีย์โดยไม่ทำลาย
An emulation
เป็นระบบที่ทำงานเหมือนอย่างอื่นและปฏิบัติตามกฎทั้งหมดของระบบที่ถูกจำลอง เป็นการจำลองแบบสมบูรณ์ของระบบอื่นได้อย่างมีประสิทธิภาพลงไปสู่ระบบฐานสองที่เข้ากันได้กับอินพุตและเอาต์พุตของระบบที่จำลองระบบ แต่ทำงานในสภาพแวดล้อมที่แตกต่างกับสภาพแวดล้อมของระบบที่จำลองแบบดั้งเดิม กฎได้รับการแก้ไขและไม่สามารถเปลี่ยนแปลงได้หรือระบบล้มเหลว
ตัวอย่าง
MAMEระบบถูกสร้างขึ้นรอบสถานที่ตั้งนี้มาก ระบบอาเขตเก่า ๆ เหล่านั้นที่ถูกลืมไปนานซึ่งถูกนำไปใช้ในฮาร์ดแวร์เกือบทั้งหมดหรือในเฟิร์มแวร์ของระบบฮาร์ดแวร์ของพวกเขาสามารถเลียนแบบได้จนถึงข้อผิดพลาดและข้อผิดพลาดดั้งเดิมที่จะเกิดขึ้นเมื่อคุณทำคะแนนได้สูงสุด
จำลองเป็นรูปแบบที่สร้างขึ้นจากสิ่งอื่นซึ่งพันธุ์บางส่วนของคุณสมบัติสิ่งที่คนอื่น ๆ และใบออก - เห็นได้ชัดว่าคุณต้องการที่จะรักษาคุณสมบัติที่เกี่ยวข้องกับคำค้นหาของคุณและออกจากคนที่ไม่เกี่ยวข้อง
ตัวอย่างเช่นการจำลองการจราจรของผู้สัญจรในตอนเช้าทำให้ชื่อของผู้เดินทางและอาจเป็นตัวตนของพวกเขา (โดยใช้ตัวแปรเคาน์เตอร์แทนที่จะเป็นชุดCommuter
วัตถุจริง) แต่ก็ไม่สามารถมองข้ามอัตราการมาถึงของพวกเขาได้
การจำลองเป็นการทำงานของซอฟต์แวร์ X ที่สร้างขึ้นสำหรับแพลตฟอร์ม A บนแพลตฟอร์ม B โดยไม่ต้องเปลี่ยนซอฟต์แวร์เอง สิ่งนี้ต้องการสร้างแบบจำลองของ A ที่ทำงานบน B และแน่นอนว่าต้องสร้างแบบจำลองทุกอย่างเกี่ยวกับ A ที่เกี่ยวข้องกับการเรียกใช้โค้ด (ในทางทฤษฎีคุณสามารถละเว้นการสนับสนุน opcodes ที่คุณรู้ว่าซอฟต์แวร์นี้ไม่เคยใช้ แต่หายาก - การทำอีมูเลเตอร์นั้นเป็นงานหนักและคุ้มค่ากว่าที่จะทำอย่างละเอียดและมีสิ่งที่สามารถนำกลับมาใช้ใหม่ได้กว่า kludge ใช้งานได้เฉพาะกับ S. )
ทั้งสองหมายถึงสิ่งที่ทำงานของอย่างอื่น
ความแตกต่างคือ "การจำลอง" เกิดขึ้นในระดับที่ใส่ใจ (โดยคำนึงถึงผู้ใช้) และโดยทั่วไปจะสรุปได้ว่าจะคาดการณ์ผลลัพธ์ของความเป็นจริงโดยไม่ต้องสัมผัสกับความเป็นจริง
"การจำลอง" เกิดขึ้นในระดับที่หมดสติและมีวัตถุประสงค์เพื่อแทนที่ส่วนประกอบพื้นฐานด้วยองค์ประกอบอื่นที่แตกต่างกัน - ที่เกี่ยวกับผู้ใช้ - ทำงานเหมือนเก่า
กล่าวอีกนัยหนึ่งการจำลองเกิดขึ้นใน "โลกคู่ขนาน" ในขณะที่การจำลองเกิดขึ้นใน "โลกที่ถูกแทนที่"
ในทางเทคนิคแล้วพวกเขาทั้งสองทำสิ่งเดียวกัน: ทำบางสิ่งในสภาพแวดล้อมที่ทำหน้าที่เหมือนเป็นของจริง
อย่างไรก็ตามแนวคิดมีความแตกต่างที่สำคัญคือ
การจำลองควรจะแยกออกจากโลกแห่งความจริงไปสู่ระดับหนึ่ง ผลลัพธ์ของการจำลองไม่ได้เชื่อมต่อโดยตรงกับสิ่งที่จำลอง ตัวอย่างเช่นเครื่องบินจำลองไม่ได้บินจริงและนักบินไม่ได้สื่อสารกับผู้ควบคุมการจราจรทางอากาศจริง
การจำลองมักจะมีเป้าหมายในการทดสอบหรือทำนายกระบวนการชีวิตจริงในสภาพแวดล้อมที่ปลอดภัย เนื่องจากการจำลองถูกตัดการเชื่อมต่อจากโลกแห่งความเป็นจริงไม่มีอะไรเลวร้ายเกิดขึ้นได้ (การจำลองเครื่องบินตกไม่เคยฆ่าคนจริง)
ในทางตรงกันข้ามการจำลองมีเป้าหมายที่จะแทนที่ของจริง: ตัวอย่างเช่นถ้าคุณจำลองไมโครคอนโทรลเลอร์ที่เรียบง่ายโดยใช้ซีพียูที่สามารถตั้งโปรแกรมได้ที่ซับซ้อนยิ่งขึ้นซีพียูนั้นสามารถใช้แทนไมโครคอนโทรลเลอร์เดิมได้ มันจะเชื่อมต่อทางกายภาพกับเครื่องบางตัวและมันจะควบคุมเครื่องเช่นเดียวกับไมโครคอนโทรลเลอร์
เป้าหมายของการแข่งขันคือการเปลี่ยนฮาร์ดแวร์หรือซอฟต์แวร์ส่วนประกอบเทียบเท่ากับการทำงานเมื่อโมดูลเดิมจะไม่สามารถใช้ได้ (หรือได้กลายเป็นแพงเกินไปถ้าเพียง แต่จะรักษา) การจำลองสามารถตอบสนองเป้าหมายของการใช้ฮาร์ดแวร์ที่มีความยืดหยุ่นได้มากขึ้น - ไมโครคอนโทรลเลอร์ที่สามารถตั้งโปรแกรมได้สามารถเพิ่มตัวควบคุมที่ง่ายขึ้นได้หลายตัวสลับโหมดการจำลองตามต้องการ
"technically"
พวกเขาแตกต่างอย่างสิ้นเชิง ความแตกต่างทางแนวคิดที่คุณอธิบายเป็นพื้นฐานของความแตกต่างนี้
ในขณะที่นิรุกติศาสตร์นั้นไม่ถูกต้องแม่นยำให้คิดเกี่ยวกับความแตกต่างระหว่างความเห็นอกเห็นใจ "ฉันสามารถจินตนาการได้ว่าสิ่งใดที่จะต้องรู้สึกเหมือน" และความเห็นอกเห็นใจ "ฉันรู้ว่ามันรู้สึกอย่างไร" การจำลองอาจรวมถึงการแสดงภาพของปัญหา แต่อาจไม่ได้ ตัวอย่างเช่นมันอาจพิมพ์คอลัมน์ของตัวเลขที่แสดงจำนวนผู้เข้าแถวเพื่อรับรายได้รวมหรือความเร็วเฉลี่ย มันมีคุณสมบัติบางอย่างที่ตรงกับความเป็นจริงและบางอย่างก็ไม่เป็นเช่นนั้น
การจำลองซึ่งมักใช้ในบริบทของแพลตฟอร์มหนึ่งที่ทำตัวเป็นแพลตฟอร์มอื่นนั้นมีความสมบูรณ์มากกว่า ดังนั้นผู้พัฒนา Windows Phone สามารถเรียกใช้หรือดีบักแอพโทรศัพท์ของพวกเขาบนเครื่อง Windows ในอีมูเลเตอร์ซึ่งดูเหมือนว่าโทรศัพท์และจะทำงานเหมือนกัน คุณสามารถเรียกใช้เกม Commodore 64 เกมเก่าของคุณในโปรแกรมจำลองได้เช่นกัน
คำพูดไม่แม่นยำ เครื่องจำลองการบินส่วนใหญ่เป็นเหมือนตัวเลียนแบบในความคิดของฉัน แต่ชื่อติดอยู่ในช่วงเวลาที่พวกเขาไม่ได้ดื่มด่ำ บางคนจองคำเลียนแบบสำหรับกรณีข้ามแพลตฟอร์มและปฏิเสธสิ่งอื่นใด คุณอาจจะไม่เคยคิดผิดถ้าคุณทำเช่นเดียวกันเมื่อพูด แต่เข้าใจว่าบางคนอาจวางขอบเขตระหว่างคำสองคำที่แตกต่างกันเล็กน้อยและให้เบี้ยเลี้ยงเมื่อมีคนพูดว่า "นี่คือการเลียนแบบ" สำหรับความถูกต้องและแท้จริง การจำลองที่สมบูรณ์
ทั้งสองคำมีความคล้ายคลึงกันมากในแนวคิด - ล้อเลียน
การจำลองหรือการจำลองใช้ประโยชน์จากซอฟต์แวร์เพื่อสร้างระบบจำลองที่คล้ายกับแบบจำลองเป้าหมายในส่วนที่เกี่ยวกับฟังก์ชั่นหลักพื้นฐานของมัน (โดยเฉพาะวิธีการพื้นฐาน)
ในทางกลับกันอีมูเลเตอร์ให้ความสำคัญกับความเหมือนภายนอกมากกว่าเมื่อเปรียบเทียบกับระบบเป้าหมาย มันมีความกังวลน้อยที่สุดสำหรับ "วิธี" ฟังก์ชั่นที่เลียนแบบ โดยทั่วไปแล้วตัวเลียนแบบจะใช้เมื่อทำงานในสภาพแวดล้อมที่แตกต่างอย่างสิ้นเชิง (ตัวอย่างเช่นระบบปฏิบัติการที่แตกต่างกัน) เมื่อเปรียบเทียบกับระบบดั้งเดิม