কম্পিউটার প্রোগ্রামিং
কম্পিউটার প্রোগ্রামিং
কম্পিউটার প্রোগ্রামিংঃ
কম্পিউটার প্রোগ্রামিং (ইংরেজি: Computer programming) হলো কিছু লিখিত নির্দেশ যা অনুযায়ী একটি কম্পিউটার কাজ করে। প্রোগ্রামের লিখিত রূপটিকে সোর্স কোড বলা হয়। যিনি সোর্স কোড লিখেন তাকে প্রোগ্রামার, কোডার বা ডেভেলপার বলা হয়। যেকোন বই যেমন একটি ভাষাতে যেমন ইংরেজি, রুশ, জাপানি, বাংলা, ইত্যাদিতে লেখা হয়, তেমনি প্রতিটি প্রোগ্রাম কোন একটি নির্দিষ্ট প্রোগ্রামিং ভাষাতে লেখা হয়,যেমন সি++,জাভা ইত্যাদি। প্রোগ্রাম রচনা করার সময় প্রোগ্রামারকে ঐ নির্দিষ্ট প্রোগ্রামিং ভাষার সিনট্যাক্স বা ব্যাকরণ মেনে চলতে হয়।
প্রোগ্রামিং এর বিভিন্ন ধাপঃ
প্রোগ্রামিং এর ধাপগুলো যেকোন সমস্যা সমাধানের ধাপগুলোর মতোই। প্রধান ধাপগুলো হলোঃ
- সমস্যাকে সংজ্ঞায়িত করা
- সমাধান তৈরি করা
- সমাধানকে প্রোগ্রামিং ভাষায় সোর্সকোড হিসাবে লেখা
- প্রোগ্রামকে পরীক্ষা করে দেখা
- ডকুমেন্টেশন তৈরি করা
প্রোগ্রামিং ভাষাঃ
প্রোগ্রামিং ভাষা (ইংরেজি ভাষায়: programming language) হচ্ছে এক ধরনের কৃত্রিম ভাষা (artificial language) যা কোন যন্ত্রের, বিশেষ করে কম্পিউটারের আচরণ নিয়ন্ত্রণ করার জন্য ব্যবহার করা হয়। মানুষের মুখের স্বাভাবিক ভাষাগুলোর মত প্রোগ্রামিং ভাষাগুলোও বাক্যতাত্ত্বিক (syntactic বা বাক্যস্থিত বিভিন্ন পদের মধ্যে সম্পর্ক কী হবে সে-সংক্রান্ত) ও আর্থ (semantic বা শব্দের অর্থসংক্রান্ত) নিয়ম মেনে চলে।
তথ্য সুবিন্যস্তকরণ ও প্রক্রিয়াকরণে এবং অ্যালগোরিদমসমূহ নির্ভুলভাবে প্রকাশ করতে প্রোগ্রামিং ভাষা ব্যবহার করা হয়। কিছু কিছু লেখক প্রোগ্রামিং ভাষা বলতে কেবল সেই সব ভাষাকে বোঝান যেগুলো সম্ভাব্য সমস্ত অ্যালগোরিদম প্রকাশে সক্ষম;[কখনো কখনো সরল ধরনের কৃত্রিম ভাষাগুলোকে প্রোগ্রামিং ভাষা না বলে 'কম্পিউটার ভাষা (computer language) বলা হয়।
এ পর্যন্ত বহু হাজার প্রোগ্রামিং ভাষা সৃষ্টি করা হয়েছে, এবং প্রতি বছরই নতুন নতুন প্রোগ্রামিং ভাষা উদ্ভাবন করা হচ্ছে। যেমন,
১) ১ম প্রজন্মের ভাষা (১৯৪৫) ঃ যান্ত্রিক ভাষা (নিম্নস্তরের ভাষা)
২) ২য় প্রজন্মের ভাষা (১৯৫০) ঃ এসেম্বলি ভাষা (নিম্নস্তরের ভাষা)
৩) ৩য় প্রজন্মের ভাষা (১৯৬০) ঃ উচ্চতর ভাষা
৪) ৪র্থ প্রজন্মের ভাষা (১৯৭০) ঃ অতি উচ্চতর ভাষা
৫) ৫ম প্রজন্মের ভাষা (১৯৮০) ঃ স্বাভাবিক ভাষা
সংজ্ঞাঃ
প্রোগ্রামিং ভাষার বিভিন্ন বৈশিষ্ট্যের ওপর ভিত্তি করে এর সংজ্ঞা দেয়া যায়:
- কাজ (Function): প্রোগ্রামিং ভাষা হচ্ছে এক ধরনের ভাষা যা দিয়ে কম্পিউটার প্রোগ্রাম লেখা যায়, এবং এই প্রোগ্রামগুলোর সাহায্যে কম্পিউটারকে কোন গণণামূলক কাজ করার নির্দেশ দেয়া যায় , এবং সম্ভব হলে কম্পিউটারের বাইরের যন্ত্রাংশ যেমন প্রিন্টার, রোবট, ইত্যাদি নিয়ন্ত্রণ করা যায়।
- লক্ষ্য (Target): প্রোগ্রামিং ভাষাগুলো থেকে স্বাভাবিক ভাষাগুলোর মধ্যে পার্থক্য হচ্ছে স্বাভাবিক মুখের ভাষা কেবল মানুষে-মানুষে যোগাযোগের জন্য ব্যবহৃত হয়, অন্যদিকে প্রোগ্রামিং ভাষাগুলোর মানুষকে যন্ত্রের কাছে আদেশ পৌঁছে দিতে সাহায্য করে। কিছু প্রোগ্রামিং ভাষা এক যন্ত্রকে আরেক যন্ত্রের সাথে যোগাযোগে সাহায্য করে। যেমন কিছু প্রোগ্রাম পোস্টস্ক্রিপ্ট প্রোগ্রাম তৈরির মাধ্যমে প্রিন্টার বা ডিসপ্লে নিয়ন্ত্রণ করতে পারে।
- সংগঠন (Constructs): প্রোগ্রামিং ভাষায় সাধারণত কিছু সংগঠন থাকে যেগুলো দিয়ে বিভিন্ন উপাত্ত কাঠামো (data structure) সংজ্ঞায়িত করা হয় কিংবা নির্দেশ পালনের প্রবাহ বা ধারা নিয়ন্ত্রণ করা হয়।
- প্রকাশক্ষমতা (Expressive power): গণনা তত্ত্বে (theory of computation) প্রোগ্রামিং ভাষাসমূহকে তারা কী ধরনের গণনা (computation) প্রকাশ করতে পারে, তার ওপর ভিত্তি করে শ্রেণীকরণ করা হয়। সমস্ত টুরিং-সম্পূর্ণ ভাষাগুলো একই অ্যালগোরিদমের সেট বাস্তবায়ন করতে পারে। টুরিং-সম্পূর্ণ না হলেও কিছু ভাষাকে প্রায়ই প্রোগ্রামিং ভাষা বলা হয়, যেমন - অ্যানসাই/আইএসও এসকিউএল এবং চ্যারিটি।
উপাদানসমূহঃ
সিনট্যাক্সঃ
কোন প্রোগ্রামিং ভাষার বাইরের রূপকে তার সিনট্যাক্স বলা হয়। বেশির ভাগ প্রোগ্রামিং ভাষাই সম্পূর্ণ টেক্সট-ভিত্তিক। এগুলি শব্দ, সংখ্যা ও বিরামচিহ্নবিশিষ্ট টেক্সট ব্যবহার করে, অনেকটা স্বাভাবিক ভাষাগুলির মতই। তবে কিছু কিছু প্রোগ্রামিং ভাষা আছে যেগুলি চিত্রভিত্তিক। এগুলি বিভিন্ন প্রতীকের মধ্যকার অবস্থানগত সম্পর্ক কাজে লাগিয়ে প্রোগ্রাম লিখতে সহায়তা করে।
কোন প্রোগ্রামিং ভাষার প্রতীকগুলি কী কী উপায়ে একত্রিত হয়ে সিনট্যাক্সগতভাবে সঠিক প্রোগ্রাম তৈরি করতে পারে, ভাষাটির সিনট্যাক্সে তার বিবরণ থাকে। আর কোন প্রতীকসমষ্টির অর্থ কী হবে, তা নির্ধারণ করে ভাষাটির সেমান্টিক্স।
প্রোগ্রামিং ভাষার সিনট্যাক্স সাধারণত নিয়মিত এক্সপ্রেশন (regular expression) ([[আভিধানিক বিশ্লেষণ|আভিধানিক গঠনের জন্য) এবং বাকাস-নাউর রূপ (Backus-Naur Form) (ব্যাকরণিক গঠনের জন্য) এই দুইয়ের সমন্বয়ে তৈরি করা হয়।
নীচে লিস্পের ওপর ভিত্তি করে লেখা একটি সরল ব্যাকরণ দেয়া হল:
expression ::= atom | list
atom ::= number | symbol
number ::= [+-]?['0'-'9']+
symbol ::= ['A'-'Z''a'-'z'].*
list ::= '(' expression* ')'
উপরের ব্যাকরণটি নীচের জিনিসগুলিকে সংজ্ঞায়িত করেছে:
- একটি expression হয় একটি atom অথবা একটি list;
- একটি atom হয় একটি number অথবা একটি symbol;
- একটি number হচ্ছে এক বা একাধিক দশমিক অঙ্কের অবিভক্ত ধারা, এবং ধারাটির আগে ঐচ্ছিকভাবে যোগ বা বিয়োগ চিহ্ন বসানো যেতে পারে;
- একটি symbol হচ্ছে একটি ইংরেজি বর্ণ এবং তাকে অনুসরণকারী শূন্য বা তার বেশি যেকোন সংখ্যক ক্যারেক্টার (ফাঁকাস্থান ব্যতীত); এবং
- একটি list হচ্ছে একজোড়া বন্ধনীর মধ্যে শূন্য বা তার বেশি সংখ্যক expression।
এই ব্যাকরণ সঠিকভাবে অনুসরণকারী কিছু টোকেনের উদাহরণ: '12345', '()', '(a b c232 (1))'
সিনট্যাক্সগতভাবে সঠিক প্রোগ্রাম মাত্রেই সেমান্টিক্স বা অর্থগতভাবে সঠিক হবে, তা নয়। অনেক সিনট্যাক্সগতভাবে সঠিক প্রোগ্রাম তাই অনুবাদ বা নির্বাহ করার সময় ত্রুটির সৃষ্টি করতে পারে। কোন কোন ক্ষেত্রে এরকম প্রোগ্রাম অসংজ্ঞায়ির আচরণ (undefined behavior) প্রদর্শন করতে পারে। আবার কোন প্রোগ্রাম প্রোগ্রামিং ভাষার সমস্ত নিয়মকানুন মেনে চললেও এটি প্রোগ্রামার যা করতে চেয়েছিলেন সেই অর্থে না-ও বাস্তবায়িত হতে পারে।
মানুষের মুখের স্বাভাবিক ভাষাতেও এর উদাহরণ মেলে। কোন ব্যাকরণগতভাবে শুদ্ধ বাক্য অর্থহীন হতে পারে, যেমন:
- "Colorless green ideas sleep furiously." - এই ইংরেজি বাক্যটি ব্যাকরণগতভাবে শুদ্ধ কিন্তু এর কোন সর্বজনগৃহীত অর্থ নেই।
- "John is a married bachelor." - এই বাক্যটি ব্যাকরণগতভাবে শুদ্ধ কিন্তু এমন একটি অর্থ প্রকাশ করে যা সত্য নয়।
নীচের সি প্রোগ্রামিং ভাষায় লেখা কোডটি সিনট্যাক্সগতভাবে শুদ্ধ, কিন্তু এটি এমন একটি অপারেশন সম্পাদন করে যা সেমান্টিক্সগতভাবে বা অর্থগতভাবে সংজ্ঞায়িত নয়। (যেহেতু p একটি নাল পয়েন্টার, p->real এবং p->im অপারেশনগুলি অর্থহীন):
complex *p = NULL; complex abs_p = sqrt (p->real * p->real + p->im * p->im);
টাইপ ব্যবস্থাঃ
যেকোন প্রোগ্রামিং ভাষা মান (values) ও এক্সপ্রেশনগুলিকে বিভিন্ন “টাইপে” শ্রেণিকরণ করে। এই শ্রেণিকরণ, কীভাবে টাইপগুলি ব্যবহার করা যাবে এবং টাইপগুলির একে অপরের সাথে সম্পর্ক কী, তা সংজ্ঞায়িত থাকে প্রোগ্রামিং ভাষাটির টাইপ ব্যবস্থায়। ভাষাটিতে কী ধরনের উপাত্ত কাঠামো ব্যবহার করা যাবে, টাইপ ব্যবস্থায় মূলত তারই বিবরণ থাকে। বিধিগত গণিত ব্যবহার করে টাইপ ব্যবস্থাগুলি ডিজাইন ও গবেষণা “টাইপ তত্ত্বের” আলোচ্য।
আধুনিক ডিজিটাল কম্পিউটারের ভেতরে সমস্ত উপাত্তই শূন্য বা এক আকারে রক্ষিত থাকে (দ্বিমিক সংখ্যা ব্যবস্থা দেখুন)। এই উপাত্ততে বাস্তব বিশ্বের নানা তথ্য যেমন নাম, ব্যাংক অ্যাকাউন্ট, পরিমাপ, ইত্যাদি প্রকাশ পেতে পারে। প্রোগ্রামিং ভাষা নিম্নস্তরের দ্বিমিক উপাত্তকে এই উচ্চ-স্তরের তথ্যের ধারণায় বাস্তবায়ন করে উপাত্ত টাইপের সাহায্য নিয়ে। এছাড়া আরও কিছু বিমূর্ত টাইপ আছে যেগুলি প্রোগ্রামের নিরাপত্তার সুবিধার্থে কিংবা প্রোগ্রামারকে অর্থহীন বিবৃতির ব্যাপারে সাবধান করে দেয়ার জন্য ব্যবহৃত হয়।
প্রোগ্রামিং ভাষাগুলিকে তাদের টাইপ ব্যবস্থাগুলির ওপর ভিত্তি করে শ্রেণীবিভাগ করা যায়।
টাইপকৃত বনাম অ-টাইপকৃত ভাষাঃ
কোন প্রোগ্রামিং ভাষার একটি উপাত্ত টাইপের জন্য সংজ্ঞায়িত অপারেশনগুলি যখন অন্য একটি উপাত্ত টাইপের ওপর প্রয়োগ করা যায় না, তখন সেই ভাষাটিকে “টাইপকৃত ভাষা” বলা হয়। উদাহরণস্বরূপ, "this text between the quotes" একটি স্ট্রিং। বেশির ভাগ প্রোগ্রামিং ভাষায় স্ট্রিং-কে কোন সংখ্যা দিয়ে ভাগ করা অর্থহীন। তাই বেশির ভাগ ভাষাতে কোন প্রোগ্রামকে এই ধরনের অপারেশন সম্পাদন করতে বাধা দেয়া হয়। কিছু কিছু ভাষায় এই অর্থহীন অপারেশনটি প্রোগ্রামটি কম্পাইল করার সময় ধরা হয়; একে বলা হয় “স্থির টাইপ পরীক্ষা” (static type checking), এবং কম্পাইলার অপারেশনটি প্রত্যাখ্যান করে। আবার অন্য কিছু ভাষায় এই শরনের অপারেশন যখন প্রোগ্রামটি চালানো হয় বা “রান” করা হয়, তখন ধরা হয়; একে বলা হয় “চলমান টাইপ পরীক্ষা” (dynamic type checking), এবং এতে “রান-টাইম” এক্সেপশন সৃষ্টি হয়।
নিম্নস্তরের ভাষাঃ
নিম্নস্তরের ভাষা(low level language) সরাসরি কম্পিউটারের প্রধান মেমোরির উপর কাজ করতে পারে। অ্যাসেম্বলি ভাষা একটি নিম্নস্তরের ভাষা,এ ভাষায় সরাসরি কম্পিউটারের রেজিস্টারকে নিয়ন্ত্রণ করে কাজ করতে হয়। এ ভাষাগুলো হার্ডওয়্যারের উপর নির্ভরশীল,তাই এক কম্পিউটারে অ্যাসেম্বলি ভাষায় লেখা প্রোগ্রাম অন্য কম্পিউটারে কাজ নাও করতে পারে।
FOR MORE CLICK HERE
বাংলা রচনা সমূহ
বাংলা ভাষা ও সাহিত্য
English Essay All
English Grammar All
English Literature All
সাধারণ জ্ঞান বাংলাদেশ বিষয়াবলী
সাধারণ জ্ঞান আন্তর্জাতিক বিষয়াবলী
ভূগোল (বাংলাদেশ ও বিশ্ব), পরিবেশ ও দুর্যোগ ব্যবস্থাপনা
বি সি এস প্রস্তুতি: কম্পিউটার ও তথ্য প্রযুক্তি
বি সি এস প্রস্তুতি: নৈতিকতা, মূল্যবোধ ও সু-শাসন
বি সি এস প্রস্তুতি: সাধারণবিজ্ঞান
বাংলা ভাষার ব্যাকরণ
বাংলাদেশ ও বিশ্ব পরিচয়
ভাবসম্প্রসারণ