আমি মনে করি একটি পার্থক্য করা উচিত, তবে এটি "সংকলিত" এবং "পরিচালিত" এর মধ্যে অগত্যা নয়। এগুলি বিপরীত নয়; একটি ভাষা সংকলন করা যায় এবং পরিচালনা করা যায় না, বা ব্যাখ্যা করা হয় (সংকলিত হয় না) এবং পরিচালিত হয়, বা উভয়ই বা এমনকি হয় না।
একটি "সংকলিত" ভাষাটি হ'ল একমাত্র যার মধ্যে এমন একটি পদক্ষেপ রয়েছে যা বিকাশকারী দ্বারা রচিত উত্স কোডটিকে আরও কিছু নিয়মিত "বাইটোকোড" রূপান্তরিত করে যা মেশিন দ্বারা সম্পাদিত হয়। "মেশিন" প্রকৃত প্রসেসর বা "ভার্চুয়াল মেশিন" হতে পারে যা বাইটোকোডগুলিতে "স্থানীয়" মেশিনের নির্দেশিকায় অনুবাদ করতে অতিরিক্ত ক্রিয়াকলাপ সম্পাদন করে। "সংকলিত" ভাষার প্রতিশব্দ হ'ল "বর্ণিত" ভাষা, যেখানে উত্স কোডটি কোনও সংকলনের পদক্ষেপ ছাড়াই রানটাইম, লাইনে লাইন দ্বারা নির্ধারিত সময়ে বাইটকোড নির্দেশিকায় রূপান্তরিত হয়। "জেআইটি" (জাস্ট ইন টাইম) থেকে তাদের মধ্যে একটি সংকর হ'ল "জিটিং", যা সাধারণত সম্পাদনকারী মেশিনের দ্বারা এক-সময় পদক্ষেপ হিসাবে ব্যাখ্যা করা হয়;
একটি "পরিচালিত" ভাষা এমন একটি ভাষা যা প্রোগ্রাম তৈরির জন্য ডিজাইন করা হয় যা নির্দিষ্ট রানটাইম পরিবেশের মধ্যে গ্রাস করা হয়, যার প্রায়শই বাইটকোড দোভাষী অন্তর্ভুক্ত থাকে; একটি "ভার্চুয়াল মেশিন" যা প্রোগ্রামটির কোড নেয় এবং কিছু অতিরিক্ত মেশিন বা পরিবেশ-নির্দিষ্ট রূপান্তর সম্পাদন করে। পরিবেশের মধ্যে মেমরি পরিচালনাও অন্তর্ভুক্ত থাকতে পারে, যেমন একটি "আবর্জনা সংগ্রহকারী" এবং অন্যান্য "সুরক্ষা" বৈশিষ্ট্যগুলি যা প্রোগ্রাম এবং স্পেস এবং সরঞ্জামগুলির "স্যান্ডবক্স" এর মধ্যে পরিচালিত করার উদ্দেশ্যে করা হয়, তবে এই জাতীয় বৈশিষ্ট্যগুলি "পরিচালিত" রানটাইমগুলির একমাত্র ডোমেন নয় । কার্যত সমস্ত অনুবাদিত ভাষাগুলি পরিচালিত হিসাবে বিবেচিত হতে পারে, কারণ তাদের "ইউজার" কোডের লাইনটির নিচে মৃত্যুদন্ড কার্যকর করার জন্য দোভাষী প্রয়োজন হয়। এছাড়াও, জেভিএম এবং। নেট ভাষা (জাভা, স্কালা, সি #, ভিবি, এফ #, আয়রনউইউথ ওয়েজ) একটি অন্তর্বর্তী ভাষা বা আইএল-তে সংকলিত হয় যা আকারে এবং বাইনারি সমাবেশ ভাষার সাথে ফাংশনে অনুরূপ, তবে কোনও "নেটিভ" নির্দেশাবলীতে 100% মেনে চলে না। এই নির্দেশাবলী জেভিএম, বা। নেট এর সিএলআর দ্বারা কার্যকর করা হয়, যা তাদের কার্যকরভাবে সিপিইউ আর্কিটেকচার এবং / অথবা মেশিনের ওএসের জন্য নির্দিষ্ট বাইনারি নির্দেশগুলিতে অনুবাদ করে।
সুতরাং, ভাষাগুলি সাধারণত "সংকলিত" বা "ব্যাখ্যা করা" এবং "অপরিকল্পিত" (বা "নেটিভ") এবং "পরিচালিত" হিসাবে বর্ণনা করা যায়। এমন ভাষাগুলি রয়েছে যা এগুলির কোনও সংমিশ্রণ হিসাবে সম্ভাব্য "ইন্টারপ্রিটেড নেটিভ" ব্যতীত বর্ণনা করা যেতে পারে (যা কেবল হাতে লিখিত হেক্সাডেসিমেল ওপকোডের ক্ষেত্রেই সত্য, যেখানে বিকাশকারী লিখেছেন যা সম্পাদন করা হয়); যদি আপনি ব্যাখ্যার স্তরটিকে "রানটাইম" হিসাবে বিবেচনা করেন (যার পক্ষে পক্ষে তর্ক করা সহজ এবং যার পক্ষে তর্ক করা শক্ত) তবে সমস্ত বর্ণিত ভাষাগুলি "পরিচালিত" হয়।
আপনি যদি প্রযুক্তিগত পেতে চান তবে আজকাল একটি মাল্টিটাস্কিং ওএসকে লক্ষ্য করে প্রায় সমস্ত প্রোগ্রাম "পরিচালিত" হয়; ওএস চলমান প্রতিটি প্রোগ্রামের জন্য একটি "ভার্চুয়াল মেশিন" তৈরি করবে, যাতে প্রোগ্রামটি মনে করে (বা কমপক্ষে অন্যথায় জানতে হবে না) যে এটি কেবলমাত্র চলমান কাজ। কোডটি নিজের মধ্যে এবং অন্যান্য রেফারেন্সযুক্ত লাইব্রেরিতে কল করতে পারে যেন সেই প্রোগ্রামটি কেবল মেমরিতে লোড হয়; একইভাবে, ডেটা সংরক্ষণ এবং নিয়ন্ত্রণের জন্য র্যাম এবং অন্যান্য উচ্চতর মেমরির বরাদ্দ করার জন্য কলগুলি এমনভাবে কোড করে থাকে যেন পুরো মেমরি আর্কিটেকচারটি উপলভ্য ছিল। ভিএম (এবং এর পিছনে থাকা ওএস) তারপরে বিভিন্ন মেমরি পয়েন্টারগুলিকে প্রোগ্রামের আসল অবস্থান, তার ডেটা এবং হুকগুলি ডিভাইস ড্রাইভার ইত্যাদিতে অনুবাদ করে এটি বেশিরভাগ ক্ষেত্রে মেমরি অফসেট প্রয়োগ করে করা হয় (প্রতিটি ভিএম 2 জিবি একটি ব্লক পায় বা স্মৃতি যাই হোক না কেন, এক্স ঠিকানা থেকে শুরু করে যা প্রোগ্রামটি আচরণ করতে পারে যে এক্সটি ঠিকানার ঠিকানা ছিল 0) এবং এটি করা খুব সস্তা, তবে ওএস কার্নেল এর জন্য দায়ী যেগুলি রয়েছে যেমন প্রক্রিয়া নির্ধারণ এবং আন্ত-প্রক্রিয়া যোগাযোগ, যা ব্যবস্থাপনার জন্য কৌশলযুক্ত। যাইহোক, এই বেসিক প্যাটার্নটি সাধারণত "পরিচালিত" হিসাবে বিবেচিত হয় না, কারণ প্রোগ্রামটি জানতে হবে না যে এটি কোনও ভার্চুয়াল মেশিন দ্বারা চালিত হচ্ছে এবং প্রায়শই তার বরাদ্দকৃত স্মৃতিটিকে "পরিষ্কার" রাখার জন্য এখনও দায়ী। এমএস-ডস কমান্ড লাইনে চালিত হওয়ার জন্য তৈরি করা একটি প্রোগ্রাম নতুন উইন্ডোজ ওএসে চালানো যেতে পারে যেগুলির নীচে এমএস-ডস পরিবেশ নেই; প্রোগ্রামটির পরিবর্তে "ভার্চুয়াল কনসোল" পরিবেশ দেওয়া হয় এবং প্রদত্ত যে এটি "স্যান্ডবক্স" ছাড়ার চেষ্টা করবে না