এই বিষয়টিতে কিছু উপাদান পড়ার পরে আমি এখনও নিশ্চিত নই যে একটি সংকলিত ভাষা এবং একটি ব্যাখ্যা করা ভাষার মধ্যে পার্থক্য কী। আমাকে বলা হয়েছিল এটি জাভা এবং জাভাস্ক্রিপ্টের মধ্যে একটি পার্থক্য। কেউ দয়া করে এটি বুঝতে আমাকে সহায়তা করবে?
এই বিষয়টিতে কিছু উপাদান পড়ার পরে আমি এখনও নিশ্চিত নই যে একটি সংকলিত ভাষা এবং একটি ব্যাখ্যা করা ভাষার মধ্যে পার্থক্য কী। আমাকে বলা হয়েছিল এটি জাভা এবং জাভাস্ক্রিপ্টের মধ্যে একটি পার্থক্য। কেউ দয়া করে এটি বুঝতে আমাকে সহায়তা করবে?
উত্তর:
সংকলিত এবং ব্যাখ্যা করা ভাষার মধ্যে পার্থক্য কী?
পার্থক্য না ভাষায়; এটি বাস্তবায়ন হয় ।
এটি আমার সিস্টেমের বাইরে চলে আসার পরে, একটি উত্তর এখানে দেওয়া হয়েছে:
সংকলিত প্রয়োগে, আসল প্রোগ্রামটি দেশীয় মেশিনের নির্দেশিকায় অনুবাদ করা হয়, যা সরাসরি হার্ডওয়্যার দ্বারা সম্পাদিত হয়।
একটি ব্যাখ্যাযুক্ত বাস্তবায়নে আসল প্রোগ্রামটি অন্য কোনও কিছুতে অনুবাদ করা হয়। "দোভাষী" নামে পরিচিত আরেকটি প্রোগ্রাম, তারপরে "অন্য কিছু" পরীক্ষা করে এবং যে পদক্ষেপের জন্য বলা হয় তা সম্পাদন করে। ভাষা এবং এর প্রয়োগের উপর নির্ভর করে "অন্য কিছু" এর বিভিন্ন রূপ রয়েছে। আরও জনপ্রিয় থেকে কম জনপ্রিয়, "অন্য কিছু" হতে পারে
ভার্চুয়াল মেশিনের বাইনারি নির্দেশাবলী, প্রায়শই বাইকোড নামে পরিচিত , যেমনটি লুয়া, পাইথন, রুবি, স্মলটালক এবং অন্যান্য অনেক সিস্টেমে করা হয় (১৯ the০ এর দশকে ইউসিএসডি পি-সিস্টেম এবং ইউসিএসডি পাস্কাল দ্বারা পদ্ধতিটি জনপ্রিয় হয়েছিল)
মূল প্রোগ্রামের গাছের মতো উপস্থাপনা, যেমন একটি অ্যাবস্ট্রাক্ট-সিনট্যাক্স ট্রি, যেমন অনেকগুলি প্রোটোটাইপ বা শিক্ষামূলক দোভাষীদের জন্য করা হয়
TCR এর অনুরূপ উত্স প্রোগ্রামটির একটি টোকেনাইজড উপস্থাপনা
উত্স প্রোগ্রামের চরিত্রগুলি, যেমনটি এমআইএনটি এবং ট্র্যাকে হয়েছিল
একটি বিষয় যা সমস্যাটিকে জটিল করে তোলে তা হ'ল বাইটকোডকে স্থানীয় মেশিনের নির্দেশিকায় অনুবাদ করা সম্ভব । সুতরাং, একটি সফল ব্যাখ্যাযুক্ত বাস্তবায়ন শেষ পর্যন্ত একটি সংকলক অর্জন করতে পারে। সংকলক যদি গতিশীলভাবে চলতে থাকে, পর্দার আড়ালে, এটি প্রায়শই একটি ইন-টাইম সংকলক বা জেআইটি সংকলক বলে। জেআইটি জাভা, জাভাস্ক্রিপ্ট, লুয়া এবং আরও অনেক ভাষার সাহসের জন্য তৈরি করা হয়েছে। এই মুহুর্তে আপনার একটি হাইব্রিড বাস্তবায়ন থাকতে পারে যাতে কিছু কোড ব্যাখ্যা করা হয় এবং কিছু কোড সংকলিত হয়।
এই পার্থক্যটি প্রদর্শনের জন্য জাভা এবং জাভাস্ক্রিপ্ট মোটামুটি খারাপ উদাহরণ , কারণ উভয়ই বর্ণিত ভাষা । জাভা (ব্যাখ্যা করা) এবং সি (বা সি ++) (সংকলিত) এর চেয়ে ভাল উদাহরণ হতে পারে।
স্ট্রাইকড-থ্রো টেক্সট কেন? যেহেতু এই উত্তরটি সঠিকভাবে উল্লেখ করেছে, ব্যাখ্যা / সংকলন একটি ভাষার একটি কংক্রিট বাস্তবায়ন সম্পর্কে, প্রতি সেচ ভাষা সম্পর্কে নয় । "সি একটি সংকলিত ভাষা" এর মত বিবৃতি সাধারণত সত্য হলেও, কাউকে সি ভাষার দোভাষী লিখতে বাধা দেওয়ার কিছুই নেই। আসলে, সি এর জন্য দোভাষী উপস্থিত রয়েছে ।
মূলত, সংকলিত কোডটি সরাসরি কম্পিউটারের সিপিইউ দ্বারা কার্যকর করা যায়। অর্থাৎ এক্সিকিউটেবল কোড সিপিইউর "নেটিভ" ভাষা ( সমাবেশ ভাষা ) তে নির্দিষ্ট করা আছে।
বর্ণিত ভাষার কোড অবশ্য রান-টাইমে কোনও ফর্ম্যাট থেকে সিপিইউ মেশিনের নির্দেশিকায় অনুবাদ করা উচিত। এই অনুবাদ একজন দোভাষী দ্বারা করা হয়েছে।
এটা নির্বাণ আরেকটি উপায় যে ব্যাখ্যা ভাষা কোড মেশিন নির্দেশাবলী অনুবাদ করা হয় ধাপে ধাপে যখন প্রোগ্রাম মৃত্যুদন্ড কার্যকর করা হচ্ছে, যখন কম্পাইল ভাষায় আছে কোড অনুবাদ করা হয়েছে সামনে প্রোগ্রাম সঞ্চালনের।
সংকলক বনাম ইন্টারপ্রিটার ল্যাঙ্গুয়েজের মধ্যে বেসিক পার্থক্য এখানে।
সংকলক ভাষা
দোভাষী ভাষা:
একটি সংকলক, সাধারণভাবে, উচ্চ স্তরের ভাষার কম্পিউটার কোড পড়ে এবং এটি পি-কোড বা নেটিভ মেশিন কোডে রূপান্তর করে। একজন ইন্টারপ্রেটার সরাসরি পি-কোড বা একটি ব্যাখ্যা করা কোড যেমন বেসিক বা লিস্প থেকে চলে। সাধারণত, সংকলিত কোডটি আরও দ্রুত সঞ্চালিত হয়, আরও কমপ্যাক্ট এবং ইতিমধ্যে সমস্ত সিনট্যাক্স ত্রুটি এবং অনেকগুলি অবৈধ রেফারেন্স ত্রুটি খুঁজে পেয়েছে। অ্যাপ্লিকেশন প্রভাবিত কোডটি ব্যাখ্যা করার চেষ্টা করার পরে ব্যাখ্যাযুক্ত কোড কেবল এ জাতীয় ত্রুটিগুলি খুঁজে পায়। অনুলিখিত কোডটি প্রায়শই সহজ অ্যাপ্লিকেশনগুলির জন্য ভাল যা কেবল একবার বা সর্বাধিক দু'বার ব্যবহৃত হতে পারে, এমনকি প্রোটোটাইপিংয়ের জন্যও। সংকলিত কোড গুরুতর অ্যাপ্লিকেশনগুলির জন্য ভাল। একটি সংকলক প্রথমে পুরো প্রোগ্রামটি গ্রহণ করে, ত্রুটিগুলির জন্য পরীক্ষা করে, এটি সংকলন করে এবং পরে এটি সম্পাদন করে। অন্যদিকে, একজন দোভাষী এই রেখাটি লাইন দিয়ে করেন, সুতরাং এটি একটি লাইন নেয়, ত্রুটির জন্য এটি পরীক্ষা করে,
আপনার যদি আরও তথ্যের প্রয়োজন হয় তবে "সংকলক এবং দোভাষীর মধ্যে পার্থক্য" কেবল গুগলের জন্য।
এটি একটি খুব ন্যূনতম পার্থক্য এবং প্রকৃতপক্ষে সাধারণত কোনও ভাষার নিজস্ব সম্পত্তি নয়, বরং আপনি সেই ভাষায় কোড প্রয়োগ করতে যে প্রোগ্রামটি ব্যবহার করছেন তা নয়।
তবে বেশিরভাগ ভাষা মূলত একরকম বা অন্য রূপে ব্যবহৃত হয় এবং হ্যাঁ, জাভা মূলত সর্বদা সংকলিত হয়, যখন জাভাস্ক্রিপ্ট মূলত সর্বদা ব্যাখ্যা করা হয়।
সোর্স কোডটি কম্পাইল করার জন্য এটিতে এমন একটি প্রোগ্রাম চালানো হয় যা বাইনারি, এক্সিকিউটেবল ফাইল তৈরি করে, যখন চালানো হয়, উত্স অনুসারে আচরণ করে has উদাহরণস্বরূপ, জাভ্যাক মানব-পঠনযোগ্য। জাভা ফাইলগুলি মেশিন-পঠনযোগ্য। ক্লাস ফাইলগুলিতে সংকলন করে।
উত্স কোডটি ব্যাখ্যা করার জন্য এটিতে এমন একটি প্রোগ্রাম চালানো হয় যা কোনও মধ্যস্থতাকারী ফাইল তৈরি না করেই সংজ্ঞায়িত আচরণ তৈরি করে। উদাহরণস্বরূপ, যখন আপনার ওয়েব ব্রাউজারটি স্ট্যাকওভারফ্লো ডট কম লোড করে, এটি জাভাস্ক্রিপ্টের একগুচ্ছ অর্থ ব্যাখ্যা করে (যা আপনি পৃষ্ঠার উত্সটি দেখে দেখে নিতে পারেন) এবং এই পৃষ্ঠাগুলির প্রচুর চমৎকার প্রভাব তৈরি করে - উদাহরণস্বরূপ, আপগ্রেটিং বা সামান্য বিজ্ঞপ্তি প্রদানকারী শীর্ষ জুড়ে বার।
শেল স্ক্রিপ্টিং এবং সংকলিত ভাষা যেমন নির্দেশিত অনুসারে রান টাইমে ব্যাখৃত ভাষা কার্যকর করা হয় যা সংকলিত হয় (এসেম্বলির ভাষায় পরিবর্তিত হয়, যা সিপিইউ বুঝতে পারে) এবং তারপরে সি ++ এর মতো কার্যকর করা হয়।
অন্যরা যেমন বলেছে, সংকলিত এবং ব্যাখ্যা করা একটি প্রোগ্রামিং ভাষার প্রয়োগের জন্য নির্দিষ্ট ; তারা ভাষা অন্তর্নিহিত হয় না । উদাহরণস্বরূপ, সি দোভাষী আছে।
যাইহোক, আমরা প্রোগ্রামিং ভাষাগুলি এর সর্বাধিক প্রচলিত (কখনও কখনও প্রচলিত) বাস্তবায়নের ভিত্তিতে শ্রেণিবদ্ধ করতে পারি (এবং বাস্তবে আমরা এটি করি)। উদাহরণস্বরূপ, আমরা বলি সি সংকলিত।
প্রথমত, আমাদের অবশ্যই অস্পষ্টতা ব্যাখ্যা এবং সংকলক ছাড়াই সংজ্ঞা দিতে হবে:
একটি অনুবাদক ভাষার জন্য এক্স একটি প্রোগ্রাম (বা একটি মেশিন, বা শুধু সাধারণ প্রক্রিয়া কোন ধরণের) যে কোনও প্রোগ্রাম executes হয় পি ভাষায় লেখা এক্স যেমন যে এটিকে প্রভাব সঞ্চালন করে এবং হিসেবে স্পেসিফিকেশন দ্বারা নির্ধারিত ফলাফল মূল্যায়ন এক্স ।
একটি কম্পাইলার থেকে এক্স থেকে ওয়াই একটি প্রোগ্রাম (বা একটি মেশিন, বা শুধু সাধারণ প্রক্রিয়া কোন ধরণের) যে কোনও প্রোগ্রাম অনুবাদ হয় পি কিছু ভাষা থেকে এক্স একটি শব্দার্থগতভাবে সমতুল্য প্রোগ্রামে P ' কিছু ভাষায় ওয়াই যে ব্যাখ্যা এমনভাবে পি ' ওয়াইয়ের জন্য একজন দোভাষী দিয়ে একই ফলাফল পাওয়া যাবে এবং এক্স এর জন্য একজন দোভাষী দিয়ে পি এর ব্যাখ্যা করার মতোই প্রভাব ফেলবে ।
লক্ষ্য করুন যে প্রোগ্রামার দৃষ্টিকোণ থেকে, সিপিইউ হ'ল তাদের নিজ নিজ মেশিন ভাষার জন্য মেশিন দোভাষী।
এখন, আমরা প্রোগ্রামিং ভাষাগুলির সর্বাধিক সাধারণ প্রয়োগের উপর নির্ভর করে 3 টি বিভাগে একটি অস্থায়ী শ্রেণিবিন্যাস করতে পারি:
কখনও কখনও, নরম এবং কঠোর সংকলিত ভাষাগুলি কেবল সংকলিত করার জন্য রেফার করা হয়, সুতরাং সি #, জাভা, সি, সি ++ সংকলিত হতে পারে বলে মনে হয়।
এই শ্রেণিবদ্ধকরণের মধ্যে, জাভাস্ক্রিপ্ট একটি দোভাষী ভাষা হিসাবে ব্যবহৃত হত তবে এটি বহু বছর আগে। আজকাল, এটি বেশিরভাগ প্রধান জাভাস্ক্রিপ্ট বাস্তবায়নে নেটিভ মেশিন ভাষায় জেআইটি-সংকলিত তাই আমি বলব যে এটি নরম সংকলিত ভাষায় পড়ে into