কম্পিউটার বিজ্ঞানের ভিত্তি/গণনা কী
গণনা কী
সম্পাদনাএই পাঠে, আমরা কম্পিউটার প্রযুক্তির পরিবর্তে গণনা নীতিগুলিতে (বড় ধারণাগুলি) মনোনিবেশ করার চেষ্টা করব, যা গণনানীতির সরঞ্জাম এবং প্রয়োগ। গণনাকে নীতি বা ধারণার একটি সেট দ্বারা সংজ্ঞায়িত করা হয়, যা নীতির উপর ভিত্তি করে তৈরি করা অসংখ্য প্রযুক্তির ভিত্তি। প্রযুক্তি জটিল এবং ক্রমাগত বিবর্তিত হতে পারে তবে নীতিগুলি একই থাকে। পাঠের দ্বিতীয়ার্ধে, আমরা গণনার ক্ষমতা এবং নীতিগুলি কীভাবে প্রয়োগ করা হয় তা প্রদর্শনের জন্য বিভিন্ন প্রযুক্তি অধ্যয়ন করব।
গণনার এবং প্রযুক্তির নীতিগুলি ছাড়াও গণনা অনুশীলন রয়েছে - যা পেশাদাররা গণনাকে এগিয়ে নিতে করেন।
ডানদিকের চার্টটি কম্পিউটিংয়ের নীতি এবং গণনা্র অনুশীলনের মধ্যে পার্থক্য চিত্রিত করে। নীতিগুলি প্রযুক্তি এবং অনুশীলনের উপর ভিত্তি করে। একজন ভোক্তা বিভিন্ন কাজের জন্য তাদের নির্মিত অ্যাপ্লিকেশনগুলির মাধ্যমে গণনা্র ক্ষমতাকে কাজে লাগান। আমরা বিশ্বাস করি প্রত্যেকেরই গণনা্র নীতিগুলি জানা দরকার কারণ এই নীতিগুলি ব্যাপকভাবে প্রযোজ্য। গণনা্র ক্ষেত্রে পেশাদার হিসাবে আমাদের দুটি প্রান্ত এবং মাঝখানে সমস্ত কিছু জানতে হবে- যেমন অনুশীলনগুলি (ক্রিয়াকলাপ এবং দক্ষতা যা কম্পিউটিংকে দরকারী এবং কার্যকর করে)।
আমরা পুরো বই জুড়ে গণনার এবং গণনা শব্দটি বিনিময়যোগ্যভাবে ব্যবহার করব।
গণনার মূলনীতি
সম্পাদনাগণনা্র মূলত তথ্য প্রক্রিয়া সম্পর্কে। গণনা্র একটি বড় ধারণা হল যে তথ্য প্রক্রিয়াগুলি সম্পূর্ণরূপে যান্ত্রিকভাবে প্রতীকের কারসাজির মাধ্যমে করা যেতে পারে। যে এজেন্ট গণনা্ করে, সে চিন্তাশীল মানুষ হোক বা মেশিন (কম্পিউটার), তাতে কিছু যায় আসে না। বইয়ের শেষের দিকে আমরা দেখতে পাব যে এটি সমস্ত আধুনিক কম্পিউটারের ক্ষেত্রে সত্য-ডিজিটাল কম্পিউটারগুলি নির্দেশাবলী অনুসারে দুটি প্রতীকে হস্তক্ষেপ (শূন্য এবং এক) পরিচালনা করে।
একটি উদহারণ
সম্পাদনা"থিংকিং অ্যাজ কম্পিউটেশন" বই [1] থেকে নিম্নলিখিত উপমাটি ধারণাটিকে ব্যাখ্যা করে। কল্পনা করুন যে আমাদের কাছে নিম্নলিখিত চিহ্নগুলির টেবিল রয়েছে।
a | b | c | d | e | f | g | h | i | j | |
---|---|---|---|---|---|---|---|---|---|---|
a | aa | ab | ac | ad | ae | af | ag | ah | ai | aj |
b | ab | ac | ad | ae | af | ag | ah | ai | aj | ba |
c | ac | ad | ae | af | ag | ah | ai | aj | ba | bb |
d | ad | ae | af | ag | ah | ai | aj | ba | bb | bc |
e | ae | af | ag | ah | ai | aj | ba | bb | bc | bd |
f | af | ag | ah | ai | aj | ba | bb | bc | bd | be |
g | ag | ah | ai | aj | ba | bb | bc | bd | be | bf |
h | ah | ai | aj | ba | bb | bc | bd | be | bf | bg |
i | ai | aj | ba | bb | bc | bd | be | bf | bg | bh |
j | aj | ba | bb | bc | bd | be | bf | bg | bh | bi |
প্রতীকগুলি যে কোনও প্রতীকের সেট হতে পারে, সরলতার জন্য আমরা ইংরেজি বর্ণমালা থেকে অক্ষরগুলি বেছে নিই। আমরা একটি পদ্ধতি P সংজ্ঞায়িত করতে পারি যা ইনপুট হিসাবে দুটি প্রতীক ('a' থেকে 'j') নেয় এবং আউটপুট হিসাবে একই সেটে দুটি প্রতীক তৈরি করে। অভ্যন্তরীণভাবে, পদ্ধতিটি একই প্রতীক দিয়ে শুরু হওয়া একটি সারি খুঁজে বের করার জন্য প্রথম ইনপুট প্রতীক ব্যবহার করে, তারপর দ্বিতীয় ইনপুট প্রতীক ব্যবহার করে শীর্ষে একই প্রতীক সহ একটি কলাম খুঁজে বের করে, এবং তারপর ক্রস পয়েন্টে প্রতীকগুলি রিপোর্ট/রিটার্ন করে। এটা কল্পনা করা কঠিন নয় যে এই ধরনের একটি টেবিল সন্ধান পদ্ধতি একটি সাধারণ এজেন্ট দ্বারা সম্পূর্ণরূপে যান্ত্রিকভাবে (অন্ধভাবে) করা যেতে পারে। অবশ্যই একজন মানুষ এটি করতে পারে কিন্তু এই ধরনের প্রতীকের কারসাজির জন্য কোনও মানব বুদ্ধিমত্তার প্রয়োজন হয় না। এই চিন্তার পরীক্ষা থেকে দুটি সিদ্ধান্ত নেওয়া যেতে পারেঃ
- প্রতীকের হেরফের যান্ত্রিকভাবে করা যেতে পারে।
- যে যন্ত্রটি কারসাজি সম্পাদন করে তার প্রতীকগুলির অর্থ বা কারসাজির উদ্দেশ্য জানার প্রয়োজন হয় না।
এই পদ্ধতিটি অর্থপূর্ণ হতে পারে যদি আমরা জানি কিভাবে প্রতীকগুলি ব্যাখ্যা করতে হয়। উদাহরণস্বরূপ, যদি 'a' থেকে 'j' চিহ্নগুলি যথাক্রমে ০ থেকে ৯ এর পরিমাণ উপস্থাপন করে, তবে এই পদ্ধতিটি একক দশমিক অঙ্ক যোগ করে। উদাহরণস্বরূপ, p (d, f) = p (৩,৫) = ai = ০৮, যা ৩+৫ এর সঠিক ফলাফল। নিম্নলিখিত টেবিলটি মূলত আগেরটির মতোই, তবে এটি মানুষের কাছে অর্থপূর্ণ প্রতীক ব্যবহার করে।
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | |
---|---|---|---|---|---|---|---|---|---|---|
0 | 00 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 |
1 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 |
2 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 |
3 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
4 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 |
5 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 |
6 | 06 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 |
7 | 07 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 |
8 | 08 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
9 | 09 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
এখন যেহেতু আমাদের একটি সহজ পদ্ধতি P রয়েছে যা একটি সাধারণ এজেন্টকে দুটি একক অঙ্কের দশমিক সংখ্যা যোগ করার নির্দেশ দিতে পারে, আমরা একটি নতুন পদ্ধতি P ১ তৈরি করতে পারি যা নিম্নলিখিত চার্টে দেখানো তিনটি একক-অঙ্কের দশমিক সংখ্যা যোগ করতে পারে। নতুন পদ্ধতি P১ তিনটি দশমিক সংখ্যা যোগ করার জন্য পদ্ধতি P-এর তিনটি দৃষ্টান্ত নিয়োগ করে এবং ফলস্বরূপ দুটি সংখ্যা প্রদান করে। আমরা পদ্ধতিগুলিকে ইনপুট এবং আউটপুট সহ মেশিন হিসাবে দেখতে পারি এবং লাইনগুলি পাইপ যা প্রতীকগুলিকে এক জায়গা থেকে অন্য জায়গায় যেতে দেয়। এটা কল্পনা করা কঠিন নয় যে একজন প্রতিনিধি যে P পরিচালনা করতে পারে সে P ১ পরিচালনা করতে পারে কারণ P ১ সম্পূর্ণরূপে P দ্বারা গঠিত। লক্ষ্য করুন যে বিন্দুযুক্ত আয়তক্ষেত্রটি P-এর দৃষ্টান্ত নিয়ে গঠিত নতুন পদ্ধতি P ১-এর প্রতিনিধিত্ব করে এবং নমুনা ইনপুটগুলির জন্য P ১ দ্বারা প্রদত্ত উত্তরটি সঠিক। আবার এই প্রক্রিয়ায় ব্যবহৃত চিহ্নগুলি যে কোনও প্রতীকের সেট হতে পারে কারণ অভ্যন্তরীণভাবে সহজ টেবিল সন্ধান করা হয়।
এখন কল্পনা করুন যে আমরা আরও জটিল পদ্ধতি তৈরি করতে P ১ ব্যবহার করতে পারি, উদাহরণস্বরূপ নিম্নলিখিত P ২ চার্টে পদ্ধতি। [[File:P1 to p2.svg|600px|এই চার্টটি একটি P1 পদ্ধতি থেকে একটি P2 পদ্ধতি তৈরি করার একটি উপায় চিত্রিত করে।]
পি ২ দুটি দ্বি-অঙ্কের সংখ্যা যোগ করতে পি ১ ব্যবহার করে, আসলে আমরা যে কোনও সংখ্যার সংখ্যা যোগ করতে ডিজাইনে আরও পি ১ যুক্ত করতে পারি।
এতক্ষণে আমরা নিম্নলিখিত পর্যবেক্ষণগুলি করতে পারিঃ
- যে কোনও যন্ত্র যা পি সম্পাদন করতে পারে তা পি ১, পি ২ এবং ইত্যাদি সম্পাদন করতে পারে।
- আমরা এমন পদ্ধতি তৈরি করেছি যা আপাতদৃষ্টিতে বুদ্ধিমান ক্রিয়াকলাপগুলি আরও জটিল করে তোলে এবং একই সাথে সেগুলিকে সহজ মেশিনের মাধ্যমে করা যায়।
যদি আমরা একই যুক্তি অনুসরণ করি, তাহলে এটা কল্পনা করা কঠিন নয় যে আমরা ক্রমবর্ধমানভাবে আরও জটিল পদ্ধতি তৈরি করতে পারি যাতে সহজ যন্ত্রটিকে ক্রমবর্ধমানভাবে আরও বুদ্ধিমান কাজ করার নির্দেশ দেওয়া যায়, যেমনঃ
- পূর্ণসংখ্যা বিয়োগ
- দুটি পূর্ণসংখ্যার তুলনা করা (বিয়োগ করা এবং ফলাফলের চিহ্নটি পরীক্ষা করা)
- পূর্ণসংখ্যা গুণন (পুনরাবৃত্ত যোগ)
- পূর্ণসংখ্যার একটি জোড়া ব্যবহার করে ভগ্নাংশগুলি উপস্থাপন করে এবং তাদের উপর গাণিতিক করুন
- সমীকরণের সিস্টেমগুলি উপস্থাপন করতে এবং ম্যাট্রিক্স ক্রিয়াকলাপ ব্যবহার করে সেগুলি সমাধান করতে পূর্ণসংখ্যার ম্যাট্রিক্স ব্যবহার করুন
- জটিল ভৌত সিস্টেমগুলির মডেল তৈরি করতে সমীকরণের সিস্টেমগুলি ব্যবহার করুন এবং এই সিস্টেমগুলির সংখ্যাসূচক সিমুলেশন সম্পাদন করুন।
সংক্ষেপে, এই উদাহরণ থেকে আমরা দেখতে পাচ্ছি যে সাধারণ প্রতীকী ক্রিয়াকলাপগুলি গণনামূলক প্রক্রিয়াগুলির মাধ্যমে আশ্চর্যজনক ক্রিয়াকলাপ সম্পাদনের জন্য বৃহত্তর পদ্ধতি গঠনের জন্য একত্রিত করা যেতে পারে। এই ধরনের ক্রিয়াকলাপগুলি সংখ্যাসূচক গণনার মধ্যে সীমাবদ্ধ নয়। যদি আমরা বিমূর্ত ধারণাগুলিকে প্রতীক হিসাবে উপস্থাপন করতে পারি (যেমন আমরা বিমূর্ত পরিমাণগুলিকে কংক্রিট সংখ্যা হিসাবে উপস্থাপন করি) এবং ধারণাগুলির মধ্যে সম্পর্ক অনুসারে প্রতীকগুলিকে পরিচালনা করার জন্য ডিভাইস পদ্ধতিগুলি আমরা গণনামূলক প্রক্রিয়া হিসাবে যুক্তি মডেল করতে পারি। কম্পিউটার বিজ্ঞান মূলত এই সম্পর্কে-দুটি প্রয়োজনীয় উপাদান সহ তথ্য প্রক্রিয়াঃ উপস্থাপনা এবং উপস্থাপনাগুলির কারসাজির জন্য নিয়মের একটি ক্রম। মনে রাখবেন যে এর সঙ্গে ইলেকট্রনিক্স বা পদার্থবিজ্ঞানের কোনও সম্পর্ক নেই। যে যন্ত্রটি এই ধরনের প্রক্রিয়া পরিচালনা করে তার চিহ্নগুলির অর্থ এবং কেন প্রক্রিয়াটি সঠিক ফলাফল দেয় তা জানার প্রয়োজন হয় না। যন্ত্রটিকে কেবল অন্ধভাবে পদ্ধতিগুলি (নিয়মের একটি সেট) অনুসরণ করতে হবে। উদাহরণস্বরূপ, আপনি চার্লস ব্যাবেজ দ্বারা পরিকল্পিত একটি যান্ত্রিক কম্পিউটার (পার্থক্য ইঞ্জিন) সম্পর্কে পড়তে পারেন যা বহুপদী ফাংশনগুলিকে সারণীবদ্ধ করতে পারেঃ
আরেকটি উদহা্রণ
সম্পাদনারিচার্ড ফাইনম্যান তাঁর কম্পিউটার হিউরিস্টিক্স লেকচারে (১ ঘন্টা ১৫ মিনিট) কম্পিউটার কীভাবে ভিতর থেকে কাজ করে তা ব্যাখ্যা করার জন্য আরেকটি অনুরূপ উদহা্রণ (ফাইল ক্লার্ক) ব্যবহার করেছিলেন। http://www.youtube.com/watch?v=EKWGDXe5MA
ইতিহাস
সম্পাদনাএখন যেহেতু আমরা গণ্না শিখেছি, মূলত, প্রতীকগুলির একটি নির্দিষ্ট ম্যানিপুলেশন। একটি কম্পিউটারের বিস্ময়কর কাজ সম্পাদন করার ক্ষমতা নির্ভর করে সুনির্দিষ্ট নিয়ম অনুযায়ী প্রতীকগুলিকে পরিচালনা করার ক্ষমতার উপর। প্রকৃতপক্ষে, ডিজিটাল কম্পিউটারগুলি শুধুমাত্র দুটি প্রতীক পরিচালনা করে-০ এবং ১। গণ্নার বুদ্ধিমত্তা নিয়ম/প্রোগ্রামগুলির নকশা এবং বাস্তবায়নের মধ্যে রয়েছে।
ভবিষ্যতে, কম্পিউটার যন্ত্রপাতি সম্পর্কে কথা বলার সময়, আমরা দেখব যে এই ধরনের নীতিগুলি ব্যবহার করে কম্পিউটার তৈরি করা হয়।
আপনি হয়তো ভাবতে পারেন যে, এই ধারণাগুলি কোথা থেকে এসেছে। ইতিহাসে অনেক মানুষ গণ্না এবং কম্পিউটারের ধারণায় উল্লেখযোগ্য অবদান রেখেছেন। গটফ্রিড লাইবনিজ (১৬৪৬-১৭১৬) একজন জার্মান দার্শনিক, যাকে প্রথম ব্যক্তি হিসাবে বিবেচনা করা হয় যিনি গণনায় যুক্তি কমা্নো এবং এই জাতীয় গণনা চালাতে সক্ষম একটি মেশিন তৈরির স্বপ্ন দেখেছিলেন। তিনি লক্ষ্য করেন যে, গাণিতিক ক্ষেত্রে আমরা চিহ্ন ব্যবহার করে বিমূর্ত পরিমাণের প্রতিনিধিত্ব করি এবং নিয়ম অনুযায়ী দরকারী ফলাফল পাওয়ার জন্য চিহ্নগুলিকে ব্যবহার করি। তিনি স্বপ্ন দেখেছিলেন যে আমরা গাণিতিকের মতো একই বিমূর্ত প্রতীক কারসাজির মাধ্যমে ধারণাগুলির মধ্যে যুক্তি অনুসারে প্রতীক এবং যুক্তি ব্যবহার করে বিমূর্ত ধারণাগুলি উপস্থাপন করতে পারি।
এই ধরনের কারসাজি আমাদের সঠিক ফলাফল দেয় কারণ যে কারসাজি করে সে বুদ্ধিমান নয়, বরং কারসাজির নিয়মগুলি ধারণাগুলির মধ্যে পরিমাণ এবং যুক্তির মধ্যে সম্পর্ককে প্রতিফলিত করে। লাইবনিজের স্বপ্নের কারণে, এখন আমাদের কাছে কম্পিউটার বিজ্ঞান এবং কম্পিউটার নামে সার্বজনীন মেশিন রয়েছে। একটি কম্পিউটার মূলত একটি ভৌত যন্ত্র যা খুব সহজ যুক্তির নিয়ম অনুসরণ করে প্রতীকগুলিকে পরিচালনা করতে পারে। প্রায় সমস্ত কম্পিউটারই বৈদ্যুতিক কারণ এটি সস্তা এবং তৈরি করা সহজ। কম্পিউটার বিজ্ঞান মূলত তথ্য প্রক্রিয়া (বিমূর্ত ধারণাগুলি নিয়ে কাজ করা) সম্পর্কে যা প্রতীকের কারসাজির মাধ্যমে ঘটে, যা একটি পদ্ধতি অনুসরণ করে। এই ধরনের পদ্ধতিগুলি অ্যালগরিদম নামেও পরিচিত। এতে অবাক হওয়ার কিছু নেই যে অনেক কম্পিউটার প্রোগ্রামিং বইকে কুকবুক বলা হয়ঃ) কম্পিউটার বিজ্ঞানে আমরা কীভাবে তথ্য উপস্থাপন করতে হয় এবং অর্থপূর্ণ ফলাফল পেতে অ্যালগরিদমগুলি কীভাবে ডিজাইন ও প্রয়োগ করতে হয় তা অধ্যয়ন করি। সাধারণত একই কাজ করার অনেক উপায় থাকে। মূল্যায়নের উদ্দেশ্যে অ্যালগরিদমের তুলনাকে অ্যালগরিদম (জটিলতা) বিশ্লেষণ বলা হয়। কম্পিউটারে একটি অ্যালগরিদম (পদ্ধতি) যোগাযোগ করাকে প্রোগ্রামিং/সফ্টওয়্যার ডেভেলপমেন্ট বলা হয়। এই ধরনের যোগাযোগের জন্য আমরা যে ভাষাগুলি ব্যবহার করি সেগুলিকে কম্পিউটার প্রোগ্রামিং ভাষা বলা হয়। প্রোগ্রামিংয়ের নিদর্শনগুলি হল কম্পিউটার প্রোগ্রাম বা সফ্টওয়্যার। যে প্রকৌশল শাখাগুলি আমরা সফ্টওয়্যার উন্নয়ন প্রক্রিয়ায় মানসম্মত সফ্টওয়্যার তৈরির জন্য প্রয়োগ করার চেষ্টা করি সেগুলিকে সফ্টওয়্যার ইঞ্জিনিয়ারিং বলা হয়। সুতরাং কম্পিউটার বিজ্ঞান কম্পিউটারের চেয়ে সমস্যা সমাধানের বিষয় বেশি। কম্পিউটিং বিজ্ঞান সম্ভবত এই শাখার জন্য আরও উপযুক্ত নাম।
গণনা্র অনুশীলন
সম্পাদনানীতিগুলি হল মৌলিক ধারণা যা গণনার সমস্ত দিককে পরিব্যাপ্ত করে। অনুশীলনগুলি নীতি নয় তবে সনাক্ত করতে খুব কার্যকর কারণ তারা গণনা্র পেশাদারদের কেন্দ্রীয় অনুশীলনগুলি চিহ্নিত করে। অনুশীলন, যাকে কখনও কখনও "নো-হাউজ" বলা হয়, কারও দক্ষতার সেট এবং দক্ষতার স্তরকে সংজ্ঞায়িত করেঃ শিক্ষানবিস, দক্ষ এবং বিশেষজ্ঞ। গ্রেট প্রিন্সিপলস অফ কম্পিউটিং প্রকল্পে কম্পিউটিংয়ের চারটি মূল অনুশীলন চিহ্নিত করা হয়েছেঃ[2]
- প্রোগ্রামিং (বহুভাষিক প্রোগ্রামিং অনুশীলন সহ)
- ব্যবস্থা ও ব্যবস্থার ভাবনা
- মডেলিং, বৈধতা, পরীক্ষা এবং পরিমাপ
- উদ্ভাবন।
প্রোগ্রামিং কম্পিউটার বিজ্ঞানের একটি অবিচ্ছেদ্য অঙ্গ কারণ এটি আমাদের কম্পিউটার বিজ্ঞানের বিমূর্ত ধারণাগুলি সুনির্দিষ্ট উপায়ে অন্বেষণ করতে দেয়। এটি একটি উত্তেজনাপূর্ণ সৃজনশীল প্রক্রিয়া, যা যখন আমরা কম্পিউটারকে দরকারী কাজ করতে পারি তখন প্রচুর সন্তুষ্টি নিয়ে আসে। এই কোর্সে আমরা কম্পিউটার বিজ্ঞানের ধারণাগুলি অন্বেষণ করার জন্য একটি খুব উচ্চ-স্তরের গ্রাফিকাল প্রোগ্রামিং পরিবেশে প্রোগ্রাম করব। ডোনাল্ড নুথ প্রোগ্রামিংকে রচনার মতো বলে মনে করেনঃ সু-লিখিত প্রোগ্রামগুলি অন্যদের জন্য বা নিজের জন্য পড়ার জন্য আনন্দদায়ক। তিনি বিশ্বাস করেন যে প্রোগ্রামিং ফলপ্রসূঃ
- সুন্দর কোড (নান্দনিক)
- দরকারী কাজ করুন (মানবিক)
- বেতন পান (অর্থনৈতিক)
একটি কম্পিউটার প্রোগ্রামিং মূলত কম্পিউটারকে কীভাবে কাজ করতে হয় তা শেখায়। যেমনটি আমরা আগে উল্লেখ করেছি যে, কম্পিউটার হল সহজ যন্ত্র যা কঠোরভাবে আদেশ অনুসরণ করে। একটি কম্পিউটারের সঠিক কাজ করার জন্য আমাদের প্রোগ্রামের নির্দেশাবলী অবশ্যই সঠিক এবং যৌক্তিক হতে হবে। কম্পিউটারে এক্সিকিউটেবল প্রোগ্রামগুলি হল সফ্টওয়্যার-যা কম্পিউটারের মস্তিষ্ক হিসাবে কাজ করে। ত্রুটি সহ সফ্টওয়্যারকে বলা হয় বাগী সফ্টওয়্যার। একটি প্রকৃত কম্পিউটারে সফ্টওয়্যার পরীক্ষা করা সফ্টওয়্যারের বেশিরভাগ বাগ ধরতে সহায়তা করতে পারে। টেস্টিং আমাদের প্রোগ্রামগুলির গুণমান সম্পর্কে প্রায় তাত্ক্ষণিক প্রতিক্রিয়া সরবরাহ করে যাতে আমরা বাগগুলি ঠিক করতে এবং এটি উন্নত করতে পারি। এই কারণে, আমরা বিশ্বাস করি যে প্রোগ্রামিং আমাদের আরও ভাল চিন্তাবিদ এবং শিক্ষার্থী করে তোলে। আমরা দেখব কেন প্রোগ্রামগুলির সঠিকতা প্রমাণ করা কঠিন।
তথ্যসূত্র
সম্পাদনা১.লেভেস্ক, হেক্টর, থিঙ্কিং অ্যাজ কম্পিউটশন, হেক্টর জে. লেভেস্ক, আইএসবিএন 9780262016995
২.ডেনিং, পিটার, দ্য গ্রেট প্রিন্সিপলস অফ কম্পিউটিং, http://denninginstitute.com/pjd/GP/GP-site/welcom.html