আমি যদি আমার অনেক সমস্যা একইভাবে সমাধান করি তবে আমার কি চিন্তিত হওয়া উচিত?


13

আমি সত্যিই প্রোগ্রামিং গেম এবং ধাঁধা স্রষ্টা / গেম উপভোগ করি। আমি নিজেকে অনেকগুলি সমস্যার একইভাবে ইঞ্জিনিয়ারিং পাই এবং শেষ পর্যন্ত একইভাবে এমন কৌশল ব্যবহার করে তাদের প্রোগ্রাম করার জন্য যে আমি সত্যই আরামদায়ক।

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

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


আপনি যদি নিজেকে পুনরাবৃত্তি করতে থাকেন তবে কেন পুনরায় ব্যবহারযোগ্য উপাদান তৈরি করবেন না?
কুগেল

অগত্যা, যদি এটি সমাধানের ভাল উপায় হয় তবে :)
হাইলেম

4
আপনি যদি সারাক্ষণ নিজেকে পুনরাবৃত্তি করে থাকেন তবে একটি লাইব্রেরি লিখুন।
কাজ

@ ব্রায়ান হ্যারিংটন নিজেই ঠিক একই সমস্যার মুখোমুখি হয়ে গেছেন, আমাকে অবশ্যই বলতে হবে যে আমি বিবিধ ডোমেইনে যেমন ব্যবসায়ের যুক্তি (কর্মক্ষেত্রে) থেকে কার্নেল প্রোগ্রামিং (বাড়িতে) এবং সি # (কাজ করে) থেকে সি ++ (ঘরে বসে) কাজ করেছিলাম আমাকে অনেক সাহায্য করেছে আমিও ওপেন সোর্স কোড পড়ার অভ্যাস মধ্যে পেয়েছি এখানে হয় কিছু লিংক :) উপরন্তু, আপনি পড়তে পারেন GOF
Chani

উত্তর:


26

না এটা ঠিক আছে.

ব্যবহারিক প্রোগ্রামিংয়ের বিষয়টি হ'ল এমন সমাধানগুলি অনুসন্ধান করা যা সম্ভবত অনেকগুলি অনুরূপ বিকাশে কার্যকর হবে। আপনি সবেমাত্র একটি পেয়েছেন।

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


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

12

যদি এটি ভালভাবে কাজ করে তবে এটিকে ডিজাইনের ধরণ বলুন। যদি এটি না হয় তবে আপনি আরও ভাল জানেন না, এটি সোনার হাতুড়ি অ্যান্টিপ্যাটার্ন।


1
এই. এটি কেবল তখনই সমস্যা হয় যখন আপনি নিজেকে সমাধান করতে বাধ্য করেন এমন কোনও সমস্যার জন্য যেখানে এটি কাজ করে না। আপনার সমস্ত সমস্যা যদি নখ হয় তবে আপনার হাতুড়ি ব্যবহার করা উচিত , তবে আপনি যদি নিজেকে কোনও স্ক্রুতে হাতুড়ি দেওয়ার চেষ্টা করে দেখেন তবে আপনার পিছনে ফিরে আসা উচিত।
শয়তানিকপিপি

@ স্যাটানিকপুপি ... কখনও কখনও আমাদের কাছে স্ক্রু ড্রাইভার নেই এবং এমন সমস্যা আছে যা এখনই ঠিক করার প্রয়োজন have কোন ক্ষেত্রে একটি হাতুড়ি দেওয়া নির্দিষ্ট সময়ে উপলব্ধ সেরা সরঞ্জাম।
ক্যাফগীক

@ চাদ - একটি অস্থিরভাবে সঠিক উপমা
10:25

5

বাস্তবিকভাবে আমাদের দিনের চাকরিতে আমরা বেশ কয়েকটি একই ধরণের সমস্যার মুখোমুখি হতে পারি to

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

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

তবে ফ্লিপ সাইডটি হ'ল যদি আপনার সমস্ত কিছু হাতুড়ি হয় তবে সবকিছুই পেরেকের মতো দেখাচ্ছে। বিকল্পগুলির বিষয়ে নিজেকে সচেতন করার জন্য আপনার জিনিসগুলি করা উচিত এবং যখন আপনি সম্ভবত আপনার পছন্দসইগুলি খুব বেশি দূরে ঠেলে দিচ্ছেন।

সম্ভবত কয়েকটি অ-জরুরী / অ-সমালোচনামূলক পরিবর্তনগুলি বেছে নিন এবং বিকল্প সমাধানগুলির সাথে গতি পেতে এগুলি ব্যবহার করুন?


4

ভাল প্রশ্ন, এবং আমাকে স্বীকার করতে হবে এটি এমন একটি বিষয় যা আমাকেও হতাশ করে।

এই ঠিক আছে কখন? আপনার কোডটির একটি পারফরম্যান্স বিশ্লেষণ করুন - আপনি যদি দেখতে পান যে আপনি ও (লগ এন) বা ও (এন) বা ও (এন লগ এন) এ আছেন এবং যেমন সমস্যাটি পরিচিত ডেটা স্ট্রাকচারের জন্য মাপে আপনি সাধারণত ঠিক থাকেন।

কখন এটা ঠিক নেই? আপনার সময় বা স্থান জটিলতা হ'ল O (n ^ 2) বা আরও খারাপ, বা সংজ্ঞা অনুসারে সমস্যাটি এনপি সম্পূর্ণ। এই পরিস্থিতিতে আপনাকে ন্যায্য কিছুটা হিউরিস্টিক প্রয়োগ করতে হবে, অন্যান্য ডোমেন থেকে জ্ঞান প্রয়োগ করতে হবে ইত্যাদি need

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


3

অগত্যা, যদি এটি সমাধান করার ভাল উপায় হয় তবে :)

সাধারণত "সমাধান" নিয়ে কাজ করার সময়, আমি এই জিনিসগুলির জন্য ক্রমানুসারে যাই:

  • সরলতা ,
  • পুনরায় ব্যবহারযোগ্যতা ,
  • এবং শুধুমাত্র শেষ কর্মক্ষমতা

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

আশ্চর্যজনক হলেও, সি তে কোডিং করার সময়, আমি জাভাতে কোডিং করার সময় পারফরম্যান্স সম্পর্কে অনেক বেশি যত্ন করি ... অভ্যাসের বল :))


2

যতক্ষণ না সমস্যাটি দক্ষ উপায়ে সমাধান হচ্ছে ততক্ষণ চিন্তা করার দরকার নেই।


2

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


2

যদি এটি কাজ করে, ঠিক আছে।

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


2

আপনি যদি সমস্যা সমাধান করেন তবে ভাল। এটি কোনও সমস্যা না হওয়া পর্যন্ত এটি আরও সমস্যা না করে।


0

"লক্ষ্য বিকাশকারী আর্ট" এর আসলে সঠিক উত্তর থাকে যদি আপনার লক্ষ্য কোনও পণ্য উত্পাদন করে। এবং যদি আপনার "ফ্যাক্টরি" এমন পণ্য উত্পাদন করে যা সন্তুষ্ট হয় তবে শীতল।

কিন্তু ...

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

এটি আসলে স্নায়বিক গবেষণার মাধ্যমে ব্যাক আপ করা হয়। সুতরাং আপনি সেখানে যান।

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