একজন দক্ষ প্রোগ্রামারকে কি নিজের স্বল্পতম পথের অ্যালগরিদম নিয়ে আসতে সক্ষম হতে হবে?


58

আমি কম্পিউটার প্রোগ্রামার হিসাবে আমার যোগ্যতার উপর আস্থার সংকটে পড়ছি।

গতকাল আমি একটি গ্রাফের জন্য নিজের স্বল্পতম পাথ অ্যালগরিদম নিয়ে আসার চেষ্টা করেছি এবং কয়েক ঘন্টা পরে আমি কেবল গামছায় ফেলেছিলাম এবং ডিজকস্ট্রার অ্যালগরিদম শিখেছি।

কোনও ভালো প্রোগ্রামারকে কি এই জাতীয় জিনিসটি কয়েক ঘন্টা "" পুনর্নির্মাণ "করতে সক্ষম হতে হবে বা আমি অবাস্তব করছি?

ওহ ভাল, কমপক্ষে আমি বুদ্বুদ সাজানোর পুনরায় উদ্ভাবন করতে সক্ষম হয়েছি: ডি


7
20 বছর ধরে ইউআই করেছেন এমন কারও অল্প সময়ের মধ্যেই অন্য ডোমেন থেকে সমস্যার সমাধান পেতে খুব কঠিন সময় লাগবে।
কোডার

38
এসই সাইটে প্রচুর সময় ব্যয় করা প্রত্যেকে আত্মবিশ্বাসের সংকট দেয় বলে আমি মনে করি! (এটি একটি খারাপ জিনিস নয়)। জীবনে সুখ যা কিছু তা গ্রহণ করার এবং তার পরিবর্তনের আকাঙ্ক্ষার মধ্যে নিখুঁত ভারসাম্য খুঁজে পাচ্ছে।
ট্রোজাননেম

2
আমি নিজেই এটিকে নতুন করে আনতে পারি না, তবে এটি কীভাবে কাজ করে তা মনে করার চেষ্টা করি। আপনি এই অ্যানিমেশনটি বুঝতে পেরেছেন তা নিশ্চিত করুন: আপলোড.উইকিমিডিয়া.আর
জব

6
স্থানীয় বুদ্ধিমানের ব্রায়ান ট্র্যাজেডি আপনি আর যে কোনও ক্ষেত্রেই সেরা হতে পারবেন না।
রি মিয়াসাকা

7
একজন ভাল কম্পিউটার বিজ্ঞানীর উচিত তবে কম্পিউটার প্রোগ্রামার বা সফটওয়্যার ইঞ্জিনিয়ারের প্রয়োজন হয় না
নীল ম্যাকগুইগান

উত্তর:


118

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

আমি সন্দেহ করি যে ডিজকસ્ત્રা কয়েক ঘন্টার মধ্যে সংক্ষিপ্ততম পথের অ্যালগরিদম নিয়ে এসেছিল, সুতরাং এটি কোনও 'ভাল প্রোগ্রামার' কিনা তা নির্ধারণের জন্য ব্যবহার করা সত্যই উচ্চমানের মতো বলে মনে হচ্ছে


25
@ নাকিলন - প্রোগ্রামাররা যারা বিদ্যমান সমাধানগুলি উপেক্ষা করে তারা কেবল তাদের সময় নষ্ট করছে, এবং যদি তারা তাদের সময় নষ্ট না করে, তবে তারা আরও খারাপ সমাধান করছে। দেখুন: প্রত্যেকে নিজের নিজের পাসওয়ার্ড হ্যাশিং স্কিম বনাম Bcrypt তৈরি করছে।
মনিকা পুনরায় ইনস্টল করুন

10
@GSto: উইকিপিডিয়া অনুযায়ী, Dijkstra আপ আলগোরিদিম সঙ্গে এক ঘন্টারও কম সময় এসে: 20 মিনিট, উইকিপিডিয়া প্রথম নোটটিতে acording: en.wikipedia.org/wiki/Dijkstra%27s_algorithm
woliveirajr

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

19
@ ওলিভিরাজর - আচ্ছা, আমি নিশ্চিত যে নিউটন গতির আইন নিয়ে আসতে একই পরিমাণ সময় নিয়েছিল। প্রথমে 20 বছর ধরে এটি সম্পর্কে চিন্তাভাবনা করার পরে।
২ook

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

54

কোনও ভালো প্রোগ্রামারকে কি এই জাতীয় জিনিসটি কয়েক ঘন্টা "" পুনর্নির্মাণ "করতে সক্ষম হতে হবে বা আমি অবাস্তব করছি?

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

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

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

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


56
চিন্তা করবেন না, যদি নিষ্ঠুর শক্তি কাজ করে না, আপনি কেবল এটি যথেষ্ট পরিমাণে ব্যবহার করছেন না।
রবি

2
তাত্ত্বিক সিএস এবং প্রোগ্রামিংয়ের মধ্যে পার্থক্য হাইলাইট করার জন্য +1। প্রোগ্রামিং রিয়েল-ওয়ার্ল্ড সমস্যা সমাধান এবং প্রোগ্রামিং সমর্থন করার জন্য তাত্ত্বিক সিএস রয়েছে। তবে তাত্ত্বিক সিএস বেশিরভাগ মানুষের দৈনন্দিন প্রোগ্রামিংয়ে 100% অপরিহার্য নয়।
ফিল

17

কোনও ভালো প্রোগ্রামারকে কি এই জাতীয় জিনিসটি কয়েক ঘন্টা "" পুনর্নির্মাণ "করতে সক্ষম হতে হবে বা আমি অবাস্তব করছি?

অবশ্যই অবাস্তব। লোকেরা কয়েক ঘন্টার মধ্যে অ্যালগরিদমগুলি নিয়ে কেবল "উঠে আসে না"। এটি অনেক প্রচেষ্টা এবং কাজ লাগে। এই ব্লগ উদ্ধৃত :

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

এবং বড় সেটগুলির জন্য প্রয়োগ করার সময় বেন্টলির সংস্করণটিও সমস্যাযুক্ত ছিল।

তদ্ব্যতীত, একটি ভাল প্রোগ্রামার জানে যে তার সরঞ্জামগুলি কী কী এবং কখন সেই সরঞ্জামগুলি ব্যবহার করতে হয়। মৌলিকতা বা জিনিসগুলি আলাদাভাবে করার জন্য আপনি অতিরিক্ত পয়েন্ট পাবেন না - আপনি এটি কাজ করতে এবং ভালভাবে কাজ করতে চান।


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

8
@ রিচার্ড - মন্তব্যটি ছিল "প্রোগ্রামিং পার্লসে, বেন্টলি বলেছেন .." নূথ এটি প্রথম বলেছিলেন, তবে আমার উত্স টিওওসিপি নয়, প্রোগ্রামিং পার্লস, তাই আমি বেন্টলে যা লিখেছি তা লিখেছি। আমি দাবি করি নি যে বেন্টলিই প্রবর্তক - আমি বইটিতে যা বলেছি তা কেবল উদ্ধৃত করেছিলাম। বইগুলিতে প্রচুর পরিমাণে উপাদানগুলি লেখকরা তাদের উদ্ভাবন করেননি, সুতরাং আপনি কেন সেভাবে দেখবেন তা আমি দেখতে পাচ্ছি না।
ব্ল্যাকজ্যাক

উক্তিটি কেবলমাত্র বেন্টলিকে দায়ী করে আপনি নথের creditণের পক্ষে ব্যর্থ হন এবং "বেন্টলির" বক্তব্যটি যদি ভুল হয় তবে আপনি বেন্টলিকে কেবল ছড়িয়ে দেওয়ার পরিবর্তে ভুল তথ্য তৈরির অবস্থানে রেখেছিলেন। কড়া কথা বলতে গেলে, আপনি বেন্টলে যা বলেছিলেন তা বলেননি: আপনার যদি থাকে তবে আপনি বলতেন, "বেন্টলি বলেছিলেন যে নূথ বলেছিল যে ..."। উদ্ধৃতিটি এখানে ভাল ব্যবহার করা হয়েছে, তবে এটি যে প্রসঙ্গে বলা হয়েছিল তাতে তা বাইরে নেওয়া হয়।
রিচার্ড

3
@ রিচার্ড - আমি যে উদ্ধৃতিটি তালিকাভুক্ত করেছি তা সরাসরি ব্লগ থেকে এসেছে, যা বইটি থেকে সরাসরি উদ্ধৃত করেছে (আক্ষরিক অর্থে, আমি মনে করি এটি প্রথম সংস্করণের 57 পৃষ্ঠা)। বিবৃতিতে আপনার যদি এ জাতীয় সমস্যা থাকে তবে ব্লগের লেখকের সাথে যোগাযোগ করুন এবং তাকে এটি পরিবর্তন করতে বলুন।
ব্ল্যাকজ্যাক

1
@ রিচার্ড এবং ব্ল্যাক জ্যাক: আপনি উভয়ই সঠিক, তবে মূল লেখকের প্রতিপত্তি বিবৃতিতে বিশ্বাসযোগ্যতা এবং প্রসঙ্গ যুক্ত করে। আমার সম্পাদনা যথেষ্ট হওয়া উচিত।
স্টিভেন এভার্স 21

9

এটি আপনার পক্ষে চয়ন করতে পারেন তার চেয়ে ভাল সমাধান আপনি সক্ষম করতে পারবেন এমনটি খুব সম্ভবত।

"সেরা" হিসাবে বিবেচিত একের চেয়ে আরও ভাল অ্যালগরিদম নিয়ে আসা (আপনার ক্ষেত্রে, সংক্ষিপ্ততম) প্রত্যেকেই কিছু করতে পারে না। সম্ভবত এটি সম্ভবও নয়।

একটি ভাল প্রোগ্রামারকে অ্যালগরিদমের পিছনে যুক্তি বুঝতে এবং অন্য সমস্যাগুলির তুলনায় কেন এটি ভাল বা খারাপ (বা সেই নির্দিষ্ট সমস্যার পক্ষে কেবল অপ্রতুল) কেন তা বুঝতে সক্ষম হওয়া উচিত যা একই সমস্যাটি সমাধান করার চেষ্টা করে।

(গুলি) সেই সমস্যাটি সমাধানের পক্ষে এটি সর্বোত্তম উপায় কিনা তাও তিনি জানতে সক্ষম হবেন।

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


6

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

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

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

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


আহা বিড়ম্বনা ... এখন আমি যে কোনও জায়গায় মন্তব্য করতে পারি, এমন উত্তরটি কি আমাকে মুছে ফেলা উচিত? এটির জন্য একটি ব্যাজ থাকা উচিত।
কিথ লেইন

আছে - শৃঙ্খলাবদ্ধ তবে , যদি আপনার খ্যাতি পুনরায়
গণনা করা

হ্যাঁ, এটাই আমার বক্তব্য ... আমি আইএমওতে শৃঙ্খলার aboveর্ধ্বে এবং তার বাইরে যাব be যদি আমি মুছে ফেলার আগে একটি মন্তব্যে আমার উত্তরকে রূপান্তর করি তবে আমার কাছে এটি সবই থাকতে পারে ... আমি কোনও নতুন মোছার জন্য উবারডিসিপ্লিনড নামে একটি নতুন ব্যাজ প্রস্তাব করছি যা আপনাকে ব্র্যান্ড নতুন ব্যবহারকারীর স্থিতিতে ফিরিয়ে আনবে। :)
কীথ লেইন

3

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

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

আরও বিখ্যাত, আইনস্টাইন, যিনি আপনি নট তত্ত্বের বিশেষজ্ঞ হিসাবে মনে করবেন, তিনি দশ বছর বয়স না হওয়া অবধি নিজের জুতো বাঁধতে পারেননি।

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


3

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

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

অবশ্যই, তদন্ত এবং অন্যের দ্বারা সমাধানগুলি সন্ধান করাও কাজ করে তবে এই পয়েন্টটির চূড়ান্ত এমন একটি লোক যা নিজের কথা ভাবেন না এবং যার প্রোগ্রামগুলি গুগল অনুসন্ধানগুলির একটি সংযোজন।

আমি মনে করি আমি আসলে যা চেয়েছি তার চেয়ে কঠোর শব্দ করছি, তবে আমার বক্তব্যটি হ'ল: আমি যদি কোনও প্রোগ্রামার সমস্যার সলিউশন বগি বা অগোছালো হলেও সমস্যার সমাধানের পক্ষে যথেষ্ট সৃজনশীল হওয়ার আশা করতাম।


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

(বিটিডব্লিউ আমার অনুমোদনের জন্য নিখরচায় গাড়ি ধোয়ার কুপনের মতো একই ক্রমকে গুরুত্ব দেয়।)


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

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

আমি উভয় পয়েন্টে একমত না, তবে আমি মনে করি আমরা দুটি ভিন্ন জিনিস পরিমাপ করছি। একটি হ'ল প্রোগ্রামারকে সমস্যাগুলি সমাধান করার ক্ষমতা (এমন কিছু যা আমি অপরিহার্য বলে মনে করি)। অন্যটি হ'ল আত্ম-সমালোচনা (আমি এটিকে প্রয়োজনীয় হিসাবে বিবেচনা করি তবে প্রোগ্রামিংয়ের জন্য নয়: জীবনের জন্য) এবং কোড বিচার করার ক্ষমতা (অত্যন্ত আকাঙ্ক্ষিত)। আমি আরও বলব যে চিরদিনের জন্য সমাধানগুলি আসলে সমাধান হয় না, তারা কি? ;)
আলফা

2

হ্যাঁ, তার উচিত।

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

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

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


1

চিন্তা করো না

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

সুতরাং আমি যা বলছি তা হ'ল:

  1. আমি চাকাটি পুনর্বিবেচনার প্রস্তাব দিচ্ছি না তবে আপনি যখন করেন ...
  2. এটি পুরোপুরি পুনর্নবীকরণ না করার চেষ্টা করুন এবং ...
  3. আপনি এটি করতে না পারলে চিন্তা করবেন না। এজন্য আমাদের একটি প্রোগ্রামিং সম্প্রদায় রয়েছে :-)।

এটি সাধারণভাবে সমস্যা সমাধানের বিষয়ে এটি পুনর্নবীকরণের বিষয়ে নয়। আপনি যদি নিজে নিজে জিনিস আবিষ্কার করার চেষ্টা না করেন তবে আপনি কখনই উন্নতি করতে পারবেন না।
নীল

0

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


0

কোনও ভালো প্রোগ্রামারকে কি এই জাতীয় জিনিসটি কয়েক ঘন্টা "" পুনর্নির্মাণ "করতে সক্ষম হতে হবে বা আমি অবাস্তব করছি?

আমি যতদূর বলতে চাই যে আপনি যদি নিজের নিজের মতো করে শর্টেস্ট পাথের মতো পরিচিত সমস্যাটির জন্য অ্যালগরিদম আবিষ্কার করতে সক্ষম হন তবে আপনি একজন খারাপ প্রোগ্রামার হয়ে যাচ্ছেন ।

এর অর্থ এই যে আপনি সংক্ষিপ্ত পথের সমস্যার বিষয়ে বেশিরভাগ ইতিহাসকে উপেক্ষা করছেন , ১৯৫৫ সালে প্রকাশিত হে (| ভি | ^ 4) অ্যালগরিদম থেকে ১৯৮৪ সালে প্রকাশিত ও (ই + ভি লগ ভি) অ্যালগরিদম থেকে যা (যা ডিজকস্ট্রার ফিবোনাচি গাছ সহ অ্যালগরিদম)। ইতিমধ্যে তৈরি করা অ্যালগরিদমগুলির চেয়ে খারাপ করার জন্য আপনি প্রায় গ্যারান্টিযুক্ত। তবুও খারাপ বিষয়, আপনার অ্যালগরিদমের ফাঁক বা ভুলকে ভুল তৈরি করার একটি ভাল সুযোগ রয়েছে। এছাড়াও, আপনি অবশ্যই আপনার অ্যালগোরিদম চিন্তা করতে, এটি বাস্তবায়ন করতে এবং বিদ্যমান অ্যালগরিদমটিকে পুনরায় ব্যবহার করতে যে সময় নেবেন তার চেয়ে পরীক্ষার জন্য আপনি অবশ্যই অনেক বেশি সময় ব্যয় করবেন।

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

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


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

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

সময় আক্রমণের সময় ইত্যাদি অবশ্যই একটি বৈধ উদ্বেগ (এবং কেবল ক্রিপ্টোগ্রাফিতেই নয়), আমি যুক্তি দিয়ে বলছি যে এর সাথে বাস্তবায়নের সংবেদনশীলতা এর সঠিকতার কোনও প্রভাব ফেলবে না । এবং ক্রিপ্টোগ্রাফি পদ্ধতিতে ভুল করার অনেকগুলি উপায় রয়েছে কেবল সময় আক্রমণকে সক্ষম করার চেয়ে বেশি। ব্রুস শ্নিয়ার তার ডগহাউজ সিরিজ চালাতেন ; আমি সম্প্রতি এটিতে কিছুই দেখিনি, তবে সেখানে প্রচুর সতর্কতার উদাহরণ রয়েছে। google.com/search?q=site%3Aschneier.com+%22 এই +
অ্যাডহাউস ১০২২
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.