কম্পিউটার প্রোগ্রামিং ভাষা কি

প্রিয় বন্ধুগন কেমন আছ, আশাকরি ভালো আছ, আজকে নিয়ে এলাম তোমাদের জন্য আরেকটি গুরুত্বপূর্ণ আটিকেল। তাহলে চলুন কথা না বাড়িয়ে।

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

১। পর্দা পরিষ্কার করতে (Clearing the screen)
২। পর্দায় ডাটা লিখতে (Writing data to the screen)

৩। ব্যবহারকারীর নিকট থেকে ইনপুট থেকে (Getting user input)

৪। লুপ নির্বাহ করতে (Executing loops) পর্দার রং পরিবর্তন করতে (Changing colours)

৫। শব্দ তৈরিতে (Playing sounds)

৬। ফাইল তৈরিতে (Opening files) ইত্যাদি।

বিভিন্ন ধরনের প্রোগ্রামিং ভাষা আছে, কিছু আছে যা শেখা ও ব্যবহার করা কঠিন, কিছু আছে যাদের বিশেষ উদ্দেশ্যে ব্যবহার করা হয়। যেমন- বৈজ্ঞানিক হিসাব, অংকন কিংবা ও ডাটাবেজ ম্যানেজমেন্ট।

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

কম্পিউটারের ভাষা শুধু কম্পিউটারই বুঝে। কম্পিউটারের ভাষা জ্ঞান অত্যন্ত সীমিত। প্রকৃতপক্ষে Yes (On) এবং No (OM) ছাড়া কম্পিউটার আর কিছুই বোঝে না। এই Yes (On) এবং No (Off) দিয়ে সমস্যা সমাধানের বিষয়টি বুঝিয়ে দিতে হয় কম্পিউটারকে। কম্পিউটার অন্যান্য ইলেকট্রনিক যন্ত্রের মতো লজিক গেটের সমন্বয়ে গঠিত। এটাও কেবলমাত্র দুইটি পরিকের ওপর কাজ করে ০ (শূন্য) এবং 1 (এক), হ্যাঁ বা না, সত্য বা মিথ্যা। কাজ করার এই পদ্ধতি হলো বাইনারি পদ্ধতি। কম্পিউটারের সকল কাজই এই বাইনারী পদ্ধতিতে সম্পন্ন হয়। এই পদ্ধতিতে ব্যবহৃত ০ (শূন্য) বা 1 (এক) এই দুটি মৌলিক সংখ্যাকে কম্পিউটারের ভাষায় বিট (bit) বলে। এবং এদের ইলেকট্রনিক সার্কিটে দুইটি ভোল্টেজ লেভেল দ্বারা নির্দিষ্ট করা যায়।

*বিভিন্ন প্রকার প্রোগ্রামিং ভাষা

১৯৪৫ সাল থেকে শুরু করে এ যাবত বহু প্রোগ্রামিং ভাষার উদ্ভব হয়েছে। বৈশিষ্ট্য অনুযায়ী এই সকল ভাষাকে পাঁচটি স্তরে বা প্রজন্মে ভাগ করা যেতে পারে। যথা

১। প্রথম প্রজন্মের ভাষা (1945) মেশিন ভাষা (Machine Language)

২। দ্বিতীয় প্রজন্মের ভাষা (1950) অ্যাসেম্বলি ভাষা (Assembly Language)

৩। তৃতীয় প্রজন্মের ভাষা (1960) উচ্চতর ভাষা (High Level Language)

৪। চতুর্থ প্রজন্মের ভাষা (1970) অতি উচ্চতর ভাষা (Very High Level Language)

৫। পঞ্চম প্রজন্মের ভাষা (1980) স্বাভাবিক বা ন্যাচারাল ভাষা (Natural Language)

মেশিন ভাষা ও অ্যাসেম্বলি ভাষাকে লো-লেভেল ভাষা বলা হয়। কারণ এগুলো কম্পিউটারের ভাষার (0 বা 1) কাছাকাছি। অন্যদিকে হাই-লেভেল বা উচ্চতর ভাষা মানুষের ভাষার কাছাকাছি। যেমন- ইংরেজি।

*মেশিন ভাষা (Machine Language)

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

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

*মেশিনের ভাষায় ব্যবহৃত নির্দেশাবলিকে চার ভাগে ভাগ করা যায়। যেমন

১। গাণিতিক (Arithmetic)
২। নিয়ন্ত্রণ (Control)
৩। ইনপুট-আউটপুট
৪। প্রত্যক্ষ ব্যবহার (Direct Use)

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

১। বিভিন্ন ডাটা ও তথ্য আদান-প্রদানের জন্য ০ (শূন্য) এবং 1 (এক)-এর সমন্বয় বুঝা এবং মনে রাখা খুবই কঠিন।

২। যেহেতু বিভিন্ন মেশিনের জন্য বিভিন্ন রকম মেশিনের ভাষা আছে তাই একজন প্রোগ্রামারকে মেশিনের সাথে যোগাযোগের জন্য আলাদা-আলাদা ভাষা লিখতে হবে।

*মেশিন ভাষার সুবিধা

১। কম্পিউটার বর্তনীর ভুল-ত্রুটি সংশোধনের জন্য এই ভাষা দিয়ে বর্তনী সরাসরি মেমোরি অ্যাড্রেসের সাথে
সংযোগ সাধন সম্ভব। ২। সর্বচেয়ে কম পরিমাণ লজিক ও কম মেমোরিতে এই ভাষায় লিখিত প্রোগ্রাম নির্বাহ করা যায়। ৩। মেশিনের ভাষার মাধ্যমে কম্পিউটারের অভ্যন্তরীণ সংগঠনের খুঁটিনাটি ধারণা অর্জন করা যায়।
৪। মেশিন ভাষা অন্যান্য ভাষা থেকে দ্রুত কাজ করে।

*মেশিন ভাষার অসুবিধা ১। এই ভাষায় প্রোগ্রাম লেখা অত্যন্ত ক্লান্তিকর ও সময়সাপেক্ষ। কারণ এই ভাষায় প্রোগ্রাম লিখতে হলে কম্পিউটারের প্রতিটি নির্দেশ ও মেমোরি স্থানের প্রকৃত অবস্থার পরিষ্কার ধারণা থাকা প্রয়োজন। ২। এক ধরনের মেশিনের জন্য লিখিত প্রোগ্রাম অন্য ধরনের মেশিনে ব্যবহার করা অসম্ভব। ৩ মেশিন ভাষায় প্রোগ্রাম লিখতে দক্ষ প্রোগ্রামার প্রয়োজন। ৪। মেশিন ভাষা ডিবাগ করা বা প্রোগ্রামের ভুল-ত্রুটি শনাক্ত ও সংশোধন কষ্টসাধ্য।

* অ্যাসেম্বলি ভাষা (Assembly Language)

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

১। লেবেলঃ লেবেলের মধ্যে নির্দেশের সাংকেতিক অ্যাড্রেস থাকে। যেমন- জাম্পের সময় পরবর্তী নির্দেশের অ্যাড্রেস লেবেলে দেয়া হয়। তবে সবসময় লেবেল নাও থাকতে পারে। লেবেলে এক থেকে দুইটি আলফানিউমেরিক বর্ণ থাকে, এই বর্ণের মধ্যে কোনো ফাঁকা থাকে না। অ্যাসেম্বলী ভাষার কমান্ড বা ইনস্ট্রাকশনের নেমোনিক (যেমন- LDA) কিংবা কোনো রেজিস্টারের নাম লেবেল হিসেবে ব্যবহার করা যায় না। লেবেলের প্রথম বর্ণ সবসময়ই অক্ষর হবে।

২। অপ-কোড বা অপারেশন কোড ঃ অপারেশন কোডে ইনস্ট্রাকশন বা কমান্ডের নেমোনিক থাকে। এ নেমোনিকগুলো বিভিন্ন কম্পিউটারে বিভিন্ন হয়ে থাকে।

*অ্যাসেম্বলি ভাষার সুবিধা (Advantage of Assembly Language) ১। মেশিনের ভাষার মতো দক্ষ ও সংক্ষিপ্ত প্রোগ্রাম রচনা সম্ভব।

২। প্রোগ্রাম রচনায় মেমোরি অ্যাড্রেসের পুঙ্খানুপুঙ্খ বিবরণ প্রয়োজন হয় না
৩। মেশিনের ভাষার তুলনায় এ ভাষায় প্রোগ্রাম রচনা তুলনামূলক সহজ।
৪। মেশিনের ভাষার তুলনায় ডিবাগিং সহজতর।

*অ্যাসেম্বলি ভাষার অসুবিধা (Disadvantage of Assembly Lungage) ১। এই ভাষায় প্রোগ্রাম লিখতে হলে মেশিনের অভ্যন্তরীণ গঠন সম্পর্কে ধারণা থাকতে হবে। ২। এই ভাষার প্রোগ্রাম মেশিনের সংগঠনের উপর নির্ভরশীল। অর্থাৎ এক ধরনের কম্পিউটারে লিখিত
প্রোগ্রাম অন্য ধরনের কম্পিউটারে নাও চলতে পারে।

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

* মধ্যম স্তরের ভাষা
কম্পিউটারের হার্ডওয়্যার নিয়ন্ত্রণ ও সিস্টেম প্রোগ্রাম রচনার জন্য বিট পর্যায়ের প্রোগ্রামিং ভাষা হচ্ছে মধ্যম স্তরের ভাষা। এ ভাষায় উচ্চতর ভাষার সুবিধা পাওয়া যায়। আবার নিম্নস্তরের ভাষায়ও প্রোগ্রাম রচনা করা
যায়। সি (C) এ স্তরের ভাষা।

*মধ্যম স্তরের ভাষার সুবিধা (Advantage of Mid-Level Language)

১। এই ভাষায় লিখিত প্রোগ্রাম বোঝা প্রোগ্রামারদের কাছে সহজসাধ্য।
২। যে কোনো ধরনের কম্পিউটার নির্বাহ করা সম্ভব।
৩। একবার লিখিত প্রোগ্রাম পরবর্তীতে পরিবর্তিত করা সহজ।
৪। ভুল হওয়ার সম্ভাবনা কম থাকে।
৫। ভুল সংশোধন করা সম্ভব।

*মধ্যম স্তরের ভাষার অসুবিধা (Disadvantage of Mid Level Language)

১। অনুবাদক প্রোগ্রামের প্রয়োজন হয়।
২। এই ভাষা মেশিন বুঝতে পারে না।
৩। উচ্চতর ভাষার তুলনায় এই ভাষা কঠিন।

*উচ্চতর ভাষা (High Level Language)

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

উচ্চতর ভাষা মানুষের ভাষার (যেমন- ইংরেজি ভাষা) সাথে মিল রেখে তৈরি করা হয়েছে। উচ্চতর ভাষার মধ্যে উল্লেখযোগ্য কয়েকটি ভাষা হচ্ছে- BASIC, COBOL, FORTRAN, PASCAL, C+, JAVA, PROLOG ইত্যাদি। কম্পাইলার বা ইন্টারপ্রেটার নামক অনুবাদক প্রোগ্রাম ব্যবহার করে এ ভাষায় লিখিত প্রোগ্রাম মেশিনের ভাষায় অনুবাদ করা হয়। এরপর কম্পিউটার এ জাতীয় প্রোগ্রাম বুঝতে পারে। উচ্চতর ভাষায় প্রোগ্রাম লেখার জন্য প্রোগ্রামারকে বাইনারি কোড সম্পর্কে ধারণা থাকা দরকার নেই। বাইনারি জ্ঞান ব্যতিরেকেই প্রোগ্রামারগণ এই ভাষায় প্রোগ্রাম রচনা করতে পারেন।

*উচ্চতর ভাষার সুবিধা (Advantage of High Level Language)
১। উচ্চতর ভাষায় লিখিত প্রোগ্রাম যেকোনো কম্পিউটারে ব্যবহার করা যায়।
২। এ ভাষায় প্রোগ্রাম রচনা সহজ ও যুক্তিনির্ভর।
৩। প্রোগ্রামের ভুল নির্ণয় ও সংশোধন অপেক্ষাকৃত সহজ।
৪। মেশিন ভাষায় বা অ্যাসেম্বলি ভাষায় যেখানে একটি সমস্যার সমাধানের জন্য অনেকগুলো নির্দেশের
প্রয়োজন হয়, সেখানে উচ্চতর ভাষায় একটিমাত্র নির্দেশে সেই কাজ করা যায়। ৫। উচ্চতর ভাষায় অসংখ্য লাইব্রেরি ফাংশনের সুবিধা আছে।
৬। প্রোগ্রাম লেখার সময় কম্পিউটারের অভ্যন্তরীণ গঠন সম্পর্কে ধারণার প্রয়োজন নেই।

* উচ্চতর ভাষার অসুবিধা (Disadvantage of High Level Language)

১। কম্পিউটার সরাসরি এ ভাষা বুঝতে পারে না।
২। এ ভাষায় লিখিত প্রোগ্রামকে কম্পিউটারে চালাতে হলে অনুবাদক প্রোগ্রামের প্রয়োজন হয়।
৩। প্রোগ্রাম রান করতে বেশি সময় প্রয়োজন হয়।
৪। লো-লেভেল ভাষার তুলনায় Flexibility কম
৫। লো-লেভেল ভাষার তুলনায় দক্ষতা কম। ৬। বেশি মেমোরির প্রয়োজন পড়ে।

*কয়েকটি উচ্চতর ভাষা সম্পর্কে ধারণা

*সি (প্রোগ্রামিং ভাষা)

সি' একটি প্রোগ্রামিং ভাষা। সি নির্মাণ করেন ভেনিস রিচি, বেল ল্যাবে ৭০-এর দশকে কাজ করার সময়। ভাষাটি তৈরির প্রথম উদ্দেশ্য ছিল ইউনিক্স অপারেটিং সিস্টেম-এর কোড লেখায় এর ব্যবহার, কিন্তু অচিরেই এটি একটি বহুল ব্যবহৃত ভাষায় পরিণত হয়। সি+ ও জাভাসহ পরবর্তীকালের অনেক প্রোগ্রামিং ভাষার ওপর সি'র গভীর প্রভাব পড়েছে। সি এর সবচেয়ে আকর্ষণীয় দিক হচ্ছে এর বহনযোগ্যতা। সি দিয়ে রচিত প্রোগ্রাম যেকোন অপারেটিং সিস্টেমের কম্পিউটারে চালানো যায়। ৭০ এবং ৮০ দশকের দিকে সি এর জনপ্রিয়তা বাড়ার সাথে সাথে এর অনেকগুলো ভার্সন তৈরি হয়। ১৯৮৩ সালে আমেরিকান মাননিয়ন্ত্রক সংস্থা Sta সি এর ১টি আদর্শ ভার্সন তৈরির জন্য কমিটি গঠন করে। দীর্ঘ ৬ বছর পরে ১৯৮৯ সালে সেই আদর্শ সি ভাষাটি তৈরি হয়, যা আমেরিকান মাননিয়ন্ত্রক সংস্থা সি নামে পরিচিত। পরবর্তিতে আন্তর্জাতিক মাননিয়ন্ত্রক সংস্থা In ১৯৯০ সালে সি এর এই আদর্শ ভার্সনটি গ্রহণ করে, যা "সি ৯০" নামে পরিচিত। মূলত "সি ৮৯" এবং "সি ৯০ C 89” একই ভাষা।

*ইতিহাস

বিয়ার্নে স্ট্রোমা (Bjarne Sroustrup) ১৯৭৯ সালে 'সি' নিয়ে গবেষণা শুরু করেন। পি. এইচ. ডি. ডিগ্রি অর্জনের জন্য গবেষণা করতে গিয়ে তিনি নতুন প্রোগ্রামিং ভাষা তৈরি করার কথা ভাবেন। বিয়ানে স্ট্রোট্রুপ খেয়াল করেন যে, বড় পরিসরের সফটওয়্যার উন্নয়নে Simula প্রোগ্রামিং ভাষা বেশ কার্যকর। কিন্তু ভাষাটি অনুশীলনের ক্ষেত্রে বেশ ধীর গতির, আবার BCPL বেশ দ্রুত কিন্তু বড় পরিসরের সফটওয়্যার উন্নয়নের জন্য তেমন শক্তিশালী নয়। বিয়ার্নে স্ট্রোট্রুপ যখন T Bell Labs এ কাজ শুরু করেন তখন UNIX kernel নিয়ে গবেষণা করতে গিয়ে বেশ সমস্যার সম্মুখীন হন। তিনি 'সি' প্রোগ্রামিং ভাষায় Simula-এর সুবিধাগুলো অন্তর্ভুক্ত করার কাজে নিয়েজিত হন। এ কাজে 'সি' প্রোগ্রামিং ভাষাকে নির্বাচন করা হয় কারণ এটি সহজ, দ্রুততর, সহজে বহনযোগ্য এবং এর ব্যবহার ব্যাপক। সি এবং simula ছাড়াও তিনি আরো কিছু প্রোগ্রামিং ভাষা নিয়ে গবেষণা করেন। যেমন: ALGOL 68, Ada, CLU এবং ML. সি+ নামটি এসেছে সি নামক প্রোগ্রামিং ভাষা থেকে। সি ভাষাতে পর পর দুটি যোগ চিহ্ন ব্যবহার করার অর্থ হলো কোনো কিছুর মান এক বাড়ানো। অনেকটা সেই অর্থেই সি প্রোগ্রামিং-এক এক ধাপ উপরের একটি প্রোগ্রামিং ভাষা হিসেবে সি+ নামকরণটি এসেছে।

*সি+ (উচ্চারণ সি প্লাস প্লাস)

এক ধরনের অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং ভাষা। ১৯৮০ সালে বিয়ার্নে স্টোভস্ট্রপ (Biarne • Stroustrup) যুক্তরাষ্ট্রের এটিএন্ডটি বেল ল্যাবরোটরিতে (AT&T Bell Laboratary) এটি ডেভেলপ করেন। মূলত সিমলা ৬৭ এবং সি প্রোগ্রামিং ভাষার সুবিধাজনক বৈশিষ্ট্যগুলোর সমন্বয় সাধন করে সি+ তৈরি হয়।

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

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

*ভিজুয়াল বেসিক

ভিজুয়াল বেসিক (সংক্ষেপে ভিবি বা VB) একটি তৃতীয় প্রজন্মের ঘটনা চালিত (event-driven) প্রোগ্রামিং ভাষা এবং মাইক্রোসফটের "কম" বা কম্পোনেন্ট অবজেক্ট মডেল (COM Component Object. Model) এর আইডিই (IDE-integrated development environment)। মাইক্রোসফট এই ভাষাকে বাজারে আনে পুরাতন বেসিক ভাষার উন্নত সংস্করণ হিসেবে। দৃশ্যমান বা গ্রাফিকাল বৈশিষ্ট্য এবং বেসিক ভাষার উত্তরাধিকার ভিবিকে তুলানামূলকভাবে সহজে আয়ও এবং ব্যবহার করার সুবিধা প্রদান করেছে।

ভিজুয়াল বেসিকের শেষ প্রকাশনা ছিল ১৯৯৮ সালের সংস্করণ ৬ (Version 6)| মাইক্রোসফটের বর্ধিত সহযোগিতা ২০০৮-এর মার্চ মাসে শেষ হয়েছে। বর্তমানে এই ভাষাটি ভিজুয়াল বেসিক ডট নেট দ্বারা প্রতিস্থাপিত হয়েছে।

ভিজুয়াল বেসিকের আগমন বেসিক ভাষা থেকে। ভিবি জিইউআই-গ্রাফিকাল ইউজার ইন্টারফেস (GUI

graphical user interface) বা ব্যবহারকারীর জন্য দৃশ্যমান ব্যবহার ব্যবস্থার র‍্যাপিড অ্যাপ্লিকেশন

ডেভেলপমেন্ট বা র‍্যাড (RAD-rapid application development) অ্যাপ্লিকেশন চালু করেছে। .

এছাড়াও ডাটা অ্যাকসেস অবজেক্ট, রিমোট ডাটা অবজেক্ট ইত্যাদির মাধ্যমে ডাটাবেজ কাজ করার এবং

আকটিভএক্স (Activex) নিয়ন্ত্রক ও অবজেক্ট তৈরি করার সুবিধা দিয়েছে। ভিবিএ (VBA), ভিবিস্ক্রিপ্ট ইত্যাদি স্ক্রিপ্টিং ভাষা সিন্ট্যাক্সের দিক থেকে ভিজুয়াল বেসিকের মতোই, কিন্তু কাজ করে ভিন্নভাবে। x

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

*জাভা
জাভা একটি প্রোগ্রামিং ভাষা। সান মাইক্রোসিস্টেম ৯০-এর দশকের গোড়ার দিকে জাভা ডিজাইন করার
পর এটি অতি দ্রুত বিশ্বের সবচেয়ে জনপ্রিয় প্রোগ্রামিং ভাষার একটিতে পরিণত হয়। জাভার এই জনপ্রিয়তার মূল কারণ এর বহনযোগ্যতা (portability) নিরাপত্তা, এবং অবজেক্ট ওরিয়েন্টেড প্রোগামিং ও ওয়েব প্রোগামিং এর প্রতি পরিপূর্ণ সাপোর্ট।

*জাতীয় গুরুত্বপূর্ণ দিকগুলো বহনযোগ্যতা (portability)

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

*অবজেক্ট ওরিয়েন্টড প্রোগ্রামিং

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

*জাভা প্রোগ্রাম তা প্রোগ্রাম কীভাবে কাজ করে

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

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

*ফোরট্রান
ফোরট্রান (ইংরেজি- Fortran) আদিতম উচ্চস্তরের নির্দেশমূলক প্রোগ্রামিং ভাষা। জন বাকাস ও অন্যরা আইবিএম-এ কর্মরত অবস্থা ১৯৫০-এর দশকের মাঝামাঝি এটি তৈরি করেন। ফোরট্রানের সবচেয়ে গুরুত্বপূর্ণ সংস্করণগুলো হচ্ছে ফোরট্রান I, ফোরট্রান II, ফোরট্রান iv, ফোরট্রান ৭৭, এবং ফোরট্রান ১০। এদের মধ্যে শেষের দুইটির বিবরণ অ্যানসাই মান আকারে প্রকাশিত হয়েছে। ফোরট্রান ৭৭-ই সবচেয়ে বেশি প্রচলিত। তবে ফোরট্রান ৯০-এ ভাষাটির ব্যাপক সংস্কার করা হয়েছে; এতে পুনরাবৃত্তি, পয়েন্টার, নতুন নিয়ন্ত্রণ সংগঠন এবং অনেক নতুন অ্যারে অপারেশন যোগ করা হয়েছে। ফোরট্রানের একটি বিনামূল্য বাস্তবায়ন ফ্রি সফটওয়্যার ফাউন্ডেশন সরবরাহ করেছে।

*ব্যবহার
ফোরট্রান দিয়ে অসংখ্য গাণিতিক হিসাব সহজেই করা যায়। শিক্ষা, ব্যাংকিং, ব্যবসা ইত্যাদি ক্ষেত্রে বিভিন্ন” প্রয়োজনীয় হিসাব ও পরিকল্পনা করার জন্যে প্রয়োজনীয় হিসাব করা যাবে এটি দিয়ে। এছাড়া ভিডিও গেম প্রেগ্রামিং, এয়ার ট্রাফিক কন্ট্রোল, বিভিন্ন বৈজ্ঞানিক ও সামরিক খাতে ও গবেষণার কাজেও ফোরট্রান ব্যাবহৃত হয়েছে। ফোরট্রান দিয়ে ইঞ্জিনিয়ারিং হিসাব-নিকাশ করা যায়।

*ALGOL : একটি অনুজ্ঞাসূচক কম্পিউটার প্রোগ্রামিং ভাষার একটি পরিবার যা ১৯৫০ এর

মধ্যভাগে উন্নত হয়।

* Oracle : Oracle ডাটাবেজ (সাধারণত ওরাকল RDBMS হিসেবে অথবা কেবল ওরাকল হিসাবে উল্লেখ করা হয়) একটি অবজেক রিলেশনাল ডাটাবেজ ম্যানেজমেন্ট সিস্টেম যা ওরাকল কর্পোরেশন দ্বায়া উৎপদিত এবং বাজারজাত হয়।

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

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

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

*নামকরণ
এই প্রোগ্রামিং ভাষাটির নামকরণ করা হয়েছে ব্রিটিশ রম্য শো 'মন্টি পাইথন' এর নামে।

*ইতিহাস
১৯৮০ দশকের দিকে পাইথনের ধারণা দেন নেদারল্যান্ডের CWI-এর গবেষক গুইডো ভ্যান রোসাম। মূলত এবিসি'র উত্তরসূরি হিসেবে পাইথনের আবির্ভাব হয়েছে যা এক্সেপশন হ্যান্ডলিং করতে এবং অ্যামিবা অপারেটিং সিস্টেমের সাথে কাজ করতে সক্ষম ছিল। ভ্যান রোসাম পাইথনের প্রধান লেখক এবং বর্তমান পাইথনের উন্নয়নে তিনি প্রধানত নেতৃত্ব দিচ্ছেন। তাকে পাইথনের আজীবন পরিচালক হিসেবে সম্মান দেয়া হয়েছে।

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

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

* চতুর্থ প্রজন্মের ভাষা (4GL) বা অতি উচ্চতর ভাষা

4GL মানে 4th Generation Language বা চতুর্থ প্রজন্মের ভাষা। এটি বিভিন্ন ধরনের ভাষার সমন্বয়ে গঠিত, যা এখনও পূর্ণাঙ্গ রূপ ধারণে সক্ষম হয়নি। মোটামুটি যে ৪টি ভাষার সমন্বয়ে এটি গঠিত হয়। সেগুলো হচ্ছে

১। Natural Language
২। Very High Level Language
৩। Non Procedural Language
৪। Actrol Language

এ ভাষাকে মেশিনের বোধগম্য করতে সাহায্য করবে একটি ইন্টেলিজেন্ট কম্পাইলার। মাইক্রোসফটের কর্ণধার বিল গেটস্ এ ধরনের ভাষার স্বপ্ন অনেক আগেই প্রকাশ করেছেন। বর্তমানে এর প্রস্ত্ততি প্রক্রিয়া দ্রুতগতিতে এগিয়ে যাচ্ছে। QBE, SQL, ADF, CSP প্রভৃতি 4GL ভাষা।

*4GL বা অতি উচ্চতর ভাষার সুবিধা

১। উচ্চতর ভাষার তুলনায় এ ভাষায় প্রোগ্রাম লেখা খুব সহজ এবং অতি সংক্ষিপ্ত।

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

*স্বাভাবিক ভাষা (Natural Language)

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

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

*প্রোগ্রাম তৈরির ধাপসমূহ

১। সমস্যা নির্দিষ্টকরণ (Problem Specification)
২। সমস্যা বিশ্লেষণ (Problem Analysis)
৩। প্রোগ্রাম ডিজাইন (Programme Design)
৪। প্রোগ্রাম উন্নয়ন (Programe Development)
৫। প্রোগ্রাম বাস্তবায়ন (Programme Implementation)
৬। প্রোগ্রাম ডকুমেন্টেশন (Programme Documentation)
৭। প্রোগ্রাম রক্ষণাবেক্ষণ (Maintenance)

*তাদের বিশ্লেষণ
১। সমস্যা নির্দিষ্টকরণ (Problem Specification) প্রোগ্রামটি কী সমস্যা সমাধানের জন্য রচনা করা হবে সে সমস্যাটির একটি পরিষ্কার বর্ণনা তৈরি করা হয়। এজন্য সব রকম তথ্যানুসন্ধান করতে হয়। তথ্যানুসন্ধানের জন্য সমস্যা সংশ্লিস্ট ব্যক্তিদের সাথে আলোচনা করে সমস্যার বর্ণনা প্রস্তুত করা হলে প্রোগ্রামের আশানুরূপ ফলাফল আসতে পারে।

২। সমস্যা বিশ্লেষণ (Problem Analysis) সমস্যা নির্দিষ্ট করার পর সমস্যা সংশ্লিস্ট সকল ডাটা বিশ্লেষণ করতে হবে। ডাটা বিশ্লেষণ করার জন্য চার্ট, গ্রাফ, তালিকা ইত্যাদির সাহায্য নিয়ে সমস্যাকে ছোট ছোট ভাগে বিভক্ত করে নিতে হয়। এছাড়া সমস্যা সমাধানের জন্য কম্পিউটার প্রয়োজন কিনা তা নির্ণয়, সমস্যার কাঠামোগত বর্ণনা প্রস্তুত এবং সম্ভব হলে সমস্যার গাণিতিক মডেল প্রস্ত্তত করতে হয়।

৩। প্রোগ্রাম ডিজাইন (Programme Design)

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

ইনপুট ডিজাইন
আউটপুট ডিজাইন এবং
ইনপটু ও আউটপুটের মধ্যে সম্পর্ক ডিজাইন।

ডিজাইনের ক্ষেত্রে অ্যালগরিদম, ফ্লোচার্ট ও সুডোকোডের সাহায্যে সমস্যার সমাধান দিতে হবে।

৪। প্রোগ্রাম উন্নয়ন (Programme Development)

অ্যালগরিদম এবং ফ্লোচার্টের সহায়তায় কম্পিউটারের ভাষায় নির্দেশসমূহ সাজিয়ে প্রোগ্রাম রচনা করতে হয়। একে বলা হয় কোডিং। কোডিং করার পূর্বে যে বিষয়টি অত্যন্ত গুরুত্বসহকারে বিবেচনা করা প্রয়োজন তা হলো
সমস্যাটির প্রকৃতি নির্ধারণ। কারণ সমস্যাটির প্রকৃতি অনুযায়ী ভাষা নির্বাচনের প্রয়োজন পড়ে। CTRL বৈজ্ঞানিক কোনো সমস্যা সমাধানের প্রয়োজন হলে সাধারণত FORTRAN ভাষাটি নির্বাচন করা হয়। অনুরূপভাবে ব্যবসা সংক্রান্ত কাজের জন্য COBOL, নেটওয়ার্ক ম্যানেজমেন্টের জন্য, JAVA ইত্যাদি।

৫ প্রোগ্রাম বাস্তবায়ন (Programme Implementation)

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

ক. প্রোগ্রাম টেস্টিং (Programme Testing)

খ.প্রোগ্রাম ডিবাগিং (Programme Debugging)

ক. প্রোগ্রাম টেস্টিং (Programme Testing)
প্রোগ্রাম টেস্টিং হচ্ছে কোনো প্রোগ্রাম লেখা সম্পন্ন করার পর প্রোগ্রামটি যে উদ্দেশ্যে লেখা, সে উদ্দেশ্য সাধন হচ্ছে কি না, প্রোগ্রামটি ঠিকমতো রান করছে কি না, সমস্যাটির জন্য কতকগুলো জানা মান নিয়ে হিসেব করে দেখা যে, ফলাফল সঠিক আসে কি না ইত্যাদি কাজ করা। তারপর সেই একই মান কম্পিউটারে ইনপুট হিসেবে দিয়ে তৈরি প্রোগ্রামের সাহায্যে নির্বাহ করে দেখতে হবে পূর্বে হিসাব করা মান এবং প্রোগ্রামের সাহায্যে নির্বাহকৃত মান একই আছে কি না। যদি একই হয় তাহলে বুঝতে হবে প্রোগ্রামটি সঠিক আছে; অন্যথায় প্রোগ্রামটি ভুল আছে বলে ধরে নিতে হবে।

* প্রোগ্রামের ভুল (Error of Programme)

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

*প্রোগ্রামে সাধারণত তিন ধরনের ভুল পরিলক্ষিত হয়।

১। ব্যাকরণগত ভুল (Syntax Error)
২। নির্বাহ ভুল (Execution Error)
৩। যৌক্তিক ভুল (Logical Error)

*এদের বিশ্লেষণ
১। ব্যাকরণগত ভুল (Syntax Error) : যে ভাষায় প্রোগ্রামটি লেখা হবে সেই ভাষায় যে নিয়মনীতি মেনে প্রোগ্রামার লেখার কথা সেগুলো মেনে প্রোগ্রাম না লেখা হয়ে থাকলে তাতে কিছু ভুল পরিলক্ষিত হয় যা. ব্যাকরণগত ভুল হিসেবে বিবেচিত হয়। যেমন- PRINT-এর স্থলে PRIMT লিখলে, CLS-এর পরিবর্তে CSL লিখলে অথবা অতিরিক্ত কোনো কমা ইত্যাদি ব্যবহার করে থাকলে। ব্যাকরণগত ভুলসমূহ কম্পিউটার Error Message দিয়ে জানিয়ে দেয় প্রোগ্রামের কোথায় কী ধরনের ভুল হয়েছে। যা সংশোধন করা সাপেক্ষে কম্পিউটার নির্বাহ করবে; অন্যথায় করবে না।

২। নির্বাহ ভুল (Execution Error) : নির্বাহ ভুলের কারণে প্রোগ্রাম রান করলেও ভুল ফলাফল দেয় আবার অনেক সময় কোনো আউটপুট পাওয়া যায় না। যে সকল কারণে নির্বাহ ভুল হয় তা হলো।
১। কোনো ভাগের কাজে ভাজকের মান যদি শূন্য (Divide by Zero) হয়। ২। Infinite বা অসীম লুপ থাকলে।
৩। ঋণাত্মক সংখ্যার বর্গমূল করলে। ৪। অ্যাররের জন্য নির্ধারিত জায়গা অতিক্রম করলে ইত্যাদি।

৩. যৌক্তিক ভুল (Logical Error) : প্রোগ্রামে যদি কোনো Logic লিখতে ভুল হয় তাহলে সেটিকে যৌক্তিক ভুল হিসেবে ধরা হয়। এ ধরনের ভুল হলে কম্পিউটার কোনো Error Message দেয় না উপরন্তু ভুল ফলাফল দেয়, যেমন- A > B স্থলে A < B অথবা A + B স্থলে ALB ইত্যাদি।

*প্রোগ্রাম ডিবাগিং (Programme Debugging)

Bug অর্থ পোকা। Debugging অর্থ পোকা দূর করা। কম্পিউটারের প্রোগ্রামে যে ভুল-ত্রুটি থাকে তা দূর করাকে ডিবাগিং (Debugging) বলা হয়। ১৯৪৫ সালে (মার্ক ১ কম্পিউটারে একটি মথ পোকা ঢুকে যাওয়ায় তা অচল হয়ে পড়ে। তখন থেকে Debugging শব্দটির উৎপত্তি। প্রোগ্রাম ডিবাগিংয়ের জন্য প্রথমে প্রোগ্রামে কী ধরনের ভুল হয়েছে তা নির্ণয় করে সে মোতাবেক প্রয়োজনীয় সংশোধন করলেই চলে। Syntax Error হলে তা নির্ণয় করা এবং সংশোধন করা সহজ। Logical Error শনাক্ত করা কঠিন। এক্ষেত্রে কিছু নমুনা ডাটা নিয়ে যার ফলাফল জানা আছে, প্রোগ্রাম পরীক্ষা করতে হবে এবং ফলাফল ভিন্ন হলে প্রোগ্রামকে কয়েকটি অংশে ভাগ করে প্রতিটি অংশের ফলাফল দেখে কোথায় ভুল আছে তা নির্ণয় করতে হবে এবং প্রয়োজনীয় সংশোধন করতে হবে।

*প্রগ্রাম ডকুমেন্টেশন (Programme Documentation)

ভুল সংশোধনের পর প্রোগ্রাম সঠিকভাবে কাজ করলে তাকে Run programme বলা হয় এবং প্রোগ্রামকে ভবিষ্যতে এবং রক্ষণের জন্য লিপিবদ্ধ করতে হয়। এ লিপিবদ্ধ প্রোগ্রামকে ডকুমেন্টেশন বলে। আধুনিকীকরণ করার জন্য প্রোগ্রামের সঠিক ডকুমেন্টেশন তৈরি করতে হয় অর্থাৎ প্রোগ্রামের বিবরণী স্থায়ীভাবে লিপিবদ্ধ করতে হয়। সেক্ষেত্রে প্রোগ্রামকে সঠিকভাবে সংরক্ষণ করতে না পারলে এর আধুনিকীকরণ কঠিন হয়ে পড়ে। পেপার, ম্যাগনেটিক ডিস্ক ইত্যাদির মাধ্যমে প্রোগ্রামকে স্থায়ীভাবে সংরক্ষণ করা যেতে পারে। একটি Complete প্রোগ্রাম ডকুমেন্টেশন যে সকল বিষয় থাকা দরকার তা হলো

প্রোগ্রামের বর্ণনা।

প্রোগ্রামের ফ্লোচার্ট।

কোডিং।

প্রোগ্রাম নির্বাহকালীন সময়ে করণীয় কাজের তালিকা।

পরীক্ষণ ও ফলাফল।

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

*অ্যালগরিদম (Algorithm)

অ্যালগরিদম অর্থ ধাপে ধাপে সমস্যা সমাধান। অর্থাৎ একটি সমস্যাকে কয়েকটি ধাপে ভেঙে প্রত্যেকটি ধাপ

পর্যায়ক্রমে সমাধান করে সমগ্র সমস্যা সমাধান করা। সমস্যা সমাধানের এই যৌক্তিক পর্যায়ক্রমকে অ্যালগরিদম বলা হয়। অন্য কথায়, যে পদ্ধতিতে ধাপে ধাপে অগ্রসর হয়ে কোনো একটি নির্দিষ্ট সমস্যার সমাধান করা হয় তাকে অ্যালগরিদম বলা হয়।

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

*অ্যালগরিদমের বৈশিষ্ট্য

১। অ্যালগরিদমে শূন্য, এক বা একাধিক ইনপুট থাকতে হবে।
২। অবশ্যই কমপক্ষে একটি আউটপুট থাকতে হবে।
৩। প্রত্যেকটি ধাপ স্পষ্ট হতে হবে।
৪। অ্যালগরিদম সহজবোধ্য হতে হবে।
৫। নির্দিষ্ট সংখ্যক ধাপে সমস্যার সমাধান হতে হবে।
৬। একে ব্যাপকভাবে প্রয়োগ করা সম্ভব হবে।
৭। মেমোরিতে কম স্থান নেয়া উচিত।

* ফ্লোচার্ট (Flowchart)

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

*ফ্লোচার্টের বৈশিষ্ট্য (Characteristics of Flowchart)
একটি উন্নতমানের ফ্লোচার্টে নিম্নলিখিত বৈশিষ্ট্যসমূহ বিদ্যমান। যেমন –
১ প্রোগ্রামের ভুল নির্ণয়ে সহায়তা করে।

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

Level 2

আমি মো আতিক। বিশ্বের সর্ববৃহৎ বিজ্ঞান ও প্রযুক্তির সৌশল নেটওয়ার্ক - টেকটিউনস এ আমি 1 বছর 6 মাস যাবৎ যুক্ত আছি। টেকটিউনস আমি এ পর্যন্ত 13 টি টিউন ও 0 টি টিউমেন্ট করেছি। টেকটিউনসে আমার 0 ফলোয়ার আছে এবং আমি টেকটিউনসে 5 টিউনারকে ফলো করি।

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


টিউনস


আরও টিউনস


টিউনারের আরও টিউনস


টিউমেন্টস