"পাইপাই পাইথনের পাইথনের পুনঃসংশোধন" পিপিপি, আইএমএইচও-র বর্ণনা দেওয়ার একটি বিভ্রান্তিকর উপায়, যদিও এটি প্রযুক্তিগতভাবে সত্য।
পাইপাইয়ের দুটি বড় অংশ রয়েছে।
- অনুবাদ কাঠামো
- দোভাষী
অনুবাদ কাঠামো একটি সংকলক। এটি আরপিথন কোডটি সি (বা অন্যান্য লক্ষ্যগুলি) পর্যন্ত সংকলিত করে, স্বয়ংক্রিয়ভাবে আবর্জনা সংগ্রহ এবং একটি জেআইটি সংকলক হিসাবে দিকগুলিতে যুক্ত হয়। এটি নির্বিচার পাইথন কোড হ্যান্ডেল করতে পারে না , কেবল আরপিথন।
আরপিথন একটি সাধারণ পাইথনের একটি উপসেট; সমস্ত আরপিথন কোড পাইথন কোড, তবে অন্যভাবে নয়। আরপিথনের কোনও আনুষ্ঠানিক সংজ্ঞা নেই, কারণ RPython মূলত কেবল "পাইথনের উপসেট যা পাইপির অনুবাদ কাঠামো দ্বারা অনুবাদ করা যায়"। তবে অনুবাদ করার জন্য, আরপিথন কোডটি স্থিতিশীলভাবে টাইপ করতে হবে (প্রকারগুলি অনুমান করা হয়, আপনি সেগুলি ঘোষণা করেন না, তবে এটি এখনও ভেরিয়েবলের প্রতি কঠোরভাবে এক প্রকারের), এবং আপনি ডিক্লারিং / ফাংশনগুলি সংশোধন করার মতো কাজগুলি করতে পারবেন না / হয় রানটাইম ক্লাস।
দোভাষী তখন আরপিথনে লিখিত একটি সাধারণ পাইথন ইন্টারপ্রেটার।
RPython কোডটি সাধারণ পাইথন কোড হওয়ায় আপনি এটি যেকোন পাইথন ইন্টারপ্রেটারে চালাতে পারেন। কিন্তু পিপাই-র গতির কোন দাবিই সেভাবে চালানো থেকে আসে না; এটি কেবল দ্রুত পরীক্ষার চক্রের জন্য, কারণ দোভাষী অনুবাদ করতে অনেক সময় লাগে ।
বুঝতে পেরে, এটি অবিলম্বে স্পষ্ট হওয়া উচিত যে পাইপাইপাই বা পাইপাইপাই সম্পর্কে জল্পনা কল্পনাগুলি আসলে কোনও ধারণা দেয় না। আপনার কাছে আরপিটাইনে একটি দোভাষী লিখেছেন। আপনি এটি সি কোডে অনুবাদ করেছেন যা পাইথনকে দ্রুত কার্যকর করে। সেখানে প্রক্রিয়াটি থেমে যায়; আবার প্রক্রিয়াজাত করে গতি বাড়ানোর আরপিথন নেই
সুতরাং "পিপিথনের চেয়ে পিপিপির পক্ষে দ্রুত হওয়া কীভাবে সম্ভব" এটিও মোটামুটি সুস্পষ্ট হয়ে যায়। পিআইপির একটি জেআইটি সংকলক সহ আরও ভাল বাস্তবায়ন হয়েছে (এটি সাধারণত জেআইটি সংকলক ব্যতীত খুব দ্রুত নয়, আমি বিশ্বাস করি, পিআইপি জাইটি সংকলনের জন্য সংবেদনশীল প্রোগ্রামগুলির জন্য কেবল দ্রুততর)) পাইথনকে পাইথন ভাষার উচ্চতর অনুকূলকরণের জন্য কখনও ডিজাইন করা হয়নি (যদিও তারা পার্থক্য অনুসরণ করে এটি একটি সর্বোচ্চ অনুকূলিতকরণ বাস্তবায়ন করার চেষ্টা করে) do
পাইপাই প্রকল্পের সত্যিকারের উদ্ভাবনী বিট হ'ল তারা হাতে কলমে সূক্ষ্ম জিসি স্কিম বা জেআইটি সংকলক লেখেন না। তারা অনুবাদককে তুলনামূলকভাবে সোজাভাবে RPython এ লিখেন এবং সমস্ত RPython পাইথনের তুলনায় নিম্ন স্তরের এটি এখনও একটি অবজেক্ট-ভিত্তিক আবর্জনা সংগ্রহ করা ভাষা, সি এর চেয়ে অনেক বেশি উচ্চ স্তরের তারপর অনুবাদ ফ্রেমওয়ার্কটি স্বয়ংক্রিয়ভাবে GC এবং JIT এর মতো জিনিসগুলিকে যুক্ত করে। সুতরাং অনুবাদ কাঠামো একটি বিশালপ্রচেষ্টা, তবে এটি পাইপাই পাইথন দোভাষীর ক্ষেত্রেও সমানভাবে প্রযোজ্য তবে তারা তাদের প্রয়োগ বাস্তবায়ন পরিবর্তন করে, পরীক্ষায় আরও বেশি স্বাধীনতার সুযোগ দিয়ে পারফরম্যান্স উন্নতি করতে পারে (জিসি বাগ প্রবর্তন বা পরিবর্তনগুলি মোকাবেলায় জেআইটি সংকলক আপডেট করার বিষয়ে চিন্তা না করে)। এর অর্থ হ'ল তারা যখন পাইথন 3 দোভাষীকে বাস্তবায়িত করতে পারে তখন এটি স্বয়ংক্রিয়ভাবে একই সুবিধা পাবে। এবং পাইপাই কাঠামোর সাথে লিখিত অন্য কোনও দোভাষী (যার মধ্যে পোলিশের বিভিন্ন ধরণের সংখ্যা রয়েছে)। এবং পাইপাই ফ্রেমওয়ার্ক ব্যবহার করে সমস্ত দোভাষী তাদের ফ্রেমওয়ার্ক দ্বারা সমর্থিত সমস্ত প্ল্যাটফর্মগুলি স্বয়ংক্রিয়ভাবে সমর্থন করে।
সুতরাং পাইপাই প্রকল্পের আসল উপকারটি হ'ল গতিশীল ভাষার জন্য দক্ষ প্ল্যাটফর্ম-স্বতন্ত্র অনুবাদক বাস্তবায়নের সমস্ত অংশ পৃথক করে (যত বেশি সম্ভব) আলাদা করা। এবং তারপরে একটি স্থানে সেগুলির একটি ভাল বাস্তবায়ন নিয়ে আসুন, যা বহু দোভাষীকে আবার ব্যবহার করা যেতে পারে। এটি "আমার পাইথন প্রোগ্রামটি এখন দ্রুত চলছে" এর মতো তাৎক্ষণিক জয় নয়, তবে এটি ভবিষ্যতের জন্য দুর্দান্ত সম্ভাবনা।
এবং এটি আপনার পাইথন প্রোগ্রামটি দ্রুত চালাতে পারে (সম্ভবত)।