"পরিচালিত" এবং "পরিচালনাবিহীন" এর মধ্যে পার্থক্য


138

নেট সম্পর্কে কথা বলার সময় আমি কখনও কখনও এটি সম্পর্কে শুনি / পড়ি, উদাহরণস্বরূপ "পরিচালিত কোড" এবং "পরিচালনাবিহীন কোড" তবে সেগুলি কী এবং তাদের পার্থক্য কী তা আমার কোনও ধারণা নেই। সংজ্ঞা অনুসারে তাদের পার্থক্য কী? এগুলির দুটি ব্যবহারের পরিণতি কী? এই পার্থক্যটি কি কেবলমাত্র নেট / উইন্ডোজে বিদ্যমান?


উত্তর:


190

পরিচালিত কোড

পরিচালিত কোড হ'ল ভিজুয়াল বেসিক। নেট এবং সি # সংকলক তৈরি করে। এটি সিএলআর (প্রচলিত ভাষা রানটাইম) এ চলে, যা অন্যান্য জিনিসগুলির মধ্যে আবর্জনা সংগ্রহ, রান-টাইম টাইপ চেকিং এবং রেফারেন্স চেকিংয়ের মতো পরিষেবা সরবরাহ করে। সুতরাং, এটিকে ভাবুন, "আমার কোডটি সিএলআর দ্বারা পরিচালিত হয়।"

ভিজ্যুয়াল বেসিক এবং সি # কেবলমাত্র পরিচালিত কোড তৈরি করতে পারে, সুতরাং, আপনি যদি সেই ভাষাগুলির মধ্যে একটিতে অ্যাপ্লিকেশন লিখছেন তবে আপনি সিএলআর দ্বারা পরিচালিত একটি অ্যাপ্লিকেশন লিখছেন। আপনি যদি ভিজ্যুয়াল সি ++ .NET এ কোনও অ্যাপ্লিকেশন লিখছেন তবে আপনি যদি চান তবে আপনি পরিচালিত কোড তৈরি করতে পারেন তবে এটি optionচ্ছিক।

নিয়ন্ত্রণহীন কোড

পরিচালনা না করা কোডটি সরাসরি মেশিন কোডে সংকলন করে। সুতরাং, সেই সংজ্ঞা অনুসারে traditionalতিহ্যবাহী সি / সি ++ সংকলকগণের দ্বারা সংকলিত সমস্ত কোড হ'ল 'পরিচালনাবিহীন কোড'। এছাড়াও, যেহেতু এটি মেশিন কোডে সংকলন করে এবং কোনও অন্তর্বর্তী ভাষা নয় এটি পোর্টেবল নয়।

কোনও নিখরচায় মেমরি পরিচালনা বা সিএলআর সরবরাহ করে না।

যেহেতু আপনি ভিজ্যুয়াল বেসিক বা সি # দিয়ে পরিচালনা করা কোড তৈরি করতে পারবেন না, তাই ভিজ্যুয়াল স্টুডিওতে সমস্ত পরিচালনা না করা কোড সি / সি ++ তে লেখা থাকে।

দুজনকে মেশানো হচ্ছে

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

গুগল করে আমি এখানে একটি উদাহরণ পেয়েছি :

#using <mscorlib.dll>
using namespace System;

#include "stdio.h"

void ManagedFunction()
{
    printf("Hello, I'm managed in this section\n");
}

#pragma unmanaged
UnmanagedFunction()
{
    printf("Hello, I am unmanaged through the wonder of IJW!\n");
    ManagedFunction();
}

#pragma managed
int main()
{
    UnmanagedFunction();
    return 0;
}

11
"যেহেতু আপনি ভিজ্যুয়াল বেসিক বা সি # দিয়ে পরিচালনা না করা কোড তৈরি করতে পারবেন না, তাই সমস্ত পরিচালনা না করা কোড সি / সি ++ তে লেখা আছে?" আপনি জানেন, সি, সি ++, সি #, এবং ভিবি ছাড়াও অন্যান্য ভাষা রয়েছে। আমি পরিচালনা না করা কোড লিখতে ডেলফি ব্যবহার করি। এছাড়াও, পরিচালিত (.NET) এবং নিয়ন্ত্রণহীন (Win32) কোডের মধ্যে একটি পরিবর্তে দৃশ্যমান পার্থক্যটি হ'ল প্রাক্তন সমস্ত .NET ফাংশন ব্যবহার করতে পারেন, যেখানে আধুনিক উইন্ডোজ এপিআই ব্যবহার করেন।
Andreas Rejbrand

22
আইআর থেকে মেশিন কোডকে পৃথক করতে 'পরিচালিত' এবং 'পরিচালনাবিহীন' পদগুলি আবিষ্কার করা হয়েছিল। সুতরাং, তাদের নেটনেট এর প্রসঙ্গে কেবল সত্যই অর্থ রয়েছে । লিনাক্স কার্নেলটি নিয়ন্ত্রণহীন কোডেও সংকলন করে, তবে এটি আলোচনার সাথে সত্যই প্রাসঙ্গিক নয়, তাই না?
কুড়িগ

6
এটি অফ-টপিকটি পাচ্ছে, তবে আমার বক্তব্যটি হ'ল ডেলফিতে ম্যানেজড কোড লেখার বিকল্প আপনার কাছে নেই , তাই উল্লেখ করে যে আপনি ডেলফিতে বিনা ব্যবস্থাপনায় কোড লেখেন তা অত্যন্ত বাড়াবাড়ি। যাই হোক না কেন, আমি আপত্তিজনক বাক্যে "ভিজ্যুয়াল স্টুডিওতে" যুক্ত করেছি। এছাড়াও, টাইপগুলিতে মাথা নেওয়ার জন্য ধন্যবাদ। কোনওভাবে আমি এটি দ্বিতীয় পাঠের মাধ্যমেও মিস করেছি।
কুড়িগ


2
@ জ্যাকসনটেল জাভা .NET এর প্রসঙ্গে নয়, সুতরাং এটি পরিচালনা বা নিয়ন্ত্রণহীন হওয়ার ধারণাটি প্রযোজ্য নয়। কীভাবে জাভা সংকলন করে তার ব্যাখ্যার জন্য স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / 1326071/… দেখুন ।
ইভান ফ্রিশ

84

এটি নেট এবং উইন্ডোজের চেয়ে বেশি সাধারণ। পরিচালিত এমন একটি পরিবেশ যেখানে আপনার স্বয়ংক্রিয় মেমরি পরিচালনা, আবর্জনা সংগ্রহ, সুরক্ষা টাইপ, ... নিয়ন্ত্রণহীন সবকিছুই। সুতরাং উদাহরণস্বরূপ .NET একটি পরিচালিত পরিবেশ এবং সি / সি ++ নিয়ন্ত্রণহীন।


এই সংজ্ঞা দ্বারা, জাভাস্ক্রিপ্ট এছাড়াও নিয়ন্ত্রণহীন কোড হবে, সঠিক?
হ্যাম্পটন টেরি

@ হ্যাম্পটনটারি জাভাস্ক্রিপ্টটিতে স্বয়ংক্রিয় মেমরি পরিচালনা, আবর্জনা সংগ্রহ এবং সুরক্ষা টাইপ আছে ... তাই না। জাভাস্ক্রিপ্ট পরিচালনা করা হয়।
সানকারন

13

ম্যানেজড কোড এমন একটি পার্থক্য যা মাইক্রোসফ্ট দ্বারা কম্পিউটার প্রোগ্রাম কোড সনাক্ত করার জন্য তৈরি করা হয় যা কেবলমাত্র একটি কমন ল্যাঙ্গুয়েজ রানটাইম ভার্চুয়াল মেশিনের "পরিচালনা" এর অধীনে কার্যকর করা হয় (যার ফলে বাইটকোড হয়)।

http://en.wikipedia.org/wiki/Managed_code

http://www.developer.com/net/cplus/article.php/2197621/Managed-Unmanaged-Native-What-Kind-of-Code-Is-This.htm


1
হ্যাঁ. এই উত্তরে যোগ করতে, পরিচালিত কোড হ'ল .NET (সি # তে, উদাহরণস্বরূপ) .NET ফাংশনগুলি ব্যবহার করে আপনি সাধারণত লেখেন এমন কোড। নেটিভ উইন্ডোজ অ্যাপ্লিকেশনগুলি অন্যদিকে নেটিভ উইন্ডোজ এপিআই ব্যবহার করে (যে কোনও ভাষায় লিখিত, সি সম্ভবত), "পরিচালনাবিহীন" are
আন্দ্রেয়াস রেজব্রান্ড
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.