আমি এই বিষয়টি বুঝতে পারি যে জাভাতে একটি সংকলক এবং একজন অনুবাদক উভয়েরই দরকার।
এটা হয় না। জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশনে এমন কোনও কিছুই নেই যা বলে যে জাভাতে একটি সংকলক থাকা দরকার। জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশনে এমন কিছুই নেই যা বলে যে জাভাতে একজন দোভাষী দরকার needs
কোনও দোভাষী, সংকলক, বা দুটি সংমিশ্রণ ব্যবহার করবেন কিনা তা পুরোপুরি বাস্তবায়কের বিবেচনার জন্য রেখে দেওয়া হয়েছে।
আসলে হয় জাভার বাস্তবায়নের যা মেশিন কোড সরাসরি কম্পাইল, জাভার জন্য গনুহ কম্পাইলার যেমন gcj
। প্রযুক্তিগতভাবে বলতে গেলে, ওরাকল ওপেনজেডি কে জাভা সংকলকটি মেশিন কোডেও বিশেষত জেভিএম বাইট কোড সংকলন করে। এখন, আপনি বলতে পারেন, এক মিনিট অপেক্ষা করুন, এটি মেশিন কোড নয়! তবে, x86 মেশিন কোডের জন্য সফ্টওয়্যার ইন্টারপ্রেটার রয়েছে, এবং এমন হার্ডওয়্যার সিপিইউ রয়েছে যা জেভিএম বাইট কোড চালায়, তাই কোনটি "দেশীয়" করে এবং অন্যটি কী করে না?
নোট করুন যে জেভিএম বাইট কোডটি জাভা ল্যাঙ্গুয়েজ স্পেসিফিকেশনের বাইরে বসে রয়েছে ঠিক যেমন x86 মেশিন কোড রয়েছে।
এবং তারপরে একটি ভার্চুয়াল মেশিন (উইন্ডোজে, লিনাক্সে, অ্যান্ড্রয়েডে, ইত্যাদি) বর্তমান আর্কিটেকচারের জন্য মেশিন কোডটিতে বাইটোকডটিকে অনুবাদ করে।
আবার, এটি নিখুঁতভাবে প্রয়োগকারীর উপর নির্ভর করে।
আসল সান জেভিএম কখনও অনুবাদ করেনি, এটি সর্বদা ব্যাখ্যা করা হয়। বর্তমান ওরাকল ওপেনজেডিকে জেভিএম ব্যাখ্যা করে এবং কেবলমাত্র সেই অংশগুলি প্রায়শই সম্পাদিত হয় যা সংকলিত হয়। ম্যাক্সাইন রিসার্চ ভিএম সর্বদা জেআইটি সংকলন করে। এক্সেলসিওর.জেইটি বাস্তবায়ন সময়ের আগে একবার সংকলন করে। আইকেভিএম.এনইটি জেভিএম সিআইএল বাইট কোডে সংকলন করে। অ্যানড্রয়েড রানটাইম ইনস্টলের সময় একবারের আগে কম্পাইল করে। (এছাড়াও, অ্যান্ড্রয়েড রানটাইম জেভিএম বাইট কোড বুঝতে পারে না, এটি ডালভিক বাইট কোড ব্যবহার করে, যা সম্পূর্ণ আলাদা ভাষা)
তবে পাইথনের কেন একটি সংকলক এবং একজন অনুবাদক উভয়েরই প্রয়োজন?
আবার, এটা না। পাইথন ল্যাঙ্গুয়েজ স্পেসিফিকেশনে এমন কিছুই নেই যা বলে যে পাইথনের একটি সংকলক থাকা দরকার। পাইথন ল্যাঙ্গুয়েজ স্পেসিফিকেশনে এমন কোনও কিছুই নেই যা বলে যে পাইথনের একটি দোভাষী নেওয়া দরকার।
মনে রাখবেন যে পাইথনের অর্থ কখনই ব্যাখ্যা করা হয় না । সমস্ত বিদ্যমান পাইথন বাস্তবায়ন সর্বদা পাইথনকে একটি ভিন্ন ভাষায় সংকলন করে। সেই ভাষাটি তখন পরিবর্তে ব্যাখ্যা করা যেতে পারে বা নাও পারে, তবে সেই ভাষা পাইথনের থেকে আলাদা ভাষা। পাইথনের ব্যাখ্যা করা যায় না।
কেন শুধু ব্যাখ্যার ব্যবহার করবেন না?
কারণ পাইথনটি মেশিনগুলির দ্বারা সহজে ব্যাখ্যা করার জন্য ডিজাইন করা হয়নি। এটি সহজেই মানুষের দ্বারা ব্যাখ্যা করার জন্য ডিজাইন করা হয়েছে। ওটিওএইচ, সিপিথন বাইট কোড মেশিনগুলির দ্বারা সহজেই ব্যাখ্যা করার জন্য ডিজাইন করা হয়েছে। সুতরাং, মানুষের জন্য ডিজাইন করা ভাষায় কোড লেখার এবং মেশিনগুলির জন্য নকশাকৃত ভাষায় ব্যাখ্যা করার অর্থটি বোধগম্য হয় এবং একটির থেকে অন্যের কাছে যাওয়ার জন্য আপনাকে সংকলন করতে হবে।
আমি যতদূর জানি, আপনি কোনও উইন্ডোজ বা লিনাক্স মেশিনে কোনও পরিবর্তন ছাড়াই পাইথন প্রোগ্রাম (বাইটোকডে সংকলিত) চালাতে পারবেন না।
হ্যা, তুমি পারো. সিপিথন ভিএম উইন্ডোজ এবং লিনাক্স উভয়ের জন্যই পাইপাই, জাইথন এবং আয়রন পাইথন হিসাবে উপলব্ধ।
ভাষার সংকলন বা ব্যাখ্যা করতে হবে না don't ভাষা ঠিক আছে । আসলে কোনও দোভাষী বা সংকলক না থাকলে কোনও ভাষারই পুরোপুরি অস্তিত্ব থাকতে পারে ! উদাহরণস্বরূপ, কনরাড জুসে প্ল্যানকাল্কাল যা তিনি 1930 এর দশকে ডিজাইন করেছিলেন তা তাঁর জীবদ্দশায় কখনও কার্যকর হয়নি। আপনি এটিতে এখনও প্রোগ্রাম লিখতে পারেন, আপনি সেই প্রোগ্রামগুলি বিশ্লেষণ করতে পারেন, তাদের সম্পর্কে যুক্তি প্রদর্শন করতে পারেন, তাদের সম্পর্কে বৈশিষ্ট্য প্রমাণ করতে পারেন… আপনি কেবল এগুলি কার্যকর করতে পারেন না। (ভাল, আসলে, এমনকি এটিও ভুল: আপনি অবশ্যই এটি আপনার মাথায় বা কলম এবং কাগজ দিয়ে চালাতে পারেন))
এখন, ভাষার যে কোনও নির্দিষ্ট প্রয়োগকরণ সংকলক (বা একাধিক সংকলক), একটি দোভাষী বা কোনও সংমিশ্রণ ব্যবহার করতে পারে। তবে তা বাস্তবায়নের বৈশিষ্ট্য, ভাষা নয়। প্রতিটি ভাষা সংকলক সহ প্রয়োগ করা যেতে পারে, এবং প্রতিটি ভাষা একজন দোভাষী দ্বারা প্রয়োগ করা যেতে পারে।
তবে দ্রষ্টব্য, আপনি দোভাষী ছাড়া কোনও প্রোগ্রাম চালাতে পারবেন না। একটি সংকলক সহজেই একটি প্রোগ্রাম থেকে অন্য ভাষায় অনুবাদ করে। তবে এটা। এখন আপনার একই প্রোগ্রাম রয়েছে, কেবল অন্য ভাষায়। শুধুমাত্র উপায় আসলে প্রোগ্রাম ফলে পেতে হয় ব্যাখ্যা করুন। কখনও কখনও, ভাষাটি একটি অত্যন্ত সাধারণ বাইনারি মেশিনের ভাষা, এবং দোভাষীটি আসলে সিলিকনে হার্ডকড থাকে (এবং আমরা একে "সিপিইউ" বলে থাকি) তবে এটি এখনও ব্যাখ্যামূলক।
আপনি আমার এই উত্তরের প্রতি আগ্রহী হতেও পারেন, যা দোভাষী, জেআইটি সংকলক এবং এওটি সংকলক এবং এই উত্তর একটি এওটি সংকলক এবং জেআইটি সংকলকের মধ্যে পার্থক্যগুলির সাথে ডিলের বিভিন্ন উপায় ব্যাখ্যা করে ।