আমি ডগলাস ম্যাকিল্রয়ের উইকিপিডিয়া নিবন্ধটি পড়ছিলাম এবং উল্লেখ করা একটি উদ্ধৃতি পেলাম
"প্রোগ্রামিংয়ের আসল নায়ক তিনিই নেতিবাচক কোড লেখেন।"
ওটার মানে কি?
আমি ডগলাস ম্যাকিল্রয়ের উইকিপিডিয়া নিবন্ধটি পড়ছিলাম এবং উল্লেখ করা একটি উদ্ধৃতি পেলাম
"প্রোগ্রামিংয়ের আসল নায়ক তিনিই নেতিবাচক কোড লেখেন।"
ওটার মানে কি?
উত্তর:
এর অর্থ কোডের লাইনগুলি হ্রাস করা, অতিরিক্ত কাজগুলি সরিয়ে বা আরও সংক্ষিপ্ত গঠন ব্যবহার করে।
উদাহরণস্বরূপ আসল অ্যাপল লিসা বিকাশকারী দলের এই বিখ্যাত উপাখ্যানটি দেখুন :
১৯৮২ সালে যখন লিসা দলটি তাদের সফ্টওয়্যারটি চূড়ান্ত করার জন্য চাপ দিচ্ছিল, তখন প্রকল্প পরিচালকরা প্রোগ্রামারদের সাপ্তাহিক ফর্মগুলি তাদের লিখিত কোডের লাইন সংখ্যার উপর রিপোর্ট দেওয়ার জন্য প্রয়োজনীয়তা শুরু করেছিলেন। বিল অ্যাটকিনসন ভেবেছিলেন নিরীহ। যে সপ্তাহে তিনি কুইকড্রের অঞ্চল গণনা রুটিনগুলি ছয়গুণ দ্রুত এবং 2000 লাইন সংক্ষিপ্ত হওয়ার জন্য পুনর্লিখন করেছিলেন, তিনি ফর্মটিতে "-2000" রেখেছিলেন। আরও কয়েক সপ্তাহ পরে পরিচালকরা তাকে ফর্মটি পূরণ করতে বলছেন, এবং তিনি আনন্দের সাথে সম্মতি জানালেন।
কোড লাইন দ্বারা প্রোগ্রামার উত্পাদনশীলতা পরিমাপের লাইন বরাবর একটি বিল গেটস এর উদ্ধৃতি ওজন দ্বারা বিমান বিল্ডিং অগ্রগতি পরিমাপ করার মত।
আমি যুক্ত করতে চাই যে এলওসি মেট্রিক অত্যধিক দীর্ঘ-বায়ুযুক্ত ভাষার ব্যবহারকে উত্সাহিত করেছে এবং কোটা মেটাতে ইচ্ছাকৃতভাবে চাকাটিকে পুনর্বহাল করেছে।
যখন আমি হাই স্কুলে ছিলাম - এবং হ্যাঁ, 70 এর দশকে আমাদের কম্পিউটার ছিল, যদিও আমাদের পাথর ছুরি ব্যবহার করে তাদের পশুর চামড়া তৈরি করতে হয়েছিল - গণিতের একজন শিক্ষক প্রোগ্রামিং প্রতিযোগিতা করেছিলেন। নিয়মগুলি হ'ল বিজয়ী প্রোগ্রামটিই হ'ল সঠিক আউটপুট তৈরি করেছিল এবং এতে কোড টাইম রান রানের লাইনের ক্ষুদ্রতম পণ্য ছিল। এটি হ'ল, যদি আপনার প্রোগ্রামটি নেওয়া হয় তবে কোডের 100 টি লাইন বলুন এবং 5 সেকেন্ডের জন্য দৌড়ে গেলেন, আপনার স্কোর 500 ছিল else যদি কেউ 90 লাইন কোড লিখে এবং seconds সেকেন্ডের জন্য চালায় তবে তার স্কোর ছিল 540 g
এটি আমাকে একটি উজ্জ্বল স্কোরিং সিস্টেম হিসাবে আঘাত করেছে, সংক্ষিপ্ততা এবং অভিনয় উভয়ই পুরস্কৃত করেছে।
কিন্তু প্রযুক্তিগতভাবে বিজয়ী মানদণ্ড পূরণ করা এন্ট্রি অযোগ্য ঘোষণা করা হয়েছিল। সমস্যাটি ছিল 100 এরও কম সমস্ত মূল সংখ্যার একটি তালিকা মুদ্রণ করা The অযোগ্য এন্ট্রিটি এরকম কিছু হয়েছিল (বেশিরভাগ শিক্ষার্থী তখন বেসিক ব্যবহার করছিল):
100 print "2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61,"
110 print "67, 71, 73, 79, 83, 87, 89, 91, 97"
যে শিক্ষার্থী এন্ট্রিটি লিখেছিল সে নির্দেশ করে যে এটি কেবল ছোট এবং খুব দক্ষ ছিল না, তবে প্রোগ্রামিং সম্পর্কে ন্যূনতম জ্ঞান থাকা অ্যালগরিদম প্রত্যেকের কাছেই স্পষ্ট হওয়া উচিত, যা প্রোগ্রামটি অত্যন্ত রক্ষণাবেক্ষণযোগ্য করে তুলেছিল।
এটা জিভ ইন গাল। যদি এটির প্রতি কোডড লাইনে আপনার জন্য $ N ব্যয় হয় তবে "নেতিবাচক লাইনগুলি" কোডিং করা অবশ্যই বিজয়ী।
এর অর্থ, ব্যবহারিক পরামর্শ হিসাবে, সেই ছোট কোড যা কাজটি সম্পাদন করে, বড় কোডের চেয়ে অনেক ভাল যা একই কাজ করে, অন্য সমস্ত জিনিস সমান হয়।
কম কোডে একই প্রোগ্রাম লেখা প্রত্যেকের জন্য একটি লক্ষ্য।
যদি কোনও প্রোগ্রাম কোডে 200 এলওসি নিয়ে থাকে এবং আমি 150 এ লিখি, আমি -50 এলওসি লিখেছি। তাই আমি নেতিবাচক কোড লিখেছি।
থিলোর উত্তর সম্ভবত accurate তিহাসিকভাবে সবচেয়ে সঠিক, তবে "নেতিবাচক কোড" রূপকটিতে পারফরম্যান্স এবং মেমরির ব্যবহারও অন্তর্ভুক্ত থাকতে পারে - বাস্তবিক প্রয়োজন না হওয়া অবধি কার্যকরকরণ বা কোনও বরাদ্দ স্থগিত করার পুরস্কৃত প্রচেষ্টা।
এই "বিলম্বিত অর্থ প্রদান করে" মানসিকতা যেমন জিহ্বা-ইন-গাল স্বরলিপি তৈরি করে যেমন "কিছু করা থেকে কিছু না করা সবসময়ই দ্রুত" "," দ্রুততম কোডটি এমন কোড যা কখনও কার্যকর করে না ", এবং" যদি আপনি এটিকে দীর্ঘক্ষণ বন্ধ রাখতে পারেন, আপনার কখনই এটি করতে হবে না "" (প্রকৃত প্রয়োজন না হওয়া পর্যন্ত ব্যয়বহুল ক্রিয়াকলাপের পিছনে উল্লেখ করা)
নেতিবাচক কোড উপলব্ধি করার একটি কৌশল হ'ল প্রাথমিক অনুমান এবং সমস্যার সংজ্ঞা চ্যালেঞ্জ করা। আপনি যদি সমস্যাটি / ইনপুট ডোমেনকে নতুন সংজ্ঞা দিতে পারেন যেমন "স্টিকি ইস্যু # 3" স্পষ্টতই অসম্ভব, তবে আপনাকে স্টিকি ইস্যু # 3 নিয়ে সময় বা কোড ব্যয় করতে হবে না। আপনি নকশাটি অনুকূল করে কোডটি মুছে ফেলেছেন।