টিডিডি সহ সুডোকু সলভার তৈরি করার রন জেফরিসের প্রচেষ্টাও দেখুন , যা দুর্ভাগ্যক্রমে কার্যকর হয়নি।
অ্যালগরিদমের জন্য অ্যালগরিদম ডিজাইনের নীতিগুলির একটি গুরুত্বপূর্ণ বোঝার প্রয়োজন। এই নীতিগুলি দিয়ে পিটার নরভিগের মতো একটি পরিকল্পনা সহ, ক্রমবর্ধমানভাবে অগ্রসর হওয়া সম্ভব ।
প্রকৃতপক্ষে, অ-তুচ্ছ নকশার প্রচেষ্টা প্রয়োজন অ্যালগরিদমের জন্য, চেষ্টাটি সর্বদা সর্বদা প্রকৃতির ক্ষেত্রে ক্রমবর্ধমান। তবে প্রতিটি "ইনক্রিমেন্ট", যা অ্যালগোরিদম ডিজাইনারের দৃষ্টিতে ক্ষুদ্র, এমন এক ব্যক্তির কাছে কোয়ান্টাম লিপ (আপনার শব্দগুচ্ছ ধার নিতে) দেখে মনে হয়, যার এই বিশেষ অ্যালগরিদমের সাথে বিশেষ দক্ষতা বা জ্ঞান নেই।
এজন্য প্রচুর অ্যালগরিদম প্রোগ্রামিং অনুশীলনের সাথে সিএস তত্ত্বের একটি প্রাথমিক শিক্ষা সমান গুরুত্বপূর্ণ। একটি নির্দিষ্ট "কৌশল" (অ্যালগোরিদমের ক্ষুদ্র বিল্ডিং ব্লক) বিদ্যমান তা জেনে রাখা এই ক্রমবর্ধমান কোয়ান্টামের ঝাঁকুনি তৈরির দিকে দীর্ঘ পথ।
যদিও অ্যালগরিদম এবং টিডিডি-তে বর্ধমান অগ্রগতির মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে।
জেফোর একটি পার্থক্যের কথা উল্লেখ করা হয়েছে : আউটপুট তথ্যের যথার্থতা যাচাই করে এমন একটি পরীক্ষা একটি পরীক্ষা থেকে পৃথক যা একই অ্যালগরিদমের বিভিন্ন বাস্তবায়নের (বা একই সমাধান দেওয়ার জন্য ব্যতীত বিভিন্ন অ্যালগোরিদম) পারফরম্যান্সকে দৃ .় করে তোলে।
টিডিডিতে পরীক্ষার আকারে একজন নতুন প্রয়োজনীয়তা যুক্ত করে এবং প্রাথমিকভাবে এই পরীক্ষাটি পাস করা হবে না (লাল)। তারপরে প্রয়োজনীয়তা সন্তুষ্ট (সবুজ)। শেষ পর্যন্ত কোডটি রিফ্যাক্টর।
অ্যালগরিদম বিকাশে, প্রয়োজনীয়তা সাধারণত পরিবর্তিত হয় না। ফলাফলের নির্ভুলতা যাচাইকরণ পরীক্ষা হয় প্রথমে লেখা হয়, বা অ্যালগরিদমের একটি খসড়া (অত্যন্ত আত্মবিশ্বাসী তবে ধীর) কার্যকর হওয়ার কিছুক্ষণ পরে। এই তথ্য নির্ভুলতা পরীক্ষা খুব কমই পরিবর্তিত হয়; টিডিডি আচারের অংশ হিসাবে এটি ব্যর্থ (লাল) হিসাবে পরিবর্তন করে না।
যাইহোক, এই দিকটিতে, ডেটা বিশ্লেষণটি অ্যালগরিদম বিকাশের থেকে পৃথকভাবে পৃথক, কারণ তথ্য বিশ্লেষণের প্রয়োজনীয়তা (ইনপুট সেট এবং প্রত্যাশিত ফলাফল উভয়ই) কেবল মানুষের বোধগম্যভাবে আলগাভাবে সংজ্ঞায়িত করা হয়। এইভাবে প্রযুক্তিগত স্তরে প্রয়োজনীয়তা প্রায়শই পরিবর্তিত হয়। এই দ্রুত পরিবর্তন অ্যালগরিদম বিকাশ এবং সাধারণ সফ্টওয়্যার অ্যাপ্লিকেশন বিকাশের মধ্যে কোথাও ডেটা বিশ্লেষণ রাখে - যদিও অ্যালগোরিদম-ভারী, প্রয়োজনীয়তাগুলি কোনও প্রোগ্রামারের স্বাদে "খুব দ্রুত" পরিবর্তিত হয়।
যদি প্রয়োজনের পরিবর্তন হয় তবে এটি সাধারণত একটি পৃথক অ্যালগরিদম কল করে।
অ্যালগরিদম বিকাশে, পরিবর্তন (কঠোর করা) ব্যর্থ করার জন্য পারফরম্যান্স তুলনা পরীক্ষা (লাল) নিরীহ - এটি আপনাকে আপনার অ্যালগরিদমে সম্ভাব্য পরিবর্তন সম্পর্কে কোনও অন্তর্দৃষ্টি দেয় না যা পারফরম্যান্সের উন্নতি করবে।
সুতরাং, অ্যালগরিদম বিকাশে, যথার্থতা পরীক্ষা এবং পারফরম্যান্স পরীক্ষা উভয়ই টিডিডি পরীক্ষা নয়। পরিবর্তে, উভয়ই রিগ্রেশন টেস্ট । বিশেষত, নির্ভুলতা রিগ্রেশন পরীক্ষা আপনাকে অ্যালগরিদমে পরিবর্তন করতে বাধা দেয় যা এর যথার্থতা ভঙ্গ করবে; পারফরম্যান্স টেস্ট আপনাকে অ্যালগরিদমে পরিবর্তন করতে বাধা দেয় যা এটি আরও ধীরে চলবে।
"লাল - সবুজ - রিফ্যাক্টর" আনুষ্ঠানিকতা কঠোরভাবে প্রয়োজনীয় নয় বা অ্যালগরিদম বিকাশের চিন্তার প্রক্রিয়াটির জন্য বিশেষভাবে উপকারী তা বাদ দিয়ে আপনি টিডিডিটিকে ব্যক্তিগত কাজের শৈলী হিসাবে অন্তর্ভুক্ত করতে পারেন ।
আমি যুক্তি দেব যে বর্তমান অ্যালগরিদমের ডেটা ফ্লো ডায়াগ্রামে এলোমেলোটি (প্রয়োজনীয় সঠিক নয়) ক্রমান্বনগুলি তৈরি করে বা পূর্বে পরিচিত বাস্তবায়নের মধ্যে মেশানো এবং মিলে যাওয়ার ফলে অ্যালগরিদমের উন্নতি ঘটে।
টিডিডি ব্যবহার করা হয় যখন একাধিক প্রয়োজনীয়তা থাকে যা আপনার পরীক্ষার সেটে ক্রমবর্ধমানভাবে যুক্ত হতে পারে ।
বিকল্পভাবে, যদি আপনার অ্যালগরিদম ডেটা চালিত হয়, তবে পরীক্ষার ডেটা / পরীক্ষার কেসগুলির প্রতিটি টুকরো ক্রমবর্ধমানভাবে যুক্ত করা যায়। টিডিডিও কাজে লাগবে। এই কারণে একটি "টিডিডি-জাতীয়" পদ্ধতির "নতুন পরীক্ষার ডেটা যুক্ত করুন - সঠিকভাবে এই ডেটাটিকে পরিচালনা করতে কোডের উন্নতি করুন - রিফ্যাক্টর" ওপেন-এন্ড ডেটা অ্যানালিটিকাস কাজের জন্যও কাজ করবে, যেখানে অ্যালগরিদমের উদ্দেশ্যগুলি মানুষের মধ্যে বর্ণিত হয়েছে -কেন্দ্রিক শব্দ এবং এর সাফল্যের পরিমাপ মানুষের সংজ্ঞায়িত পদগুলিতেও বিচার করা হয়েছিল।
এটি একক প্রচেষ্টায় সমস্ত (কয়েক ডজন বা শতাধিক) প্রয়োজনীয়তা পূরণ করার চেষ্টা করার চেয়ে কম অভিভূত করার উপায় শেখানোর পরিকল্পনা করে । অন্য কথায়, আপনি যখন আপনার সমাধানের প্রথম দিকের খসড়াগুলি প্রয়োগ করছেন তখন নির্দিষ্ট প্রয়োজনীয়তা বা প্রসারিত লক্ষ্যগুলি সাময়িকভাবে উপেক্ষা করা যেতে পারে তখন আপনি টিডিডি সক্ষম হয় ।
টিডিডি কম্পিউটার বিজ্ঞানের বিকল্প নয়। এটি এমন একটি মনস্তাত্ত্বিক ক্র্যাচ যা প্রোগ্রামারদের একসাথে অনেকগুলি প্রয়োজনীয়তা পূরণ করার ধাক্কা কাটিয়ে উঠতে সহায়তা করে।
তবে আপনার যদি ইতিমধ্যে একটি বাস্তবায়ন রয়েছে যা সঠিক ফলাফল দেয়, টিডিডি তার লক্ষ্য অর্জন এবং কোডটি হস্তান্তর করার জন্য প্রস্তুত (রিফ্যাক্টরিং বা অন্য কোনও প্রোগ্রামার-ব্যবহারকারীর কাছে) বিবেচনা করবে। কিছুটা অর্থে, এটি আপনাকে উদ্দেশ্যমূলকভাবে কোডটি "যথেষ্ট ভাল" (সমস্ত নির্ভুলতার পরীক্ষায় উত্তীর্ণ হওয়ার জন্য) একটি সংকেত দিয়ে, আপনাকে অকাল থেকে নিজের কোডটি অপ্টিমাইজ করতে উত্সাহিত করে।
টিডিডিতে "মাইক্রো-প্রয়োজনীয়তা" (বা লুকানো গুণাবলীর) উপরও ফোকাস রয়েছে। উদাহরণস্বরূপ, প্যারামিটারের বৈধতা, দৃser়তা, ব্যতিক্রম নিক্ষেপ এবং পরিচালনা ইত্যাদি execution টিডিডি সাফল্য নির্বাহের সাধারণ কোর্সে প্রায়শই ব্যবহার করা হয় না এমন কার্যকরকরণের পাথের নির্ভুলতা নিশ্চিত করতে সহায়তা করে।
নির্দিষ্ট ধরণের অ্যালগরিদম কোডগুলিতে এই জিনিসগুলিও রয়েছে; এগুলি টিডিডি-র জন্য উপযুক্ত। তবে অ্যালগরিদমের সাধারণ কর্মপ্রবাহ টিডিডি না হওয়ার কারণে, এ জাতীয় পরীক্ষাগুলি প্রয়োগের কোডটি ইতিমধ্যে (কমপক্ষে আংশিকভাবে) লিখিত হওয়ার পরে লিখিত হতে থাকে (