পাইথনের একটি সংকলক রয়েছে! আপনি কেবল এটি লক্ষ্য করবেন না কারণ এটি স্বয়ংক্রিয়ভাবে চলে। আপনি এটি সেখানে বলতে পারেন, যদিও: মডিউলগুলির জন্য উত্পন্ন ফাইলগুলি .pyc
(বা .pyo
যদি আপনি অপ্টিমাইজার চালু করেন) দেখুন import
।
এছাড়াও, এটি দেশীয় মেশিনের কোডগুলিতে সংকলন করে না। পরিবর্তে, এটি একটি বাইট কোডটি সংকলন করে যা ভার্চুয়াল মেশিন দ্বারা ব্যবহৃত হয়। ভার্চুয়াল মেশিন নিজেই একটি সংকলিত প্রোগ্রাম। এটি জাভা কীভাবে কাজ করে তার সাথে খুব মিল; আসলে একই রকম, এখানে একটি পাইথন বৈকল্পিক ( জাইথন ) রয়েছে যা পরিবর্তে জাভা ভার্চুয়াল মেশিনের বাইট কোডটি সংকলন করে! এছাড়াও রয়েছে আয়রন পাইথন , যা মাইক্রোসফ্টের সিএলআর (। নেট ব্যবহার করে) এর সাথে সংকলন করে। (সাধারণ পাইথন বাইট কোড সংকলককে কখনও কখনও সিপিথন বলা হয় এটি এই বিকল্পগুলি থেকে বিচ্ছিন্ন করার জন্য))
সি ++ এর সংকলন প্রক্রিয়াটি প্রকাশ করতে হবে কারণ ভাষাটি নিজেই অসম্পূর্ণ; এটি লিঙ্কারকে আপনার প্রোগ্রামটি তৈরি করার জন্য প্রয়োজনীয় সমস্ত কিছু নির্দিষ্ট করে না বা এটি সংকলন বিকল্পগুলি বহনযোগ্যভাবে নির্দিষ্ট করতে পারে না (কিছু সংকলক আপনাকে ব্যবহার করতে দেয় #pragma
তবে এটি মানক নয়)। সুতরাং আপনাকে বাকী কাজটি মেকফিল এবং সম্ভবত অটো হেল (অটোকনফ / অটোমেক / লাইবটোল) দিয়ে করতে হবে। এটি কীভাবে সি করেছে তা থেকে এটি সত্যিই একটি হোল্ডওভার। এবং সি এটি সেভাবে করেছিল কারণ এটি সংকলকটিকে সহজ করেছে, এটি এটি জনপ্রিয় কারণগুলির একটি প্রধান কারণ (যে কেউ 80 এর দশকে একটি সাধারণ সি সংকলকটি ক্র্যাঙ্ক করতে পারে)।
সংকলক বা লিঙ্কারের ক্রিয়াকলাপকে প্রভাবিত করতে পারে এমন কিছু জিনিস কিন্তু সি বা সি ++ এর সিনট্যাক্সের মধ্যে নির্দিষ্ট করা হয়নি:
- নির্ভরতা রেজোলিউশন
- বাহ্যিক গ্রন্থাগার প্রয়োজনীয়তা (নির্ভরতা আদেশ সহ)
- অপ্টিমাইজার স্তর
- সতর্কতা সেটিংস
- ভাষা স্পেসিফিকেশন সংস্করণ
- লিঙ্কার ম্যাপিংস (কোন বিভাগটি চূড়ান্ত প্রোগ্রামে যায়)
- লক্ষ্য আর্কিটেকচার
এর মধ্যে কিছু সনাক্ত করা যায়, তবে সেগুলি নির্দিষ্ট করা যায় না; উদাহরণস্বরূপ, আমি কোন সি ++ এর সাথে ব্যবহার করছে তা সনাক্ত করতে পারি __cplusplus
, তবে আমি নির্দিষ্ট করতে পারি না যে কোডটির মধ্যেই আমার কোডের জন্য সি ++ 98 ব্যবহার করা হয়; আমাকে এটিকে মেকফাইলে সংকলকের কাছে পতাকা হিসাবে দিতে হবে বা একটি কথোপকথনে একটি সেটিংস তৈরি করতে হবে।
আপনি যখন মনে করতে পারেন যে একটি "নির্ভরতা রেজোলিউশন" সিস্টেমটি সংকলকটিতে বিদ্যমান রয়েছে, স্বয়ংক্রিয়ভাবে নির্ভরতা রেকর্ড তৈরি করে, এই রেকর্ডগুলি কেবলমাত্র কোনও শিরোনাম কোনও প্রদত্ত উত্স ফাইল ব্যবহার করে বলে। এক্সিকিউটেবল প্রোগ্রামে লিংক করার জন্য কোন অতিরিক্ত সোর্স কোড মডিউলগুলির প্রয়োজন তা তারা নির্দেশ করতে পারে না, কারণ সি বা সি ++ তে কোনও মানক উপায় নেই যা নির্দেশ করে যে কোনও প্রদত্ত শিরোনাম ফাইল অন্য উত্স কোড মডিউলটির ইন্টারফেস সংজ্ঞা হিসাবে কেবল একটি গুচ্ছের বিপরীতে রয়েছে indicate আপনি একাধিক জায়গায় লাইনগুলি দেখাতে চান যাতে আপনি নিজেকে পুনরাবৃত্তি করবেন না। ফাইল নামকরণের কনভেনশনে traditionsতিহ্য রয়েছে তবে সংকলক এবং লিঙ্কার দ্বারা এগুলি জানা বা প্রয়োগ করা হয় না।
এর মধ্যে বেশ কয়েকটি ব্যবহার করে সেট করা যেতে পারে #pragma
তবে এটি অ-মানক এবং আমি স্ট্যান্ডার্ডের কথা বলছিলাম। এই সমস্ত জিনিস একটি মান দ্বারা নির্দিষ্ট করা যেতে পারে, কিন্তু পিছিয়ে সামঞ্জস্যের স্বার্থে হয় নি। প্রচলিত জ্ঞান হ'ল মেকফিল এবং আইডিই ভেঙে যায় না, তাই এগুলি ঠিক করবেন না।
পাইথন ভাষায় এই সমস্ত পরিচালনা করে। উদাহরণস্বরূপ, import
একটি সুস্পষ্ট মডিউল নির্ভরতা নির্দিষ্ট করে, নির্ভরতা গাছ বোঝায় এবং মডিউলগুলি শিরোনাম এবং উত্স ফাইলগুলিতে বিভক্ত হয় না (অর্থাত্ ইন্টারফেস এবং বাস্তবায়ন)।