কোড লেখা শুরু করার আগে একজন প্রোগ্রামারের পক্ষে অ্যালগরিদম ডিজাইন করা ভাল কেন?


12

একটি উপযুক্ত অ্যালগরিদম সত্যিই গুণমান উন্নত করতে সহায়তা করে এবং শেষ পর্যন্ত একটি প্রোগ্রামের দক্ষতা?

আমরা কি এখনও অ্যালগরিদম ছাড়াই একটি ভাল মানের প্রোগ্রাম তৈরি করতে পারি?

আধুনিক প্রোগ্রামিংয়ে কি কোনও উপযুক্ত অ্যালগরিদম দরকার?


5
সংজ্ঞা অনুসারে কিছু অ্যালগরিদম আছে, এমনকি যদি এটি খুব খারাপ হয় তবে এটি ভাল

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

13
আমি বিশ্বাস করতে পারি না যে এটি একটি গুরুতর প্রশ্ন। En.wikedia.org/wiki/Algorithm
স্টিভেন এ। লো

2
শিরোনাম যুক্তিসঙ্গত, তবে প্রশ্নের পাঠ্য কম less আমি মনে করি তিনি জিজ্ঞাসা করছেন যে কেউ আসল কোড লেখা শুরু করার আগে অ্যালগরিদমকে পেরেক দেওয়া উচিত কিনা।
গ্রেগ

9
আমি বলছি না ... যতক্ষণ না আপনি দুর্ঘটনাক্রমে আপনার গন্তব্য খুঁজে না পান বা গ্যাসের সঞ্চালন না করা অবধি নিরবচ্ছিন্নভাবে গাড়ি চালানো ভাল।
jmq

উত্তর:


29

আমি মনে করি এই প্রশ্নটি কিছু historicalতিহাসিক দৃষ্টিকোণ গ্রহণ করে।

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

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

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


1
কি উত্তর। তোমাকে এখানে রাখা আমার সৌভাগ্য!
জার্ভিস

5
এছাড়াও প্রোগ্রামারটির তুলনায় কম্পিউটারটি অনেক বেশি ব্যয়বহুল ছিল, সুতরাং প্রোগ্রামারটিকে আরও কঠোরভাবে কাজ করা বোধগম্য হয়েছিল!

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

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

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

14

কিছু বোঝাতে:

একটি অ্যালগরিদম নিজেই আপনার সমস্যার সাধারণ ধাপে ধাপে সমাধান। সুতরাং, যদি আপনি সমস্যার সমাধান করেন তবে আপনি আসলে একটি অ্যালগরিদম ব্যবহার করেছিলেন।

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

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

সম্পাদনা করুন:

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

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

  • তবে আসল কোডটি রূপরেখার জন্য ব্যবহার করা যেতে পারে। উদাহরণস্বরূপ, টিডিডি লোকেরা কোড হিসাবে অ্যালগরিদম ডিজাইন করতে পছন্দ করে এবং যেহেতু তারা এগুলি একবারে সমাধান করতে পারে না, তাই তারা বাস্তব কোডে প্রোগ্রামের সম্পাদনার একটি রূপরেখা ডিজাইন করে এবং মক অবজেক্টগুলি (বা ফাংশন, পদ্ধতি ..) ব্যবহার করে ।) পরে পূরণ করতে হবে ফাঁকা হিসাবে।

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

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

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


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

@ জার্ভিস: আমার আপডেট দেখুন, আমি তাদের কয়েকটি তালিকাভুক্ত করেছি।
গোরান জোভিক

লিঙ্কটি কোথায়?
জার্ভিস

4

রান্না শুরু করার আগে একটি রেসিপি অবশ্যই জেনে রাখা উচিত একটি ভাল উপমা know ঠিক আছে আপনি যেতে যেতে এটি টুইট করতে পারেন, কিন্তু আপনি এখনও শুরু করার আগে আপনি কি করতে চান তা জানতে হবে। আমি যদি ভেড়ার বাচ্চা স্টু বানাতে চাই তবে আমি একটি রুটি বেক করতে চাই তার চেয়ে আমি খুব আলাদা জিনিস করব।


অ্যালগরিদম = ধারণা ???
জার্ভিস

অ্যালগরিদম == রেসিপি !!

তবে বিভিন্ন শেফের একই রেসিপি অনুসারে রান্নার বিভিন্ন পদ্ধতি রয়েছে।
জার্ভিস

অবশ্যই, আমি যখন রুটি বেক করি তখন আমার স্ত্রী যখন রুটি বেক করেন তখন থেকে এটি আলাদা হয়। তবে মৌলিক অংশগুলি একই (ময়দা, জল, খামির, লবণ)
জাকারি কে

এছাড়াও এমন দোকান রয়েছে যেখানে আপনি কেবল পেশাদার বেকার
জেকে

3

কোড অ্যালগরিদম প্রয়োগ করে। অ্যালগরিদম ডিজাইন না করে কোড লেখার চেষ্টা করা দেওয়ালগুলি তৈরি করার আগে একটি বাড়ি আঁকার চেষ্টা করার মতো। প্রোগ্রামিং শুরুর পর থেকেই অ্যালগরিদমগুলি একটি "আবশ্যক"।


ঠিক আছে. একটি বাড়ি আঁকা এবিসি হিসাবে সহজ, আপনি বাড়ির অস্তিত্ব ছাড়াই পরিকল্পনা শুরু করতে পারেন।
জার্ভিস

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

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

3

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

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

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


1

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

পরে আপনি কোডটি আবার সংশোধন করতে পারেন যদি প্রোফাইলিং পরামর্শ দেয় যে সেই ক্ষেত্রে কোনও কার্য সম্পাদনের সমস্যা আছে issue


1

কারণটি হ'ল আপনি ভুল কোডটি লেখার আগে ভুলগুলি সংশোধন করা দ্রুত।

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

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


আপনার একদম ঠিক আছে।
জার্ভিস

1

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


আমি আপনার সাথে একমত.
জার্ভিস

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

0

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

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

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

0

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

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

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


0

আপনি যখন বসে বসে কোডিং শুরু করেন, তখন আপনার মনে একটি অ্যালগরিদম থাকে, "নকশাকৃত" কিনা।

আপনি যদি বসে থাকেন এবং কোনও সম্পূর্ণ অ্যালগরিদম মাথায় না রেখে কোডিং শুরু করেন, আপনি নিম্নলিখিতগুলির একটি করছেন:

1) এলোমেলোভাবে কী ম্যাশিং। এটি সম্ভবত একটি সংকলক ত্রুটি তৈরি করবে

2) সংকলনযোগ্য কোড রচনা যা সম্ভবত আপনি যা করতে চান তা ব্যতীত অন্য কিছু করে

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

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

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


0

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

একটি উপযুক্ত অ্যালগরিদম সত্যিই গুণমান উন্নত করতে সহায়তা করে এবং শেষ পর্যন্ত একটি প্রোগ্রামের দক্ষতা?

উপযুক্ত বিল্ডিং প্ল্যান / স্কিমেটিকস কীভাবে দক্ষতার সাথে একটি ঘর তৈরি করতে সহায়তা করে?

আমরা কি এখনও অ্যালগরিদম ছাড়াই একটি ভাল মানের প্রোগ্রাম তৈরি করতে পারি?

আপনি কি উপযুক্ত বিল্ডিং পরিকল্পনা না করে দক্ষতার সাথে একটি ভাল মানের বাড়ি তৈরি করতে পারেন? অনুযায়ী অসীম বানর উপপাদ্য , সম্ভাব্য হাঁ (ঠিক একটি মিলিয়ন যেমন অনন্তকাল জন্য এলোমেলোভাবে টাইপ বানর অবশেষে শেক্সপীয়ারের সম্পূর্ণ কাজ টাইপ হবে।

আধুনিক প্রোগ্রামিংয়ে কি কোনও উপযুক্ত অ্যালগরিদম দরকার?

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

প্রকৃতপক্ষে, আধুনিক প্রোগ্রামিংয়ের কাজটি কাউবয় প্রোগ্রামিং সফটওয়্যার ইঞ্জিনিয়ার থেকে দূরে সরে গেছে যেখানে প্রয়োজন হলে কোনও ধরণের পরিকল্পনা করা হচ্ছে

এমনকি আপনার যখন আপনার নিষ্পত্তিস্থলে অ্যালগরিদম এবং ডেটা স্ট্রাকচারের একটি গ্রন্থাগার রয়েছে (। সি .+ বা জাভা সংগ্রহের লাইব্রেরিতে বুস্ট করা) তখন আপনাকে জানতে হবে যে জিনিসগুলি কীভাবে এটি যথাযথভাবে ব্যবহার করতে কাজ করে এবং যুক্তিসঙ্গত, উচ্চতর- রচনা করতে স্তর অ্যালগরিদম।


-2

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

প্রথমে কিছু ধরণের পরীক্ষা এবং মানদণ্ড রাখুন।

তারপর কিছু লিখুন, কিছু। আপনার সময়সীমা শেষ না হওয়া বা আর উন্নতি না করা পর্যন্ত রিফ্যাক্টর-পুনর্লিখন-লুপ করুন।

যদিও অনেকে মনে করেন যে কেউ কম্পিউটারে আসলে কিছু না করেই কম্পিউটার দিয়ে কাজ করতে পারে, আমি মনে করি এটি সেখানকার সবচেয়ে প্রচলিত রূপকথার মধ্যে একটি। আর্কিটেকচার নভোচারী।

এছাড়াও, আপনি লেখার আগে আপনার আলগোটিকে অনুকূল করতে পারবেন না।

IOW, "ধাতুর কাছে থাকুন"।

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