আমার কি ডেটা স্ট্রাকচার এবং অ্যালগরিদমে বিনিয়োগ করা উচিত? [বন্ধ]


28

আজকাল, আমি ডেটা স্ট্রাকচার এবং অ্যালগরিদমে প্রচুর পরিমাণে বিনিয়োগ করছি এবং কিছু প্রোগ্রামিং ধাঁধা সমাধান করার চেষ্টা করছি।
আমি জাভা এবং ক্লোজার সাথে কোড করার এবং সমাধান করার চেষ্টা করছি।

আমি কি আমার সময় নষ্ট করছি? আরও গভীরতর জ্ঞান (ইনস এবং আউটসুট) পেতে এবং আরও দ্রুত তাদের সাথে কোড তৈরি করতে সক্ষম হওয়ার জন্য আমি ইতিমধ্যে জানি এমন প্রযুক্তি ও ফ্রেমওয়ার্কগুলিতে আরও বিনিয়োগ করতে হবে?

ডেটা স্ট্রাকচার এবং অ্যালগরিদম অধ্যয়ন করে, আমি কি আরও ভাল প্রোগ্রামার হতে যাচ্ছি বা এই বিষয়গুলি কলেজের বছরগুলিতে কেবল গুরুত্বপূর্ণ?


5
আপনি কোন ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলির সাথে কাজ করছেন? আপনি কোন প্রোগ্রামিং ধাঁধা ব্যবহার করছেন?
ওস্টারওয়াল

আমি হ্যাশ-টেবিল, মানচিত্র, হিপস, গ্রাফ, গাছ এবং তার সাথে সংযুক্ত অ্যালগরিদমগুলিতে (ট্র্যাভারিং, হ্যাশিং, অনুসন্ধান, সন্নিবেশকরণ, মোছা এবং কিছু সাজানো অ্যালগরিদম) কাজ করার জন্য / এখনও কাজ করছি। ধাঁধা টপকোডার এবং গুগল কোড জ্যাম প্রতিযোগিতা থেকে।
চিরন

উত্তর:


24

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

ন্যূনতম আলগোরিদিম ও datastructures জ্ঞানের, যাতে মাত্রা সফল হতে চাইলে আপনার প্রয়োজন হবে:

  • তাদের বেশিরভাগ সম্পর্কে সচেতন থাকুন (মাঝে মাঝে নতুনগুলি পড়ার সাথে সাথে তারা যখন প্রকাশিত হয়)
  • ভাল, পরীক্ষিত, কার্যকরী বাস্তবায়ন কোথায় পাবেন তা জানুন
  • অ্যালগরিদম এবং তাদের দরকারীতা তুলনা করতে সক্ষম
  • অল্প কিছুটা টুইট করে আপনার ওপেন সোর্স উদাহরণ থেকে আপনার নির্দিষ্ট পরিবেশে সঠিকভাবে অনুলিপি করতে সক্ষম হন

নেই কোন * সর্বাধিক * । আপনি যদি চান, আপনি পিএইচডি স্তর এবং তার বাইরে আপনার অধ্যয়ন নিতে পারেন। আপনি যে আগ্রহী চাকরি পেতে আগ্রহী এবং কোন ধরণের কাজকে আপনি সবচেয়ে আকর্ষণীয় এবং ফলপ্রসূ বলে মনে করেন এটির কার্যকারিতা সরাসরি সম্পর্কিত।

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

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


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

1
উঘ, পাইথনে উকোনেনের অ্যালগরিদম লেখা যথেষ্ট শক্ত, আমি এমনকি এটি সমাবেশে করার কল্পনাও করতে পারি।
rjzii

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

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

14

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

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

আমি দেখতে পাই যে অনেক লোক Qt এর মতো জিনিসে ঝাঁপিয়ে পড়েছে যারা শেষ পর্যন্ত এমন প্রশ্ন জিজ্ঞাসা করে যা সি ++ এর শূন্য জ্ঞান দেখায় (উদাহরণস্বরূপ)। তারা অনেকগুলি পদক্ষেপ এড়াতে চেষ্টা করছে এবং শেষ পর্যন্ত তাদের শিখতে আরও সময় লাগে। আমি বলব আপনি সঠিক পথে আছেন


আমি ২০০ 2007 সাল থেকে জাভা প্রোগ্রামিং পেশাগতভাবে করছি (নিযুক্ত হওয়া মানে) আমি এখন আইওএস এর কিছু বিকাশ করতে যাচ্ছি (কমপক্ষে আমি আশা করি)।
চিরন

9

আপনি আপনার সময় নষ্ট করছেন না।

যদি, আপনার কাজ চলাকালীন আপনাকে এমন একটি সরঞ্জাম বা কাঠামো ব্যবহার করতে হবে যা আপনি আগে ব্যবহার করেন নি, আপনি এটি শিখবেন এবং এটি ব্যবহার করবেন।

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

আমি যা বলতে চাইছি তা হ'ল এটি এমন ধরণের স্টাফ যা আপনি কেবল শিখতে পারবেন না, আপনি এটি শেখার মাধ্যমে শেখা দরকার , হয় কোনও একাডেমিক পরিস্থিতিতে, বা ব্যক্তিগত বিনিয়োগের প্রচেষ্টা হিসাবে আপনি যেমন এখন করছি


6

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


1

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

আপনি আগ্রহী এবং ফোকাস থাকা অবস্থায় আপনি আরও ভাল প্রোগ্রামার হয়ে উঠবেন, যখন আপনি প্রকল্পগুলিকে ব্যবহারিক বলে মনে করেন না তবে কিছুটা নিস্তেজ হয়।

খরগোশের গর্তের নিচে, ডরোথি!


1

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

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

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

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


0

আমার ধারণা আপনি যদি তাদের ভালভাবে না জানেন তবে আপনি সেগুলি ব্যবহারের কারণ খুঁজে পাবেন না। আমি সবসময় তাদের জন্য ব্যবহার খুঁজে পেতে বলে মনে হচ্ছে। তবে আমাকে স্বীকার করতে হবে যে গত অর্ধ ডজন বছর ধরে জেনেরিকের উন্নতির সাথে বা আপনার নিজের রোল করার প্রয়োজনীয়তা কম এবং কম ঘন ঘন ঘটে। এটি কীভাবে এবং কখন তাদের ব্যবহার করতে হবে তা জানার সুবিধাগুলি এখনও সরিয়ে দেয় না এবং তারা অন্যথায় জটিল কোডটি ব্যাপকভাবে সরল করতে পারে।

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