স্কুলগুলি ডিবাগারগুলি কভার করে না কেন? [বন্ধ]


12

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

  • প্রশ্নটি এই নয় যে ডিবাগিং করা উচিত এবং কীভাবে আধুনিক ডিবাগিং সরঞ্জামগুলি ব্যবহার করে প্রোগ্রামিং মৌলিকগুলির পাশাপাশি শেখানো উচিত? না হলে কেন হবে না।

2
এরম .. আপনি বলছেন জিডিবি একটি আধুনিক ডিবাগিং সরঞ্জাম? এটি কোনও খারাপ ডিবাগার নয়, তবে এটি অবশ্যই শিল্পের রাজ্য নয়।
বিলি ওনিল

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

@ রেরুন: আর্ম .. আউট। তারা আইডিইতে "প্লে" বোতামটি আঘাত করতে পারে না? (
বিটিডাব্লু

system.out প্রিন্ট লগিং অলস এবং অদক্ষ

6
@ জারোদ, একটি দুর্দান্ত বিস্তৃত সাধারণীকরণ এবং সম্ভবত অতিরিক্ত মাত্রায়। কখনও কখনও আপনি সমস্যা যেখানে আপনার প্রোগ্রামে একটি ডিবাগার ব্যবহার করতে পারবেন না।

উত্তর:


7

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

  • সমালোচনা
  • বিভাজন এবং বিজয়
  • প্রিন্টফ ডিবাগিং, লগিং ইত্যাদি
  • ডেস্ক চেকিং
  • চাপ পরীক্ষা

অতিরিক্ত সুবিধা হিসাবে, প্রোগ্রামিং ব্যতীত অন্যান্য অঞ্চলে সমস্যা সমাধানেও অনেকগুলি কৌশল প্রয়োগ করা যেতে পারে।

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


8

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

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


3
+1 টি। অনুবাদিত: যেহেতু সবাই এমএসভিএস, জিসিসি / জিডিবি, এলএলভিএম / সিএলএং ইত্যাদি ব্যবহার করে না
বিলি ওনিল

1
+1 যদিও আমাকে স্বীকার করতে হবে আমি @ আররুনের সাথে একমত; একটি সফ্টওয়্যার শপে ব্যবহৃত বেসিক ধারণা এবং সরঞ্জামগুলির উপরে চলে এমন একটি কোর্স (বা এর একটি অংশ) নতুন স্নাতকদের উত্পাদনশীল হওয়ার দিকে দীর্ঘ পথ যেতে পারে। আমি বেশ কয়েকটি জুড়ে দৌড়েছি যা কিছুক্ষণ ব্যবহার করার পরেও উত্স নিয়ন্ত্রণটি বোঝে না।
কেন হেন্ডারসন

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

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

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

2

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


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

2
@ বিলি তাই ভুল কোড দিয়ে পদবিন্যাস কি কোনওভাবে তাদের সহায়তা করবে?
নিল বাটারওয়ার্থ

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

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

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

2

এটি এত গুরুত্বপূর্ণ নয়। আমি প্রায় কখনও একটি ব্যবহার করি না, এবং কখনও নেই। ডিবাগ কোডের সর্বোত্তম উপায় হ'ল:

  • প্রথম স্থানে বাগগুলি লিখবেন না
  • আপনি যদি এগুলি লেখেন তবে ডিবাগারে ডুব দিয়ে নয়, চিন্তা করে ঠিক করুন

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


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

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

@ নীল: আমি ব্যক্তিগতভাবে কখনই এ জাতীয় জিনিস নিয়ে আসিনি ... তবে সমস্যা ছাড়াই এমটি কোড ডিবাগ করে ফেলেছি। সম্ভবত আমি এমএসভিসি ++ দ্বারা নষ্ট হয়েছি - সেখানে ডিবাগারগুলি দেখায় যে বিভিন্ন থ্রেড সত্যিই কী সহজ করছে। তবে যদি আমি ২০০৮-এর পূর্ববর্তী সংস্করণগুলিতে ডিবাগ করছিলাম (আমি মনে করি এটি তখন যুক্ত হয়েছিল) আমি কীভাবে এটি আরও জটিল করে তুলতে পারি তা দেখতে পেতাম।
বিলি ওনিল

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

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

0

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

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


হুম .. হতে পারে আমার স্কুলটি ঠিক অন্যরকম, তবে সিডাব্লুআরইউতে জিনিসগুলি কীভাবে করা হয় তা তা নয়।
বিলি ওনিল

সম্ভবত প্রশ্নে থাকা প্রোগ্রামিং কোর্সের historicalতিহাসিক বিভাগের উত্তরাধিকারের গাছের উপর নির্ভর করে।
হটপাওয়া 2

আমি নিশ্চিত না আপনি কোথায় এই সব পাচ্ছেন? সমস্ত প্রারম্ভিক ক্লাস কীভাবে বাগগুলি ট্র্যাক করতে হয় সে সম্পর্কে কয়েকটি বক্তৃতা ব্যয় করে।
davidk01

@ ডেভিডক 01 - এটি ওপি'র পর্যবেক্ষণের ব্যাখ্যা দেয় না, যা আমি শুনেছি, প্রায়শই নয়, বরং একাধিকবার হয়েছে।
হটপাউ 2

@ হটপাউ ২: ওপির পর্যবেক্ষণকে কী ব্যাখ্যা করে না? শিক্ষার্থীদের ডিবাগ প্রোগ্রাম শেখার জন্য কঠিন সময় থাকার অর্থ এই নয় যে এটি শেখানো হয়নি যা আপনি যে সিদ্ধান্তে ঝাঁপিয়ে পড়ছেন তা। আমি স্নাতক ছাত্র এবং স্নাতক শিক্ষার্থী উভয়ই বেশ কয়েকটি প্রোগ্রামিং কোর্স নিয়েছি। প্রতিটি শ্রেণিতে প্রশিক্ষক একটি ভুল প্রোগ্রামের জন্য এবং কিছু সাধারণ ডিবাগিং কৌশল প্রদর্শনের জন্য এটি ঠিক করার জন্য কমপক্ষে একটি বক্তৃতা ব্যয় করেছেন।
davidk01

0

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

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


0

এটি নিজে থেকে চিত্রিত করুন

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

শিখুন কীভাবে শিখবেন

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

চাপ, উভয় উপায়, তুষার মাধ্যমে

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

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