পরিচালিত ভাষা বনাম সংকলিত ভাষার পার্থক্য?


18

লোকেরা সংকলিত ভাষা এবং পরিচালিত ভাষার মধ্যে পার্থক্য করার চেষ্টা করার সময় আমি বিভ্রান্ত হয়ে পড়ি। অভিজ্ঞতা থেকে, আমি বুঝতে পেরেছি যে সর্বাধিক সংকলিত ভাষাগুলি সি, সি ++ হিসাবে বিবেচিত হয় তবে পরিচালিত ভাষাগুলি জাভা, সি # হয় (স্পষ্টতই আরও কিছু আছে তবে এটি কয়েকটি উদাহরণ) are তবে দুটি ধরণের ভাষার মধ্যে মূল পার্থক্য কী?

আমার বোধগম্যতা হল যে কোনও প্রোগ্রাম, আপনি যে ভাষা ব্যবহার করেন তা নির্বিশেষে নিম্ন-স্তরের মেশিন কোডে "সংকলিত" করা হয় যার অর্থ ব্যাখ্যা করা হয়, সুতরাং কিন্ডা পরিচালিত ভাষাগুলিকে সংকলিত ভাষার একটি উপসেট বানায় (এটি, সমস্ত পরিচালিত ভাষা হ'ল সংকলিত ভাষা কিন্তু অন্যান্য উপায়ে নয়)?


2
এই শব্দটি মাইক্রোসফ্ট দ্বারা তৈরি করা হয়েছে, সংকীর্ণ অর্থে জাভাও পরিচালনা করা হয়। প্রায় সব ক্ষেত্রেই আমরা পরিচালিত ভাষাগুলির মতো
সেগুলির

নোট করুন যে কোনও ভাষার মধ্যে কোড রয়েছে যা (স্ট্যাটিকালি) কোডটি রানটাইমের আগে (জাভা এর মতো) আরও কিছু মেশিনকে ম্যানেজ করে এমন কিছু সংকলন করে যা রানটাইম (পাইথনের মতো) এর সময় এটি করে থাকে। একটি প্রধান পার্থক্য হ'ল রানটাইমের আগে স্ট্যাটিকালি এটি সংকলন কমারকে কিছু অপ্টিমাইজেশন করার সুযোগ দেয় যার ফলস্বরূপ তীব্র গতির উন্নতি হতে পারে (জাভা এর জেআইটি, শাখার পূর্বাভাসের কোড পুনরায় সাজানো ইত্যাদি)।
শিবান ড্রাগন

6
@ শিভানড্রাগন, একটি "ভাষা" কিছুই সংকলন করে না। এর বাস্তবায়ন হয়। এবং আপনি পাইথনটি স্থিতিশীলভাবে সংকলন করতে পারেন (উদাহরণস্বরূপ পাইপাই বা আয়রন পাইথন দেখুন)। ওও, ডায়নামিকভাবে টাইপ করা ভাষার সাথে এটি দক্ষতার সাথে করা সত্যিই কঠিন ("ট্রেসিং জেআইটি", "বিমূর্ত ব্যাখ্যা" ইত্যাদি দেখুন)
এসকে-লজিক

@ এসকে-যুক্তি: সম্মত, আমি একটি বাডি বলেছি। আমি প্ল্যাটফর্মটি উল্লেখ করতে চেয়েছি, ভাষাটি নয়।
শিবান ড্রাগন

@ শ্যাবুনক আসলে আমি বলতে চাই সংকলিত হ'ল পরিচালিত একটি উপসেট। একটি পরিচালিত ভাষা কোনও সংকলিত ভাষা যা করতে পারে তা করতে পারে (কার্যত একই গতিতে) এবং তারপরেও যেহেতু একটি পরিচালিত ভাষা সংকলিত হতে পারে। সি পরিচালিত ভাষার বৈশিষ্ট্যগুলি দেওয়ার জন্য আপনাকে একটি "ভিএম" তৈরি করতে হবে এবং প্রকৃতপক্ষে এটিকে একটি পরিচালিত ভাষা তৈরি করতে হবে।
বিল কে

উত্তর:


47

পার্থক্যটি "সংকলিত" বনাম "পরিচালিত" তে নেই, এগুলি দুটি অরথোগোনাল অক্ষ। "পরিচালিত" দ্বারা তারা সাধারণত বোঝায় একটি আবর্জনা-সংগ্রহ করা মেমরি পরিচালনার উপস্থিতি এবং / অথবা ভার্চুয়াল মেশিনের পরিকাঠামোর উপস্থিতি। উভয়ই সংকলনের সাথে একেবারেই কিছু করার নেই এবং যা কিছু লোক এর বিপরীতে বলে মনে করে।

এই সমস্ত "পার্থক্য" বেশ ঝাপসা, কৃত্রিম এবং অপ্রাসঙ্গিক, যেহেতু একক রানটাইমের সময় পরিচালিত এবং নিয়ন্ত্রণহীন মেমরি মিশ্রিত করা সর্বদা সম্ভব এবং সংকলন এবং ব্যাখ্যার মধ্যে পার্থক্যও খুব অস্পষ্ট।


2
মূলত এটিই আমার মনে ছিল, তবে আমি প্রচুর লোকের কাছে এসেছি যারা এই পার্থক্য তৈরি করে চলেছে। সুস্পষ্ট উত্তরের জন্য ধন্যবাদ।
l46kok

পরিচালিত কোড মানে আপনি রানটাইম চলাকালীন যে কার্যকরকরণের পরিবেশটি চালাচ্ছেন, তার মধ্যবর্তী ভাষার যত্ন নেওয়া উচিত, তাই না? সুতরাং যে মধ্যবর্তী ভাষা (বাইটকোড বলুন) একটি সংকলক দ্বারা উত্পাদিত করতে হবে। আইএমও, দম্পতিরা "ম্যানেজড" কোড এবং "সংকলন" ধারণাটি খানিকটা কম। তবে, যদি ভাষাটি "সংকলিত" করা হয়, তবে এটি প্রদর্শিত হয় না যে এটি একটি পরিচালিত কোড দেয় (
উদা

@ জগলসার, না, মধ্যবর্তী ভাষাগুলি অরথোগোনাল। পরিচালিত মানে ভাষার রানটাইমের সাথে একটি জিসি সংহত করা। উদাহরণস্বরূপ, ওসিএএমএল রানটাইমটি "পরিচালিত" হয়, যদিও এটি সরাসরি স্থানীয়ভাবে সংকলন করে।
এসকে-যুক্তি

8

উইকিপিডিয়া উদ্ধৃত:

ম্যানেজড কোড এমন একটি শব্দ যা মাইক্রোসফ্ট দ্বারা কম্পিউটার প্রোগ্রাম উত্স কোড সনাক্ত করার জন্য তৈরি করা হয় যা একটি সাধারণ ভাষা রানটাইম ভার্চুয়াল মেশিনের পরিচালনায় প্রয়োজন হয় এবং কার্যকর হবে (ফলস্বরূপ বাইকোড)।

পরিচালিত কোডটির সঞ্চালনের জন্য একটি রানটাইম প্রয়োজন (। নেট সিএলটি এর মতো)।


5
পরিচালিত কোডটির কোনও ফ্রেমওয়ার্কের সাথে কোনও সম্পর্ক নেই। এটি একটি রানটাইম প্রয়োজন যা স্মৃতি পরিচালনা করে।
ওপড

সম্ভবত আমার কথাটি কিছুটা বন্ধ হয়ে গেছে, কিন্তু .NET কাঠামো আসলে "সাধারণ ভাষা রানটাইম" নয়?
janvdl

3
না। এর মধ্যে সিএলআর অন্তর্ভুক্ত রয়েছে তবে এতে বেস ক্লাসের লাইব্রেরি, আইএল স্পেসিফিকেশন এবং আরও অনেক কিছু রয়েছে।
ওপড

4

আমি মনে করি একটি পার্থক্য করা উচিত, তবে এটি "সংকলিত" এবং "পরিচালিত" এর মধ্যে অগত্যা নয়। এগুলি বিপরীত নয়; একটি ভাষা সংকলন করা যায় এবং পরিচালনা করা যায় না, বা ব্যাখ্যা করা হয় (সংকলিত হয় না) এবং পরিচালিত হয়, বা উভয়ই বা এমনকি হয় না।

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

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

সুতরাং, ভাষাগুলি সাধারণত "সংকলিত" বা "ব্যাখ্যা করা" এবং "অপরিকল্পিত" (বা "নেটিভ") এবং "পরিচালিত" হিসাবে বর্ণনা করা যায়। এমন ভাষাগুলি রয়েছে যা এগুলির কোনও সংমিশ্রণ হিসাবে সম্ভাব্য "ইন্টারপ্রিটেড নেটিভ" ব্যতীত বর্ণনা করা যেতে পারে (যা কেবল হাতে লিখিত হেক্সাডেসিমেল ওপকোডের ক্ষেত্রেই সত্য, যেখানে বিকাশকারী লিখেছেন যা সম্পাদন করা হয়); যদি আপনি ব্যাখ্যার স্তরটিকে "রানটাইম" হিসাবে বিবেচনা করেন (যার পক্ষে পক্ষে তর্ক করা সহজ এবং যার পক্ষে তর্ক করা শক্ত) তবে সমস্ত বর্ণিত ভাষাগুলি "পরিচালিত" হয়।

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


"ভাষাগুলি সাধারণত" সংকলিত "বা" ব্যাখ্যা "হিসাবে বর্ণনা করা যায় - না, তারা পারে না। সংকলন এবং ব্যাখ্যা হ'ল ভাষা নয়, সংকলক এবং দোভাষী। "সংকলিত ভাষা" শব্দটি এমনকি বোঝায় না। ইংরাজী যদি টাইপ করা ভাষা হত তবে এটি টাইপ ত্রুটি হবে।
Jörg W Mittag

2
সংকলক এবং দোভাষীরা সাধারণত সংকলন বা ব্যাখ্যার জন্য ডিজাইন করা ভাষার সুনির্দিষ্ট উপভাষাগুলি সংকলন এবং ব্যাখ্যা করতে পাওয়া যায়। আমি জানি যে কারওও জাভাস্ক্রিপ্ট উত্স কোডটি সংকলন করছে না, এবং কারও সি ​​# এর ব্যাখ্যা দিচ্ছে না। ভাষাগুলি একরকম বা অন্যভাবে গ্রাস করার জন্য ডিজাইন করা হয়েছে । এই হিসাবে, সাধারণত ভাষাটিকে "সংকলিত" বা "ব্যাখ্যা করা" হিসাবে উল্লেখ করা সাধারণত গ্রহণযোগ্য কারণ কারণ ভাষাটি যে পুরো পরিবেশে ভাষাটি ব্যবহৃত হয়, সেই দুটি পদক্ষেপের মধ্যে একটি অন্তর্ভুক্ত।
কিথস


en.wikedia.org/wiki/Interpreted_language - "তাত্ত্বিকভাবে যে কোনও ভাষা সংকলিত বা ব্যাখ্যা করা যেতে পারে, তাই এই পদবি সাধারণ প্রয়োগ বাস্তবায়নের কারণে নিখুঁতভাবে প্রয়োগ করা হয়, কোনও ভাষার প্রয়োজনীয় কিছু সম্পত্তি নয়।"
কিথস

@ কিথস, উইকিপিডিয়া প্রায় নিখুঁত নয়। একটি নিবন্ধ নির্দিষ্ট অবৈধ শর্তের জন্য উপস্থিত থাকার বিষয়টি এই পদটিকে আর বৈধ করে তোলে না। হ্যাঁ, ভাষাগুলি সর্বদা নির্ধারিত একটি কার্যকর পদ্ধতিটিকে মনে রেখে ডিজাইন করা হয় তবে কেবল তাদের ডিজাইনারদের অভিপ্রায়কে ভিত্তিতে এগুলি "সংকলিত" বা "ব্যাখ্যা" করা ব্র্যান্ড করা এখনও প্রতিক্রিয়াশীল। এবং, কোনও ব্যাখ্যা হিসাবে, কোনও উপায়েই সঠিক "দোভাষী" খুঁজে পাওয়া সত্যিই কঠিন। টিসিএল সম্ভবত এটির মতো শেষ। অন্য সমস্ত তথাকথিত "দোভাষী" আসলে সংকলক।
এসকে-যুক্তি

2

সাধারণ ভাষায় পরিচালিত ভাষা এটি একটি উচ্চ-স্তরের ভাষা যা একটি সঞ্চালনের জন্য রান-টাইম পরিবেশের দ্বারা সরবরাহিত পরিষেবার উপর নির্ভর করে যেমন আবর্জনা সংগ্রহ পরিষেবা, এজন্য এটিকে সাধারণভাবে পরিচালিত বলা হয় তবে এটি কেবলমাত্র পরিষেবাই এটি ব্যবহার করে না , এবং এই পরিষেবাগুলির মধ্যে কয়েকটি হ'ল security services, exception handling, standard typesএটি Common Language Run-time CLRকার্যকর। যেমন নেট ভাষা বা জাভা ভার্চুয়াল পরিবেশ যা জাভা ভার্চুয়াল মেশিন JVM ব্যবহার করে virtual

অপরিচালিত ভাষা একটি নিম্ন স্তরের ভাষা ভার্চুয়াল রান-টাইম সেবা বা মধ্যবর্তী ভাষা, মত ভাষার জন্য প্রয়োজন ছাড়াই অপারেটিং সিস্টেমের মাধ্যমে সরাসরি এক্সিকিউটেবল হয় C, C++অপরিচালিত কোড যেমন ভাষায় দ্বারা উত্পাদিত গ্রন্থাগার রুটিন যে পরিবর্তনশীল ওএস লিঙ্ক করা হয়েছে পেতে ব্যবহার ডিএলএল (ডায়নামিক লিংক লাইব্রেরি) নামক কোডটি কার্যকর করা যায়, পরিচালনা না করা কোডের চেয়ে নিয়ন্ত্রিত কোডটি সরাসরি মেমরিটিতে অ্যাক্সেস করে তবে আপনি যদি কোনও হার্ডওয়্যার ড্রাইভার বা অত্যাধুনিক ভিডিও গেম তৈরি না করে থাকেন তবে আপনি বাস্তবে নিয়ন্ত্রিত ভাষাগুলি ব্যবহার করতে চান না বিশেষত ভূমিকা রাষ্ট্রের মতো অনভিজ্ঞ ডেভেলপারদের সাথে কাজ করা বিপজ্জনক হয়ে উঠতে পারেwith great power comes great responsibility, এবং এই কারণেই বিকাশকারীগণকে সিস্টেমের নীচে ডাইভিং না করে এক্সটেনসিবল কোড তৈরি করতে সহায়তা করার জন্য পরিচালিত ভাষাগুলি বিদ্যমান, তবে তারপরেও আপনার প্রয়োজন মতো মিশ্র কোড তৈরি করতে পারেন, এই নিবন্ধগুলি এগুলি সমস্ত ব্যাখ্যা করে:

পরিচালিত / অপরিবর্তিত কোড আন্তঃক্রিয়াশীলতার একটি ওভারভিউ

নমুনা: নিয়ন্ত্রণহীন সি ++, সি ++ / সিএলআই এবং সি # কোড মিশ্রণ করা হচ্ছে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.