Bilgisayar bilimlerinde sık sık Simulation ve Emulation görüyorum. Bu iki terim eş anlamlıdır. Simülasyon ve Emülasyon arasında herhangi bir fark var mı?
Evet, kavramlar farklı.
simulation, başka bir şeye benzer davranan, ancak tamamen farklı bir şekilde uygulanan bir sistemdir. Bir sistemin temel davranışını sağlar, ancak simüle edilen sistemin tüm kurallarına uymayabilir. Size bir şeyin nasıl çalıştığı hakkında bir fikir vermek için var.
Örnek
Bir uçuş simülatörünü örnek olarak düşünün. Bir uçağı uçuruyormuşsunuz gibi hissediyor ve hissediyorsunuz, ancak uçağı uçurma gerçeğinden tamamen koptunuz ve uygun gördüğünüzde bu kuralları bükebilir veya kırabilirsiniz. Örneğin, bir Airbus A380'i Londra ve Sidney arasında baş aşağı kırmadan uçurun.
emulation tam olarak gibi başka bir şey yapan ve taklit edilen sistemin tüm kurallarına uyan bir sistemdir. Emüle edilen sistemin girişleri ve çıkışları ile ikili uyumlu olana kadar, ancak orijinal taklit sistemin ortamından farklı bir ortamda çalışan başka bir sistemin etkili bir şekilde tam bir kopyasıdır. Kurallar sabittir ve değiştirilemez veya sistem başarısız olur.
Örnek
M.A.M.E. sistemi bu öncül etrafında inşa edilmiştir. Uzun süredir unutulmuş, neredeyse tamamen donanımda veya donanım sistemlerinin ürün yazılımında uygulanan tüm eski arcade sistemleri, mümkün olan en yüksek puana ulaştığınızda ortaya çıkabilecek orijinal hatalara ve çökmelere kadar taklit edilebilir.
A simulation, o şeyin bazı özelliklerini yeniden üreten ve diğerlerini dışarıda bırakan başka bir şeyden yapılmış bir modeldir - açıkça sorgunuzla ilgili özellikleri korumak ve alakasız olanları dışarıda bırakmak istersiniz.
Örneğin, sabahın erken saatlerinde banliyö trafiğinin simülasyonu, banliyölerin adlarını ve hatta kimliklerini (gerçek
Commuter nesneleri kümesi yerine bir sayaç değişkeni kullanarak) bırakır, ancak varış oranlarını göz ardı edemez .
Öykünme, B platformunda A platformu için oluşturulan ve yazılımın kendisini değiştirmeden X yazılımının çalıştırılmasıdır. Bu, B üzerinde çalışan bir A modeli oluşturmayı gerektirir ve açıkçası A'nın kod yürütmeyi içeren her şeyi modellemesi gerekir. (Teorik olarak, bu özel yazılımın hiç kullanmayacağını bildiğiniz opcodes desteğini atlayabilirsiniz, ancak bu nadirdir - bir emülatör yapmak zor bir iştir ve kapsamlı bir iş yapmak ve bir çamurdan yeniden kullanılabilir bir şey yapmak çok daha değerli. yalnızca S. için çalışır.)
Her ikisi de başka bir şeyin işini yapan bir şey anlamına gelir.
Fark şu ki, "Simülasyon" bilinçli düzeyinde (kullanıcıya göre) gerçekleşir ve tipik olarak gerçekliğin kendisine dokunmadan bir gerçekliğin sonucunu tahmin etmek için sonlandırılır.
"Öykünme" bilinçsiz düzeyinde gerçekleşir ve altta yatan bir bileşeni, kullanıcı açısından saygı duyulan başka bir bileşenle değiştirmeyi amaçlar.
Başka bir deyişle, simülasyon "paralel bir dünyada" olurken emülasyon "değiştirilen bir dünyada" gerçekleşir.
Teknik olarak, ikisi de aynı şeyi yapıyor: gerçek bir şeymiş gibi davranan bir ortamda bir şeyler yapın.
Ancak kavramsal olarak önemli bir fark vardır.
A simülasyon, gerçek dünyadan belli bir dereceye kadar ayrılmalıdır; bir simülasyonun çıktısı simüle ettiği şeyle doğrudan bağlantılı değildir. Örneğin, bir uçak simülatörü gerçekte uçmaz ve pilot gerçek bir hava trafik kontrolörü ile iletişim kurmaz.
Bir simülasyonu genellikle güvenli bir ortamda bazı gerçek hayat süreçlerini test etme veya tahmin etme hedef değerine sahiptir; simülasyonun gerçek dünyayla bağlantısı kesildiğinden, gerçekten kötü bir şey olamaz (bir uçak simülatörü asla gerçek insanları öldürmez).
Bir öykünme, aksine, gerçek şeyin yerini alma amacına sahiptir: örneğin, daha sofistike bir programlanabilir CPU kullanarak basit bir mikrodenetleyici taklit ederseniz, bu CPU orijinal mikrodenetleyici; fiziksel olarak bazı makinelere bağlanacak ve aslında o makineyi mikrodenetleyicinin yaptığı gibi kontrol edecek.
öykünmesinin hedefi, orijinal modüller mevcut olmadığında (veya donanım bileşenlerini işlevsel eşdeğerlerle değiştirmektir) (veya sadece korumak için çok pahalı hale geldi). Emülasyon ayrıca donanımı daha esnek kullanma amacına da hizmet edebilir - aynı programlanabilir mikrodenetleyici, daha basit kontrolörler için iki katına çıkabilir ve emülasyon modunu gerektiği gibi değiştirebilir.
Etimoloji kesinlikle doğru olmasa da, sempati arasındaki farkı düşünün, "Bunun nasıl hissetmesi gerektiğini hayal edebiliyorum" ve empati "Bunun nasıl hissettirdiğini biliyorum." Bir simülasyon, bir sorunun görsel temsilini içerebilir, ancak olmayabilir. Örneğin, kaç kişinin bir şey veya toplam gelir veya ortalama hız için sıralandığını temsil eden sayı sütunlarını yazdırabilir. Gerçeğe uyan bazı özellikleri vardır, bazıları uyuşmaz.
Genellikle başka bir platform gibi davranan bir platform bağlamında kullanılan emülasyon çok daha eksiksizdir. Böylece Windows Phone geliştiricileri, telefon uygulamalarını bir telefona benzeyen ve aynı şekilde davranan bir emülatördeki bir Windows makinesinde çalıştırabilir veya hata ayıklayabilir. Eski Commodore 64 oyunlarınızı bir emülatörde de çalıştırabilirsiniz.
Kelimeler kesin değil. Çoğu uçuş simülatörü, bence daha çok emülatörlere benziyor, ancak isim o kadar sürükleyici olmadıkları bir zamandan beri sıkışmış. Bazı insanlar Word öykünücüsünü platformlar arası durum için ayırır ve başka herhangi bir şey için reddeder. Konuşurken aynısını yaparsanız muhtemelen asla yanlış düşünülmeyeceksiniz, ancak bazı insanların iki kelime arasındaki sınırı biraz farklı bir şekilde yerleştirebileceğini anlayın ve birisi gerçekten doğru ve tam simülasyon.
Her iki terim de kavram taklitinde çok benzer.
Simülasyon veya Simülatörler, temel çekirdek işlevselliğine (özellikle temel metodolojisine) göre hedef modele çok benzeyen çoğaltılmış bir sistem üretmek için yazılımı kullanır.
Öte yandan emülatörler, hedef sistemle karşılaştırıldığında daha çok dış benzerliğe odaklanmaktadır. İşlevlerin "nasıl" taklit edildiği konusunda asgari endişe vardır. Emülatörler genel olarak orijinal sistemle karşılaştırıldığında tamamen farklı bir ortamda (örneğin farklı bir İşletim sistemi) çalışırken kullanılır.