রাইটিং কোড যা এখনও থেকে বছর চলবে
প্রোগ্রামিং ভাষা পরিবর্তন। লাইব্রেরি পরিবর্তন হয়। 5, 10 বা এমনকি 20 বছর আগের কিছু কোড এখনও চালিত হতে পারে এবং প্রত্যাশিত ফলাফল তৈরি করতে পারে, যদিও 2 বছরের কিছু কোড একটি বাক্য গঠন ত্রুটিতে ব্যর্থ হতে পারে। এটি আংশিক অনিবার্য, যেহেতু ভাষাগুলি বিকশিত হয় (কমপক্ষে, বেশিরভাগ ক্ষেত্রে)। বিকাশকারীদের তাদের কোড বজায় রাখার একটি দায়িত্ব আছে। তবে কখনও কখনও, উত্পাদন কোডের মধ্যে স্থায়িত্ব একটি গুরুত্বপূর্ণ প্রয়োজনীয়তা হয় এবং ভাষা পরিবর্তনের জন্য এটির সাথে খাপ খাইবার জন্য প্রতি বছর কোডের মধ্য দিয়ে যে কেউ প্রয়োজন হয় তা না করে কোডটি কেবল 10 বছর ধরে চালানো উচিত। বা আমার কাছে ছোট স্ক্রিপ্ট থাকতে পারে, উদাহরণস্বরূপ বৈজ্ঞানিক ডেটা বিশ্লেষণের জন্য, যেগুলি কয়েক বছর ধরে স্পর্শ না করার পরে আমাকে পুনরায় দেখা দরকার। উদাহরণস্বরূপ, আবহাওয়া অফিসগুলিতে অ-গতি-অত্যাবশ্যক অংশগুলির জন্য প্রচুর পরিশ্রমী ফোর্টরান কোড রয়েছে এবং কোডের স্থায়িত্ব একটি কারণ। আমি ' পাইথনে যাওয়ার বিরুদ্ধে তাদের যে অজানা রয়েছে তার মধ্যে অস্থিরতার আশঙ্কা শুনেছে (অবশ্যই ভাষা জড়তা বাদে; পুরানো কোডের উপর নির্ভরশীল নয় এমন নতুন কোডের পক্ষে এটি কেবল সম্ভব)। অবশ্যই, স্থিতিশীল কোডের জন্য একটি কৌশল হ'ল সম্পূর্ণ অপারেটিং সিস্টেমকে হিমায়িত করা। তবে এটি সবসময় সম্ভব হয় না।
উদাহরণস্বরূপ আমি পাইথন ব্যবহার করছি, তবে বিষয়টি বিশেষত পাইথনের মধ্যে সীমাবদ্ধ নয়।
পাইথন সামঞ্জস্যতা সংক্রান্ত নথি
পাইথনের ক্ষেত্রে, পিছনে-অসামঞ্জস্যিত পরিবর্তনের জন্য নথির কয়েকটি রূপরেখা রয়েছে।
PEP-5
পিইপি 5 অনুযায়ী :
পাইথনের ট্রানজিশনাল সংস্করণ প্রকাশ এবং পিছনের দিকের অসামঞ্জস্যিত সংস্করণের প্রকাশের মধ্যে কমপক্ষে এক বছরের রূপান্তরকাল থাকতে হবে। ব্যবহারকারীদের তাদের প্রোগ্রামগুলি পরীক্ষা করার জন্য এবং অবচয়হিত নির্মাণের ব্যবহার থেকে বিকল্পটিতে স্থানান্তরিত করার জন্য তাদের কমপক্ষে এক বছর সময় থাকবে।
ব্যক্তিগতভাবে, আমি বিবেচনা করি যে এক বছর বরং সংক্ষিপ্ত। এর অর্থ আমি কিছু কোড লিখতে পারি এবং এখন থেকে 1½ বছর পরে এটি আর চলবে না।
পিইপি 291
পিইপি 291 এর পিছনে সামঞ্জস্য বজায় রাখতে এমন বিষয়গুলির দিকনির্দেশগুলির একটি অসম্পূর্ণ তালিকা রয়েছে যা এড়ানো উচিত। তবে এটি কেবল পাইথন ২.x এর সাথে সম্পর্কিত পাইথন ২.7 হ'ল ২.x সিরিজের চূড়ান্ত প্রকাশ এবং পাইথন ২.7 কেবল বাগফিক্স-হিসাবে, এই পিইপি এখন কেবল .তিহাসিক আগ্রহের বিষয়।
পিইপি 387
রয়েছে PEP 387 পূর্ববর্তী-বেমানান পরিবর্তন। পিইপি 387 একটি খসড়া এবং না কোনও সরকারী নীতি। ২০০৯ সালের জুনে, পাইথন-আইডিয়াগুলি মেলিং-তালিকায় এটি আলোচনা হয়েছিল । বিকাশকারীরা ভাষার পরিবর্তনের বিরুদ্ধে শক্তিশালী এমন কোড কীভাবে লিখতে পারে সেদিকে কেন্দ্রীভূত আলোচনার অংশ। একটি পোস্টে কী করবেন না সে সম্পর্কে কিছু পরামর্শ তালিকাভুক্ত করা হয়েছে :
এর সাথে বেশ কয়েকটি নিয়ম রয়েছে যা আপনি সম্ভবত বেশিরভাগ ক্ষেত্রেই সঠিকভাবে অনুমান করতে পারেন: শুরু করে
"_"স্টাফগুলিকে কল করবেন না, বানরকে কিছু প্যাচ করবেন না, নিজের ব্যতীত অন্য ক্লাসের অবজেক্টগুলিতে ডায়নামিক ক্লাস রিপ্লেসমেন্ট ব্যবহার করবেন না , উত্তরাধিকারের শ্রেণিবিন্যাসের গভীরতার উপর নির্ভর করবেন না (উদাহরণস্বরূপ, না".__bases__[0].__bases__[0]"), আপনার গ্রন্থাগার থেকে উত্তরাধিকারসূত্রে ক্লাসগুলির বৈশিষ্ট্য যুক্ত করার সময় কোনও পরীক্ষা-নিরীক্ষা সংক্রান্ত সতর্কতা তৈরি না করেই আপনার পরীক্ষা চলমান রয়েছে তা নিশ্চিত করুন potential আমি মনে করি না যদিও এই সমস্ত জিনিস এক জায়গায় লেখা আছে।
এছাড়াও, "খনি ক্ষেত্রগুলি" (নতুন বৈশিষ্ট্যগুলি পরিবর্তিত হওয়ার সম্ভাবনা রয়েছে) এবং "হিমশীতল অঞ্চল" (খুব বেশি বিক্রি হওয়া এপিআইগুলি ভার্চুয়ালটি পরিবর্তন না করার গ্যারান্টিযুক্ত) সম্পর্কে কিছু পয়েন্ট ছিল। এন্টোইন পিট্রোয়ের উদ্ধৃতি :
আমি মনে করি "হিমায়িত অঞ্চল" ণাত্মক (স্পষ্ট "খনি ক্ষেত্র") এর পরিবর্তে ইতিবাচকভাবে (স্পষ্ট পাবলিক এপিআই এবং স্পষ্টভাবে গ্যারান্টিযুক্ত আচরণ) সংজ্ঞায়িত করা উচিত। অন্যথায়, আমরা খনিজ ফিল্ডে কিছু গুরুত্বপূর্ণ জিনিস রাখা ভুলে যাব এবং যখন আমাদের পিছন-অসম্পূর্ণ উপায়ে এই জিনিসগুলি পরিবর্তন করতে হবে তখন পরে কামড় দেব।
এই থ্রেড থেকে কোনও উপসংহার বলে মনে হয় না, তবে আমি যা খুঁজছি তার মূলে এটি বেশ কাছে যায়। থ্রেডটি প্রায় চার বছর পুরানো, তাই সম্ভবত পরিস্থিতি পরিবর্তন হয়েছে বা উন্নত হয়েছে। কোন ধরণের কোড বেঁচে থাকার সম্ভাবনা রয়েছে এবং কোন ধরণের কোডটি আরও নাজুক?
পোর্টিং নির্দেশিকা
নথি উপরে বর্ণিত ছাড়াও, প্রতিটি পাইথন সংস্করণ একটি পোর্টিং গাইডলাইন সাথে আসে: পাইথন 3.2 থেকে porting , পাইথন 3.3 পোর্ট , ইত্যাদি
দরকারী সামঞ্জস্য
পিইপি 3151 আমাকে দরকারী সামঞ্জস্যের ধারণার সাথে পরিচয় করিয়েছে । আমার নিজের কথায়, এটি এই ধারণাটিতে ফোটে যে কোডটি যদি সাবধানে লিখিত হয় তবে ভাষা বিকাশকারীদের সামঞ্জস্যতা বজায় রাখতে সতর্ক হওয়া দরকার। এটি সত্যিই দরকারী সামঞ্জস্যতার সংজ্ঞা দেয় না , তবে আমি মনে করি এটি উপরের পিইপি 387 আলোচনা থেকে উদ্ধৃত আইডিয়াগুলির সাথে সমান।
প্রোগ্রামারদের দৃষ্টিকোণ থেকে
একজন প্রোগ্রামার হিসাবে, আমি জানি যে পাইথন ভবিষ্যতে পরিবর্তিত হবে এবং লোকেরা - বিশেষত আমি নিজে - আমার কোডটি এখন থেকে কয়েক বছর ধরে একটি পাইথন সংস্করণে চালানোর চেষ্টা করবে যা এক, দুটি বা সম্ভবত তিনটি ছোটখাটো সংস্করণ up সবকিছুই সামঞ্জস্যপূর্ণ হবে না এবং বাস্তবে এটি ব্যর্থ হবে এমন কোডের সাথে উপস্থিত হওয়া সহজ (আমি একবার কোড স্টেটিংয়ের মুখোমুখি হয়েছি if sys.version[:3] != '2.3': print 'Wrong version, exiting')। আমি যা খুঁজছি তা হ'ল ভবিষ্যতে আমার কোডটি নিরবচ্ছিন্নভাবে চালিত হওয়ার সম্ভাবনা বাড়ানোর জন্য কী করা উচিত এবং কী করবেন না সে সম্পর্কে একটি নির্দেশিকা of
এরকম কোনও নির্দেশিকা আছে কি? আমি পাইথন কোডটি কীভাবে লিখব যা ভবিষ্যতে এখনও চলবে?
আমার প্রশ্ন, পাইথন কোর উভয় সম্পর্কিত তার আদর্শ লাইব্রেরিতে, কিন্তু সাধারণভাবে ব্যবহার করা অ্যাড-অন লাইব্রেরি, বিশেষ করে numpy, scipy, matplotlib।
সম্পাদনা : এখন পর্যন্ত দুটি উত্তর পাইথন 2 বনাম পাইথন 3 এর সাথে সম্পর্কিত। এটি আমি যা বোঝাতে চাইছি তা নয়। পাইথন 2 থেকে পাইথন 3 এ স্থানান্তরিত করার সরঞ্জামগুলি সম্পর্কে আমি জানি। আমার প্রশ্নটি এখনও আসা ভাষার পরিবর্তনের সাথে সম্পর্কিত । আমরা আরও স্থিতিশীল কোডিং নির্দেশিকা সন্ধানে স্ফটিক বলের চেয়ে আরও ভাল করতে পারি । উদাহরণ স্বরূপ:
import moduleএর চেয়ে বেশি ভবিষ্যত-প্রমাণfrom module import *, কারণmoduleএক বা একাধিক নতুন ফাংশন / শ্রেণি বৃদ্ধি পেলে পরবর্তীকৃত কোডটি ভেঙে দিতে পারে ।নথিভুক্ত পদ্ধতি ব্যবহারের চেয়ে নথিভুক্ত পদ্ধতি ব্যবহার করা ভবিষ্যতের প্রুফ কম হতে পারে, কারণ কোনও কিছুকে অনিচ্ছায়িত করা এখনও কোনও কিছু স্থিতিশীল না হওয়ার লক্ষণ হতে পারে।
এটি এই জাতীয় ব্যবহারিক কোডিং পরামর্শ যা আমি পরে করছি। যেহেতু এটি বর্তমান এবং ভবিষ্যতের সম্পর্কে, তাই আমরা পাইথন 3 এ নিজেকে সীমাবদ্ধ করতে পারি, কারণ পাইথন 2 আর পরিবর্তন করবে না।