কাজ করার জন্য ডিজাইন অনুশীলনগুলি কোথায় পাব? [বন্ধ]


16

আমার সমস্যা সমাধানের দক্ষতা অনুশীলন করা চালিয়ে যাওয়া জরুরি বলে আমি মনে করি। আমার নিজের মিনি-প্রকল্পগুলি লেখার একটি উপায়, তবে অন্যটি হ'ল অনলাইনে পোস্ট করা সমস্যাগুলি চেষ্টা করে সমাধান করা। অনলাইনে আকর্ষণীয় প্রোগ্রামিং কুইজগুলি সন্ধান করা সহজ যেগুলির সমাধানের জন্য চতুর অ্যালগরিদম প্রয়োগ করা দরকার - প্রকল্প ইউরার একটি সুপরিচিত উদাহরণ।

তবে, বাস্তব জীবনের অনেকগুলি প্রকল্পে সফ্টওয়্যারটির নকশা - বিশেষত প্রাথমিক পর্যায়ে - এর একটি বড় প্রভাব পড়ে এবং পরবর্তী পর্যায়ে এটি সরল অ্যালগরিদমের মতো সহজেই চিহ্নিত করা যায় না। এই দক্ষতাগুলি উন্নত করার জন্য, আমি ডিজাইন সমস্যার যে কোনও সংগ্রহের সন্ধান করছি।

আমি যখন "ডিজাইন" বলি, তখন আমি একটি সফ্টওয়্যার সমাধানের বিমূর্ত নকশা বোঝায় - উদাহরণস্বরূপ কোন মডিউলগুলি থাকবে এবং সেগুলির মধ্যে নির্ভরতাগুলি কীভাবে হবে, প্রোগ্রামে ডেটা কীভাবে প্রবাহিত হবে, কী ধরণের ডেটা সংরক্ষণ করতে হবে ডাটাবেস, ইত্যাদি ডিজাইন সমস্যা হ'ল সমস্যাগুলি যা কোনও প্রকল্পের প্রাথমিক পর্যায়ে সমাধানের জন্য গুরুত্বপূর্ণ, তবে তাদের সমাধানটি কোনও একক লাইন কোড ছাড়াই হোয়াইটবোর্ড ডায়াগ্রাম।

অবশ্যই এই ধরণের সমস্যার একটিও সঠিক সমাধান নেই, তবে আমি যে কোনও জায়গার সাথে বিশেষত খুশি হব যা সমস্যা সমাধানের জন্য ব্যবহার করা যেতে পারে এমন সাধারণ সমাধানগুলির উপকারিতা এবং মতামতও প্রদর্শন করে।


উত্তর:


7

কোড কাটা সম্পর্কে কীভাবে । আমি এর মধ্যে কয়েকটি করেছি, এবং তারা মজা করার জন্য এবং যথেষ্ট চ্যালেঞ্জিং যে এখানে সবসময় শেখার মতো কিছু আছে।

প্রতিটি কাটার মন্তব্যে সাধারণত আটকে থাকা কোনও কিছুর জবাব দিতে সহায়তা করার জন্য পর্যাপ্ত তথ্য থাকে।


প্রথমটি অবশ্যই একটি ডিজাইনের সমস্যা, তবে আমি অনুভব করেছি যে অন্যরা সমস্ত বেশি কোড-ভিত্তিক। আমি এটিকে অন্য চেহারা দেব, ধন্যবাদ!
ওক

3

দিয়ে শুরু করুন ক্লাসিক নকশা সমস্যা: KWIC।

ডেভিড পার্নাস কেডব্লিউআইসিকে মডুলারালিটি সম্পর্কে তাঁর ক্লাসিক পেপারে উদাহরণ হিসাবে ব্যবহার করেছেন: মডিউলগুলিতে ডেকমপোজিং সিস্টেমগুলিতে ব্যবহৃত হতে হবে সেই মানদণ্ড , যা প্রত্যেকের প্রতি 10 বছর পর সম্ভবত পড়া উচিত।

প্রসঙ্গত কী-শব্দের জন্য কেডব্লিউআইসি হ'ল একটি সরল সূচীকরণ এবং বাছাইয়ের সমস্যা যেখানে আপনি পাঠ্যের লাইনে পড়েন এবং তারপরে প্রতিটি লাইনকে কীওয়ার্ডের উপর ভিত্তি করে ঘোরান (উদাহরণস্বরূপ, "" "" বাদ দিয়ে ") প্রতিটি শিফ্টকে একটি আপনি তারপর বাছাই তালিকা। ধারণাটি হল যে কেডব্লিউআইসি ব্যবহার করা কোনও বইয়ের সূচক তৈরির জন্য কার্যকর হবে। তার ক্লাসিক পেপারের সময়, পার্নাস বলেছিলেন যে একজন অভিজ্ঞ প্রোগ্রামার এক থেকে দুই সপ্তাহের মধ্যে এটি সমাধান করতে পারে তবে ইয়ান্নিসের আইন বলছে যে এটি এখন এক থেকে দুই ঘন্টার মধ্যে করা যেতে পারে । [অপারেটিং সিস্টেম এবং স্ট্যান্ডার্ড লাইব্রেরিগুলি অনেক উন্নত হয়েছে]]

পার্নাসের কাগজটি পড়ুন, এবং কেডব্লিউআইসি প্রোগ্রামটি যা করণীয় তা অবাক করেই আপনি যেতে পারেন এবং নিজের নকশা অনুশীলন হিসাবে লিখুন। তারপরে, বাকী কাগজটি পড়ুন, যা দুটি পৃথক নকশার বিষয়ে আলোচনা করে: উভয়ই মডুলার, তবে একটি অপ্রয়োজনীয় তথ্য গোপনে অর্জন করে অন্যটি তা করে না।

কেডব্লিউআইসি উদাহরণটি জানার পরে, আপনি এটি ব্যবহার করে এমন অন্যান্য সফ্টওয়্যার ডিজাইনের কাগজগুলির প্রশংসা করতে সক্ষম হবেন। উদাহরণস্বরূপ, মাইকেল ভ্যানহিলস্টের কাগজ ডিকোপলিং থেকে ডিজাইন পরিবর্তন পরিবর্তন এটি সি ++ টেমপ্লেটগুলি ব্যবহার করে সত্যই আকর্ষণীয় ডিজাইনের কৌশল দেখানোর জন্য ব্যবহার করে। এবং, যতক্ষণ আমরা সি ++ টেম্পলেট এবং ডিজাইনের কথা বলছি, ততক্ষণ জার্নেক্কি এবং আইজেনেকারের সিনথেসাইজিং অবজেক্টস পেপারটি পড়ুন।

কেডব্লিউআইসি থেকে চালানো অন্যান্য ক্লাসিক উদাহরণ, যেমন স্পেসওয়ার উদাহরণ , যা পাইথন এবং অ্যাসপেক্টজে এর মতো কয়েকটি ভাষায় পোর্ট / ডিজাইন করা হয়েছে ।

অবশ্যই, কোনও প্রোগ্রাম ডিজাইন অনুশীলন হিসাবে ব্যবহার করা যেতে পারে, তবে কেডব্লিউআইসি এবং স্পেসওয়ার এমন উদাহরণ যেখানে আপনি বেশ কয়েকটি বিকল্পের দিকে নজর দিতে পারেন।


উত্তর: আপনার স্পষ্টতা ... আমি এখানে বেশিরভাগ ডিজাইনের হোয়াইট বোর্ড স্তরের কথা বলছি। তবে কোডের স্তরেও খনন করা সার্থক, কারণ আপনি বুঝতে পারেন যে আপনার অনেক ডিজাইনের সমাধানের ত্রুটি রয়েছে যা তাদের প্রকাশ করা আরও শক্ত করে তোলে।
ম্যাকনিল

1

আমি এই ধরণের জিনিসটি "প্রোগ্রামিং ক্যাটাস" হিসাবে উল্লেখ করেছি। কাটা একটি মার্শাল আর্ট শব্দ যা রূপের ক্রম বা ক্রমগুলির জন্য ক্রমাগতভাবে পরিপূর্ণতার দিকে চালিত হয়। আপনার পছন্দের ভাষায় কাতাসের জন্য কিছু অনুসন্ধান করুন এবং আমি বাজি ধরব যে আপনি কিছু তৈরি করবেন। :)


1

আমি সম্মতি দিচ্ছি যে ক্যাটাস এবং এলার অ্যালগরিদম ডিজাইন করার জন্য এবং কোডিং অনুশীলনের জন্য দুর্দান্ত - সম্ভবত আপনি সেগুলি প্রসারিত করতে পারেন এবং কিছুটা সৃজনশীল হতে পারেন এবং সমস্যার মধ্যে একটির সাথে একটি সিস্টেম ডিজাইন করতে পারেন।

উদাহরণস্বরূপ, আমি দ্রুত, স্বল্পতম উত্তর সন্ধানের জন্য অলারের সমস্যার সমাধান না করেই বিতরণ উপায়ে সমাধান করার জন্য কাজ করছি - যে কোনও একটি সমস্যার মোকাবেলা করার জন্য আমি একটি সিরিজ এরলং নোড স্থাপন করতে চাই। অবশ্যই, এর অর্থ হ'ল আমাকে কীভাবে সমস্যাটিকে পৃথক অংশগুলিতে আলাদা করতে হবে এবং তাদের অগ্রগতি সম্পর্কে পুনরায় রিপোর্ট করতে এবং ফলাফলগুলি একত্রিত করতে হবে (সমস্তটি একটি কার্যকরী ভাষার ভিতরে যা আমি বিশেষজ্ঞ নই)।

সম্ভবত আপনি ব্যবসায়ের সমাধান হিসাবে এই সমস্যার সমাধানের চারপাশে একটি সিস্টেম ডিজাইন করতে পারেন - আপনি কীভাবে এটি তৈরি করতে পারেন যাতে একাধিক "গ্রাহকরা" আপনার সমস্যায় এক সময় অ্যাক্সেস পেতে পারে, আপনি ক্লায়েন্ট এবং পরিষেবা স্তর ইন্টারঅ্যাকশন ডিজাইনের মাধ্যমে যেতে পারেন ইত্যাদি

এগুলি সব সৃজনশীল হওয়া এবং মজা করা সম্পর্কে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.