কোড পুনঃব্যবহার একটি দুর্দান্ত ধারণা। একটি মহান এক না ।
আমার কাছে প্রায় 30 বছরের সফটওয়্যার ইঞ্জিনিয়ারিংয়ের দৃষ্টিভঙ্গি রয়েছে, "পুনরায় ব্যবহারের" চেষ্টা করে।
আমি "কোড পুনরায় ব্যবহার" 80 এর দশকে ফিরে গবেষণার বিষয় হিসাবে তদন্ত শুরু করেছিলাম, আবিষ্কারের পরে আমি 70 এর দশকের প্রথমদিকে নির্মিত একটি ওএসের নকশাটি পুনরায় ব্যবহার করেছি, আমি 70 এর দশকের শেষের দিকে নির্মিত অন্য একটি ওএসের জন্য।
কোড পুনরায় ব্যবহারের ভাল অংশটি হ'ল কখনও কখনও সৎ-থেকে-godশ্বরের পূর্ববর্তী কোডটি পুনরায় ব্যবহার করার ক্ষমতা। কিন্তু বিশ্বের কোড পূর্ণ ; তুমি কী চাও? আমি যাকে পুনঃব্যবহার অভিশাপ বলি তা এখানে :
আমি সান্তা ক্লজ (ঠিক আছে ওপেন সোর্স), এবং আমার কাছে 1 বিলিয়ন সফ্টওয়্যার উপাদান রয়েছে। এগুলির যে কোনও একটি আপনার কাছে থাকতে পারে।
ভাগ্য পছন্দ।
পুনরায় ব্যবহারের সমস্যাটি ভালভাবে সমাধান করতে:
- পুনরায় ব্যবহারকারীকে তার কী প্রয়োজন তা নির্দিষ্ট করতে হবে (কার্যকরী, কার্য সম্পাদন, লক্ষ্য ভাষা, পরিবেশ অনুমান, ...)
- "পুনরায় ব্যবহারযোগ্য" কোডের একটি গ্রন্থাগার অবশ্যই থাকতে হবে যা এই সম্ভাব্য মানদণ্ডগুলির দ্বারা বিভিন্ন উপায়ে সূচীভূত হয়েছে
- প্রার্থী উপাদানগুলি বাছাই করার জন্য কিছু ব্যবস্থা অবশ্যই বিদ্যমান থাকতে হবে (এক বিলিয়ন উপাদানগুলিতে আপনি ব্যক্তিগতভাবে সেগুলির দিকে তাকাতে পারবেন না)
- নির্বাচিত প্রার্থীরা স্পেসিফিকেশন থেকে কতটা দূরে তার চরিত্র গঠনের একটি উপায় থাকা দরকার
- পুনরায় ব্যবহারকারীকে নির্বাচিত পুনঃব্যবহারযোগ্য কোডটি সংশোধন করার অনুমতি দেওয়ার জন্য কিছু নিয়মিত প্রক্রিয়া বিদ্যমান থাকতে হবে (এখানে ওওপির সর্বাধিক অবদান: আপনি একটি বিদ্যমান উপাদান / বস্তুকে এর স্লটগুলিকে ওভাররাইড করে সম্পাদনা করতে পারেন O ওওপি অন্য কোনও সহায়তা সরবরাহ করে না)।
- এগুলি অবশ্যই এটিকে পুনর্নির্মাণের চেয়ে স্পষ্টতই সস্তা হতে হবে
বেশিরভাগ ক্ষেত্রে যা বছরের পর বছর ধরে আবিষ্কার হয়েছে তা হল কোডটি পুনরায় ব্যবহারযোগ্য হওয়ার জন্য এটি সাজানোর জন্য সেই ধরণের নকশা তৈরি করতে হয়েছিল বা এতে অনেকগুলি অন্তর্নিহিত অনুমান রয়েছে। সর্বাধিক সফল কোড পুনরায় ব্যবহারের লাইব্রেরিগুলি আসলে বেশ ছোট ছিল। যুক্তিযুক্তভাবে গ্রন্থাগার এবং ফ্রেমওয়ার্কগুলি "পুনরায় ব্যবহারযোগ্য" কোড এবং সেগুলি অত্যন্ত সফল; জাভা এবং সি # সফল হয় না কারণ সেগুলি বেশ ভাল কম্পিউটারের ভাষা, বরং এটির জন্য তাদের বিশাল নকশাকৃত, প্রয়োগকৃত এবং নথিভুক্ত গ্রন্থাগার রয়েছে। কিন্তু মানুষ লাইব্রেরিতে উত্স কোডটি দেখে না; তারা কেবল একটি ভাল-ডকুমেন্টেড এপিআই কল করে (সাধারণত ব্যবহারযোগ্য হিসাবে ডিজাইন করা)।
কোড পুনঃব্যবহারটি কী করে নি (ওওপিও নয়) কোড সিস্টেমগুলিতে আমাদের ক্ষমতার উন্নতির অর্ডার সরবরাহ করে।
আমি ভাবি, কী খুঁত যে কোড পুনঃব্যবহারের যে কোন ধরণের মৌলিকভাবে কারণ কোড অনেকগুলি অনুমানের বিল্ট ইন আছে সীমাবদ্ধ । আপনি যদি কোডটি ক্ষুদ্রতর করেন তবে আপনি অনুমানগুলি হ্রাস করেন তবে স্ক্র্যাচ থেকে তৈরি করার ব্যয়টি খুব বেশি নয় এবং পুনরায় ব্যবহারের সুবিধা কার্যকর হয় না। আপনি যদি কোডগুলি খণ্ডগুলি বিশাল করে তোলেন তবে নতুন প্রসঙ্গে সেগুলি বেশ নিরর্থক। গুলিভারের মতো এগুলিও এক মিলিয়ন ক্ষুদ্র স্ট্রিং দ্বারা সমুদ্র সৈকতে বেঁধে দেওয়া হয়েছে এবং আপনি কেবল সেগুলি কাটতে পারবেন না।
কি আমরা কাজ করা যায় জ্ঞানের পুনঃব্যবহারের কোড গঠন করা । যদি আমরা এটি করতে পারি তবে অনুমানের বর্তমান সেটটি পরিচালনা করে আমরা আমাদের প্রয়োজনীয় কোডগুলি তৈরি করতে সেই জ্ঞানটি প্রয়োগ করতে পারি।
এটি করতে, সফ্টওয়্যার উপাদানগুলি বৈশিষ্ট্যযুক্ত করার জন্য এখনও একই স্পেসিফিকেশন দক্ষতার প্রয়োজন (আপনি এখনও যা চান তা বলতে হবে!)। তবে তারপরে আপনি যে কোডটি চান তা তৈরি করতে আপনি এই "নির্মাণ" জ্ঞানটি নির্দিষ্টকরণগুলিতে প্রয়োগ করেন ।
একটি সম্প্রদায় হিসাবে, আমরা এখনও এ খুব ভাল না। মানুষ সব সময় তা করে; আমরা কেন এটি স্বয়ংক্রিয় করতে পারি না? প্রচুর গবেষণা রয়েছে এবং এটি দেখায় যে এটি অনেক পরিস্থিতিতে করা যেতে পারে।
এগুলির জন্য প্রয়োজনীয় একটি মূল যন্ত্রটি হ'ল "উপাদান বিবরণ" গ্রহণের জন্য যান্ত্রিক সরঞ্জামগুলি (এগুলি কেবল আনুষ্ঠানিক নথি এবং প্রোগ্রামিং ভাষার মতো পার্স করা যায়) এবং সেগুলিতে প্রোগ্রাম রূপান্তর প্রয়োগ করে।
সংকলকগণ ইতিমধ্যে এটি করেন: - problem এবং তারা যে সমস্যার মুখোমুখি হয় সে শ্রেণিতে তারা সত্যই ভাল।
কোড জেনারেশন সহ ইউএমএল মডেলগুলি এটি করার একটি প্রয়াস। খুব ভাল চেষ্টা নয়; বেশিরভাগ ইউএমএল মডেলগুলিতে কেউ যা বলেন তা হ'ল "আমার কাছে এমন ডেটা রয়েছে যা দেখতে দেখতে"। কার্যকারিতাটি ছেড়ে গেলে খুব শক্ত একটি বাস্তব প্রোগ্রাম তৈরি করা।
আমি ব্যবহারিক প্রোগ্রাম রূপান্তর সিস্টেম, ডিএমএস নামে একটি সরঞ্জাম তৈরি করার চেষ্টা করছি । কোড উত্পন্ন করার জন্য অ্যাবস্ট্রাক্ট স্পেসিফিকেশনগুলিতে প্রোগ্রামের রূপান্তরগুলি প্রয়োগ করে খুব ভালভাবে বিভ্রান্ত হয়ে পড়েছিল, বরং এটি পরিষ্কার করার জন্য লেগ্যাসি কোডে রয়েছে to (বিমূর্তে এগুলি একই সমস্যা!)। (এই জাতীয় সরঞ্জামগুলি তৈরি করতে অনেক সময় লাগে; আমি 15 বছর ধরে এটি করছি এবং মাঝামাঝি সময়ে আপনাকে খেতে হবে)।
তবে ডিএমএসের দুটি মূল বৈশিষ্ট্য রয়েছে যা আমি উপরে বর্ণনা করেছি: স্বেচ্ছাসেবী আনুষ্ঠানিক বৈশিষ্ট্যগুলি প্রক্রিয়া করার ক্ষমতা এবং "কোড জেনারেশন জ্ঞান" রূপান্তর হিসাবে ক্যাপচার করার ক্ষমতা এবং চাহিদা অনুসারে প্রয়োগ করে apply এবং লক্ষণীয়ভাবে, আমরা কিছু বিশেষ ক্ষেত্রে উত্পন্ন করি, কিছু নির্দিষ্টকরণ থেকে আকর্ষণীয় কোড; ডিএমএস এর বাস্তবায়ন উত্পন্ন করতে নিজেই ব্যবহার করে নির্মিত হয়। যা আমাদের পক্ষে কমপক্ষে কিছু কিছু (জ্ঞান) পুনঃব্যবহারের প্রতিশ্রুতি অর্জন করেছে: অত্যন্ত উল্লেখযোগ্য উত্পাদনশীলতা লাভ। আমার প্রায় 7 টি টেকনিক্যাল লোকের একটি দল রয়েছে; আমরা সম্ভবত ডিএমএসের জন্য "স্পেসিফিকেশন" এর 1-2 টি এমএসএলপি লিখেছি, তবে জেনারেট কোডের কয়েকটি 10 এমএলএসপি রয়েছে।
সংক্ষিপ্তসার: প্রজন্মের জ্ঞানের পুনঃব্যবহার হ'ল জয়, কোডের পুনরায় ব্যবহার নয় ।