ভার্চুয়াল বা না এমন একটি মেশিনের গণনার একটি মডেল প্রয়োজন যা এটিতে গণনা কীভাবে পরিচালিত হয় তা বর্ণনা করে। সংজ্ঞা অনুসারে, এটি গণনা করার সাথে সাথে এটি গণনার কয়েকটি মডেল প্রয়োগ করে। তারপরে প্রশ্নটি হল: আমাদের ভিএম এর জন্য আমাদের কোন মডেলটি বেছে নেওয়া উচিত? শারীরিক মেশিনগুলি হার্ডওয়ারে কার্যকর ও দক্ষতার সাথে কী করা যায় তার দ্বারা সীমাবদ্ধ। তবে, যেমন আপনি লক্ষ্য করেছেন, ভার্চুয়াল মেশিনগুলিতে এ জাতীয় কোনও বাধা নেই, এগুলি নির্বিচারে উচ্চ স্তরের ভাষা ব্যবহার করে সফ্টওয়্যারে সংজ্ঞায়িত করা হয়।
প্রকৃতপক্ষে, ভার্চুয়াল মেশিনগুলি রয়েছে যা আপনি বর্ণনা হিসাবে উচ্চ-স্তরের। তাদের প্রোগ্রামিং ভাষা বলা হয় । উদাহরণস্বরূপ সি স্ট্যান্ডার্ড তার পৃষ্ঠাগুলির সিংহভাগ তথাকথিত "সি অ্যাবস্ট্রাক্ট মেশিন" এর জন্য একটি মডেল সংজ্ঞায়িত করতে উত্সর্গ করে যা সি প্রোগ্রামগুলি কীভাবে আচরণ করে এবং এক্সটেনশনের মাধ্যমে (যেমন নিয়ম হয়) কীভাবে একটি সি সি সংকলক (বা দোভাষী) আচরণ করা উচিত
অবশ্যই, আমরা সাধারণত যে একটি ভার্চুয়াল মেশিন কল না। একটি ভিএম সাধারণত নীচের স্তরের এমন কিছু বোঝায় যা হার্ডওয়ারের কাছাকাছি, সরাসরি প্রোগ্রাম করার উদ্দেশ্যে নয়, দক্ষতার সাথে সম্পাদন করার জন্য ডিজাইন করা হয়। এই নির্বাচনের পক্ষপাতিত্বের অর্থ হ'ল যে উচ্চ-স্তরের কম্পোজেবল কোড গ্রহণ করে এমন কিছু (যেমন আপনি বর্ণনা করেন) কোনও ভিএম হিসাবে বিবেচিত হবে না কারণ এটি উচ্চ-স্তরের কোড কার্যকর করে।
তবে বিন্দুটি পেতে, ভিএম তৈরির কিছু কারণ এখানে রয়েছে (যেমন বাইটোকোড সংকলক দ্বারা লক্ষ্যযুক্ত কিছু) নিবন্ধভিত্তিক ভিত্তিক বা এর মতো। স্ট্যাক এবং রেজিস্টার মেশিনগুলি অত্যন্ত সহজ। প্রতিটি নির্দেশাবলীর জন্য নির্দেশাবলী, কিছু রাজ্য এবং শব্দার্থবিজ্ঞানের একটি ক্রম রয়েছে (একটি ফাংশন স্টেট -> রাজ্য)। জটিল গাছ হ্রাস, অপারেটর নজির নেই। এটিকে পার্সিং, বিশ্লেষণ এবং সম্পাদন করা খুব সহজ, কারণ এটি একটি ন্যূনতম ভাষা (সিনট্যাকটিক চিনিটি সংকলিত) এবং মানব-পঠনের পরিবর্তে মেশিন-রিড হওয়ার জন্য তৈরি করা হয়েছে।
বিপরীতে, এমনকি সহজ সি-এর মতো ভাষাগুলিও পার্সিং করা বেশ শক্ত, এবং এটি সম্পাদন করার জন্য অ-স্থানীয় বিশ্লেষণের প্রয়োজন যেমন পরীক্ষা করা এবং প্রসারণ করা প্রকারগুলি, ওভারলোডগুলি সমাধান করা, একটি প্রতীক টেবিল বজায় রাখা, স্ট্রিং আইডেন্টিফায়ারগুলি সমাধান করা, রৈখিক পাঠ্যকে অগ্রাধিকার দ্বারা চালিত এএসটিতে রূপান্তর করা like , ইত্যাদি। এটি এমন ধারণাগুলি তৈরি করে যা মানুষের কাছে প্রাকৃতিক আসে তবে মেশিনগুলির দ্বারা কঠোরভাবে বিপরীত হতে হয়।
জেভিএম বাইটকোড, উদাহরণস্বরূপ, দ্বারা নির্গত হয় javac
। এটি ভার্চুয়াল কখনও কখনও মানুষের দ্বারা পড়তে বা লেখার দরকার পড়ে না, তাই মেশিন দ্বারা এটি ব্যবহারের দিকে চালিত হওয়া স্বাভাবিক। আপনি যদি এটি মানুষের জন্য অনুকূলিত করেন তবে জেভিএম প্রতিটি স্টার্টআপে কোডটি পড়ে, পার্স করবে, বিশ্লেষণ করবে এবং তারপরে যেকোন উপায়ে সরল মেশিনের মডেলের অনুরূপ একটি মধ্যবর্তী প্রতিনিধিত্বতে রূপান্তর করবে । মাঝের মানুষটিকেও কেটে ফেলতে পারে।