Powered by Blogger.

Popular Posts

Pages

Blogger news

Blogroll

Blogger templates

Followers

Various Programming Languages : C++ Part 2


PART-1

বিভিন্ন ধরনের প্রোগ্রামিং ল্যাংগুয়েজ
অ্যাসেম্বলী ল্যাংগুয়েজের বিভিন্ন সমস্যা কাটিয়ে সাধারন ব্যবহারকারীদের কথা চিন্তা করে প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ এর কথা ভাষা হয় এবং একদিন সেটি সম্ভবও হয়। ইদানিং আমাদের সামনে প্রচুর প্রোগ্রামিং ল্যাংগুয়েজ বিদ্যমান। সব প্রোগ্রামিং ল্যাংগুয়েজের কিছু ব্যাপারে অবশ্যই মিল আছে। কিন্তু বিভিন্ন ধরনের কাজের জন্য বিভিন্ন রকম ডেটা প্রয়োজন হয়। সুতরাং কাজের উপর ভিত্তি করে বিভিন্ন সময়ে বিভিন্ন ধরনের ল্যাংগুয়েজ তৈরী করা হয়।
FORTRAN:- ১৯৫৭ সালে IBM কোম্পানীর ডঃ হেমস ব্যাকার এটি ডেভেলপ করেন। এর পুরোনাম হচ্ছে FORmula TRANslation. সাধারনত বৈজ্ঞানিক এবং ইঞ্জিনিয়ারিং কাজে বিভিন্ন ধরনের গানিতিক সূত্রের ব্যবহারের জন্য এটির প্রয়োজন হয়।
COBOL:- ১৯৬০ সালে COBOL নামে একটি ল্যাংগুয়েজ ডেভেলপ করা হয়। এর পুরা নাম হচ্ছে COmmon Business Oriented Language (CO_B_O_L) এটি দিয়ে সাধারনত ব্যবসায়িক সফ্টওয়ার ডেভেলপ করা হতো।
BASIC:- নির্দিষ্ট কোন কাজের গন্ডির বাইরে একটি প্রোগ্রামিং ল্যাংগুয়েজ দ্বারা মোটামুটি সব ধরনের কাজ করা যায়, এই উদ্দেশ্য নিয়েই BASIC এবং Pascal এই ল্যাংগুয়েজ দুটি তৈরী করা হয়। BASIC অর্থ হলো Beginers All Purpose Symbolic Instruction Code (B-A-S-I-C). ১৯৬০ সালে যুক্তরাষ্ট্রের ডাট মাইথ কলেজে সর্বপ্রথম এটির ব্যবহার করা হয়।
Pascal:- ১৯৭০ সালে সুইজারল্যান্ডের প্রফেসর নিকলাস হুইরথ Pascal নামে একটি প্রোগ্রামিং ল্যাংগুয়েজ ডেভেলপ করেন। এটি দিয়ে সবধরনের সফ্টওয়ার ডেভেলপ করা যায়। Pascal কে বলা হয় মডুলার (Modular) প্রোগ্রামিং ল্যাংগুয়েজ অর্থাৎ এতে প্রত্যেকটি বড় বড় প্রোগ্রামকে কয়েকটি সাব-প্রোগ্রামে ভাগ করা যায়। Pascal প্রথম মডুলার প্রোগ্রামিং হওয়ার জন্য বৈজ্ঞানিক, গানিতিক এবং ব্যবসায়িক ইত্যাদি কাজের ক্ষেত্রে কিছু সীমাবদ্দতা আছে। পরবর্তীতে C প্রোগ্রাম (১৯৭২ সালে) ডেভেলপ করা হয় যা দিয়ে বৈজ্ঞানিক, গানিতিক বা ব্যবসায়িক সব ধরনের সমস্যার সমাধান করা যায়।
C- প্রোগ্রামিং ল্যাংগুয়েজ
১৯৭২ সালে AT & T নামের কোম্পানির–Bell Laboratory-তে এটি ডেভেলপ করেন ডেনিস রিচি। তিনি DEC PDP-ΙΙ মেশিনে এবং UNIX অপারেটিং সিস্টেমে এটি তৈরী করেন। ১৯৭৮ সালে ডেনিস রিচির লেখা The C Programming language. বইটি প্রকাশিত হয় এবং মাইক্রো কম্পিউটারের জনপ্রিয়তা বাড়ার সাথে সাথে C এর ব্যাপক ব্যবহার শুরু হয়। যদিও প্রথমে UNIX অপারেটিং সিষ্টেম ব্যবহার করে C লেখা হয় কিন্তু পরবর্তীতে আবার C ব্যবহার করে UNIX কে নতুন ভাবে লেখা হয় এবং একাধিক অপারেটিং সিষ্টেমে C চলতে পারে। C নিদির্ষ্ট কোন কাজের জন্য তৈরী হয়নি, এটি এমন এক ধরনের প্রোগ্রামিং ল্যাংগুয়েজ, যা ব্যবহার করে যে কোন ধরনের সমস্যার সমাধান করা যায়। বর্তমানে একাধিক নতুন প্রোগ্রামিং ল্যাংগুয়েজের প্রচলন আছে তবুও C এর জনপ্রিয়তা ক্রমশ বাড়ছেই। বর্তমান বিশ্বে প্রচলিত 90% এরও অধীক কম্পাইলার সি ব্যবহার করে তৈরী করা হয়েছে।
C-এর ইতিহাস
COBOL ব্যবহার করা হতো ব্যবসায়িক সফ্টওয়ার তৈরীর উদ্দেশ্যে অপরদিকে FORTRAN-ব্যবহার করা হতো বৈজ্ঞানিক ও ইঞ্জিনিয়ারিং এর ক্ষেত্রে ব্যবহৃত গানিতিক সমস্যা সমাধানের সফ্টওয়ার তৈরীর উদ্দেশ্যে। তখন থেকেই প্রয়োজন হয় এমন একটি প্রোগ্রামিং ল্যাংগুয়েজ, যা দ্বারা সব ধরনের সমস্যার সমাধান দেওয়া যাবে অর্থাৎ কোন নিদির্ষ্ট কাজের জন্য না হয়ে সব ধরনের কাজ করা যাবে এমন একটি সফ্টওয়ার প্রয়োজন হয়ে পরে। ১৯৬০ সালে এই প্রয়োজন থেকেই তৈরী করা হয় ALGOL (Algorithmic Language) তাতেও কাঙ্খিত লক্ষ্য অর্জন সম্ভব হয়নি। ১৯৬৩ সালে ক্যামব্রীজ ইউনিভার্সিটিতে তৈরী করা হয় CPL (Combined Programming Language)। এটি ব্যবহারের ক্ষেত্রেও জটিলতা থেকে যায়। ১৯৬৭ সালে আবারও ক্যামব্রিজ ইউনিভার্সিটির মার্টিন রিচার্ড তৈরী করেন BCPL (Basic Combined Programming Language)। ১৯৭০ সালে AT & Tর Bell laboratory-র কেন থম্পসন তৈরী করেন B. এর পরপর ১৯৭২ সালে ডেনিস রিচি BCPL ও B এবং সংস্কার করে C তৈরী করেন। অনেক দিন ধরে সাধারনত একাডেমিক কাজে এটি ব্যবহৃত হয় এবং উত্তর উত্তর এর বিভিন্ন কম্পাইলার বাজারে আসে, বাণিজ্যিক ব্যবহারের জন্য এবং ধীরে ধীরে জনপ্রিয়তা ও ব্যবহারও বৃদ্ধি পায়।
বিভিন্ন ধরনের C
C এর ব্যবহার উপযোগী এবং জনপ্রিয়তার কারনে বিভিন্ন প্রতিষ্ঠান তাদের নিজস্ব C ল্যাংগুয়েজ তৈরী করতে শুরু করে। এক্ষেত্রে অবশ্যই বিভিন্ন ধরনের পার্থক্য তৈরী হয়, এই সমস্যা সমাধানের জন্য ১৯৮০ সালে ANSI (American National Standards Institute) কতৃক C এর একটি আদর্শ মান নির্ধারন করা হয়, অবশ্য এই Standard পূর্ণতা পায় ১৯৮৮ সালে বাজারে প্রচলিত অন্যান্য Compiler যেমন বোরল্যান্ড কোম্পানির Turbo C এবং মাইক্রোসফ্ট এর Borland C ইত্যাদি। কিছু পার্থক্য ছাড়া বর্তমানের সব C কম্পাইলার ANSI Standard অনুযায়ী তৈরী করা হয়। সামান্য কিছু পার্থক্য ছাড়া এক ভার্সনে লিখিত সি/সি ++ প্রোগ্রাম অন্য ভার্সনে চালনা করা যায়। যেহেতু সি ++ কম্পাইলার সি এর ফাইলকে চালাতে পারে তাই বর্তমানে অধিকাংশ কম্পাইলার হচ্ছে সি ++ কম্পাইলার।
C–এর অনন্য কিছু বৈশিষ্ট্যঃ
1) C-তে বড় একটি প্রোগ্রামকে ছোট ছোট module বা Function-এ ভাগ করে লেখা সম্ভব। আর প্রতিটি অংশের নাম Module বা Function. এই কারনে C কে বলা হয় Structured language. C-তে Loop ব্যবহার করা হয় যেমনঃ While, do-while, for ইত্যাদি। অপর দিকে Unstructured language–এ goto বা Jump কমান্ড ব্যবহার করা হয়। ফলে প্রোগ্রাম তার স্বাভাবিক কার্যধারা ব্যাহৃত হওয়ার সম্ভাবনা থাকে। FORTRAN, COBOL, BASIC ইত্যাদিকে বলা হয় Unstructured language এবং Pascal, C, Ada, Modula-2, Java, C++ ইত্যাদিকে বলা হয় Structured language. তবে সি ++ এর মত সি তে কোন Function বা Procedure এর মধ্যে আবার কোন Function বা Procedure লেখা যায় না। যেগুলিতে এগুলি করা যায় তাকে বলে Block Structured ল্যাংগুয়েজ। কাজেই সি Structured ল্যাংগুয়েজ হলেও Block Structured ল্যাংগুয়েজ নহে।
2) সি এর আর একটি বৈশিষ্ট্য হলো এটি general purpose language. যেমন COBOL বা FORTAN দিয়ে নির্দিষ্ট কিছু ধরনের কাজ করা যায়। এক্ষেত্রে সি দিয়ে যে কোন ধরনের সমস্যার সমাধান করা যায়। সুতরাং সি হচ্ছে একটি general purpose language.
3) সি হচ্ছে একটি Portable language কারন যে কোন এক কম্পিউটারের তৈরী সি প্রোগ্রাম অন্য কোন কোম্পানীর তৈরী কম্পিউটারে কম্পাইল এবং রান করানো যায়। অর্থাৎ এক OS-এ লেখা অন্য OS দিয়ে চালানো সম্ভব। যেমন DOS দিয়ে লেখা C প্রোগ্রাম Windows দিয়ে চালানো সম্ভব।
4) বিবিধ সুবিধার কারনে System Programming-তে একে ব্যবহার করা হয়ে আসছে বলে একে System Programming ল্যাংগুয়েজও বলা হয়। কম্পিউটার অপারেটিং সিষ্টেমের একটি অংশের গঠনই হচ্ছে System Program. যেমন নীচের যে কোন ধরনের প্রোগ্রামকেই System Program বলা যায় এবং এর সবগুলির C দ্বারা তৈরী করা সম্ভব।
  • Operating Systems
  • Interpreters
  • Editors
  • Compilers
  • File Utiliters
  • Performance enhancer
  • Real-time executives
অবশ্য সি ++ এ একই ধরনের বৈশিষ্ট্যগুলো অক্ষুন্ন রাখে।

প্রোগ্রামিং ল্যাংগুয়েজের প্রকারভেদ
সমস্ত প্রোগ্রামিং ল্যাংগুয়েজকে ২টি ভাগে ভাগ করা যায়। যেমনঃ
clip_image002
Highest Level : এই প্রোগ্রামিং ল্যাংগুয়েজ গুলো সহজে বোধগম্য এবং সাধারনের জন্য ব্যবহার সহজ। এই ল্যাংগুয়েজে দক্ষতা অর্জনের জন্য মেশিন বিশেষজ্ঞ হওয়ার দরকার পরে না। যেমন - BASIC, PASCAL, COBOL ইত্যাদি।
Lowest Level : এ ধরনের প্রোগ্রামিং ল্যাংগুয়েজ গুলো ব্যবহারের জন্য মেশিনের গাঠনিক দিকে এক ধরনের বিশেষজ্ঞ হওয়ার প্রয়োজন পরে এবং এতে প্রোগ্রাম লেখার জন্য বাইনারী পদ্ধতি অবলম্বন করতে হয়। যেমনঃ Macro-Assembler, Assembler ইত্যাদি।
Middle Level : সি কে বলা হয় Middle Level ল্যাংগুয়েজ। এর অর্থ এই না যে সে কম ক্ষমতা সম্পন্ন, ব্যবহার জটিল এবং হাইয়েষ্ট লেভেল ল্যাংগুয়েজের তুলনায় কম উন্নত। হাইয়েষ্ট লেভেল ল্যাংগুয়েজের ভাল ভাল সমস্ত সুযোগ সুবিধা অটুট রেখে লোয়েষ্ট লেভেল ল্যাংগুয়েজের সাথে এর সমন্বয় করা সম্ভব। অথাৎর্ Assembler ল্যাংগুয়েজের মত Bit, Byte এবং Memory address-নিয়ে কাজ করার সাথে সাথে, হাইয়েষ্ট লেভেল ল্যাংগুয়েজের কমন ডাটা টাইপ যেমন Integer, Character and Real ইত্যাদি। যদিও সি তে বিল্ট-ইন বেসিক ৫টি ডাটা টাইপ বিদ্যমান। এমনকি সি তে এক ডাটা টাইপ থেকে অন্য ডাটা টাইপ কনভারশন সম্ভব। বিভিন্ন লেভেলের ল্যাংগুয়েজ যেমনঃ
HighestMiddleLowest
Ada
Modula -2
Pascal
COBOL
FORTRAN
BASIC




Java
C++
C
FORTH


Macro-Assembler
Assembler








মেমোরী
কম্পিউটারকে প্রদানকৃত সমস্ত ইনফরমেশন মেমোরীতে জমা হয় এবং এটি ’0’ এবং ’1’ এর সমান সমান ক্ষুদ্র ক্ষুদ্র অংশে বিভক্ত। যে ক্ষুদ্র যন্ত্রাংশটি কম্পিউটারের মেমোরীর কাজ করে তার নাম RAM(বা Random Access Memory) মনে করুন কম্পিউটারের পাউয়ার অফ আছে এক্ষেত্রে RAM সর্ম্পূন ফাঁকা থাকে আবার কম্পিউটারের পাউয়ার সুইচ অন করলে প্রথমে মেমরীতে বা RAM-এ সিষ্টেম লোড হয় এবং সেখান থেকেই কম্পিউটার পরিচালিত হয়। কাজেই মেমরী হচ্ছে এক ধরনের আধার, যেখানে সমস্ত ইনফরমেশন (ডাটা এবং ইন্সট্রাকশন) জমা থাকে।
Virus gardTC.
MS WordAudio
clip_image003OS

128 M. B. Memory
নিচে Ram এর অবস্থান অনুযায়ী NOVA লেখার অবস্থান দেখানো হলোঃ
7 6 5 4 3 2 1 0
0681
N

7 6 5 4 3 2 1 0
0682
0

7 6 5 4 3 2 1 0
0683
V

Learn C ++ Programing - Part1


PART-2

নিশ্চয়! আপনি প্রস্ত্তত, আপনার কম্পিউটারের (PC) BOSS হবার জন্য। মানে বলতে চাচ্ছি, আপনার কম্পিউটার আপনার ইচ্ছানুযায়ী কাজ করবে অর্থাৎ আপনি যেভাবে নির্দেশ দিবেন ঠিক ঠিক সেই নির্দেশ পালন করবে। এক্ষেত্রে একটা কথা বলা দরকার, আপনি যখন আপনার কী বোর্ড থেকে A লেখা বোতামটি চাপ দিচ্ছেন তখন মনিটরে ‘A’ লেখা ভেসে উঠছে। কী বোর্ড থেকে A লেখা বোতামটি চাপ দেওয়ার অর্থ হচ্ছে মনিটরে A লিখতে বলা। অথচ কম্পিউটারের ক্ষেত্রে সমস্যা হচ্ছে A,B,C,D-ইত্যাদির কিছুই সে চেনে না। আপনি যতবারই তাকে ‘A’ লিখতে বলবেন ততবারই সে তার ভিতরে রক্ষিত প্রোগ্রাম থেকে জেনে নিচ্ছে, আমার বস একটি নির্দেশ পাঠিয়েছে, এর মানে কি? আপনারই মতো কোন প্রোগ্রামার আগে থেকেই একগুচ্ছ নির্দেশ লিখে রেখেছে যে, কোন্ বোতাম চাপ দিলে মনিটরে কি লিখতে হবে। সুতরাং তাঁর কাছ থেকে সাহায্য নিয়ে কম্পিউটার নির্দেশ পালন করছে এবং নির্দেশ পালনের পরপর আবার ভুলে যাচ্ছে। আবার নির্দেশ পেলে প্রোগ্রামের কাছ থেকে আবার সাহায্য নিয়ে নির্দেশ পালন করছে এবং যথারীতি আবার ভুলে যাচ্ছে। ব্যাপারটা অন্যভাবে বলা যাক যেমন আপনি কম্পিউটার (PC) কে নির্দেশ নিলেন ২+২=?। সে দ্রুত নির্দেশটি পেল এবং ভিতরে যেখানে প্রোগ্রাম আছে তার কাছে গিয়ে শুনলো এর মান কি? উত্তর পেল ‘4’ এবং তৎক্ষনাত সে মনিটরে লিখে দিল 4 আর যথারীতি পুরো ব্যাপারটি ভুলে গেল। দ্বিতীয় বার আবার যখন আপনি জানতে চাইলেন ২+২?। আবারও সে একই কাজ করলো। এভাবেই চলতে থাকলো। আরও একটা গোপন কথা হলো কম্পিউটার A, B, C, D ইত্যাদি সহ 1, 2, 3 ইত্যাদি কোন অক্ষরই চেনে না। সে শুধুমাত্র 0 এবং 1 এই দুইটি অক্ষরই চেনে সুতরাং কিবোর্ড থেকে A অথবা 1 লিখলে সে সেটাকে 0 এবং 1 এ রূপান্তরিত করে নেয় এবং কাজ সমাধান করে সেই একই প্রক্রিয়ায় এবং শেষে ফলাফল দেখানোর সময় আবার সাধারন ইংরেজী যেমন A বা 1 এ রূপান্তরিত করে দেয়। ব্যাপার গুলো নিয়ে আমরা বিস্তর আলোচনা করবো। আপাতত আপনি আপনার কম্পিউটারের বস হবার জন্য একটি নির্দেশ বা প্রোগ্রাম তৈরী করুন। সুতরাং বইটির সাথে আপনার সময় শেয়ার করুন এবং একজন রিয়েল BOSS হউন।
আপনার কম্পিউটার থেকে C/C++ প্রোগ্রাম রান করুন এবং নিচের কোডগুলো হুবুহু লিখুন।
clip_image002
প্রোগ্রাম লেখা শেষ হলে কীবোর্ড থেকে Ctrl+F9 প্রেস করুন। রেজাল্ট নিজেই দেখুন।
clip_image004
যদি এই প্রোগ্রাম বুঝতে এবং করতে অসুবিধা হয় তবে কোন সমস্যা নাই একটু পরেই আমরা এটা নিয়ে বিস্তারিত আলোচনা করবো তাঁর আগে চলুন নিম্নলিখিত বিষয়গুলো নিয়ে একটু সাধারন ধারনা নেওয়া যাক।
ধানমন্ডির একটি বড় ডিপার্টমেন্টাল ষ্টোরের নাম Stop Mall. আমার বন্ধু মুন্না ওখানে কাজ করে এবং প্রতিদিনের ট্রানজেকশনের বিস্তারিত বিবরন তাকে রাখতে হয়। প্রতিটি কাষ্টমারের লেনদেনের বিলও তাকেই তৈরী করতে হয়।
মনে করি বিলের নমুনা নিম্নরূপ:
Customer Name:-.................................................
Date:- ..................
ItemRateQTYPrice
Video CDTk 150/=2 unitsTk 300/=
JellyTk 250/=2 NosTk 500/=
HangerTk 25/=10NosTk 250/=
Total
বিলটি তৈরী করার জন্য মুন্না যে কাজগুলি করে সেগুলি হচ্ছেঃ
কি কি আইটেম এবং কয়টি বিক্রি হলো
প্রতি আইটেমের রেট কত
প্রতিটি আইটেম এর সাথে ইউনিটের গুন করে দাম বের করা এবং
প্রতিটি রেট কে যোগ করে মোট (total) বের করা।
সংক্ষেপে যে কাজটি করতে হয় তা হলোঃ
§ প্রতিটি লেনদেন সম্বন্ধে বিস্তারিত বিবরন সংগ্রহ করতে হয় (Input)
§ প্রয়োজনীয় ক্যালকুলেশন করতে হয় (Process)
§ সবমিলিয়ে একটি ফলাফল দাঁড় করতে হয় (Output)
কম্পিউটার ঠিক একইভাবে কাজ করে থাকে। প্রথমত কোন ইনফরমেশন কম্পিউটারে Input দিতে হয়, সে Process করে এবং ফলাফল Output করে। এটিকে বলে I.P.O cycle.
Input clip_image005   Process        clip_image006 Output
আসুন নিচের ব্যাপারটি বিবেচনা করা যাক। মনে করি নিচের কাজগুলো করতে হবে।
a. দুইটি সংখ্যার যোগ ফল (Sum) বের করতে হবে।
b. তিনটি সংখ্যার গড় (Average) বের করতে হবে।
c. একটি সংখ্যা জোড় না বিজোড় বের করতে হবে।
নিম্নলিখিত প্রক্রিয়ায় কাজটি করা সম্ভব।
InputProcessOutput
a২টি সংখ্যাসংখ্যা ২টি যোগ করাযোগফল
b৩টি সংখ্যাগড় বের করাগড়
c১টি সংখ্যাজোড় না বিজোড় পরীক্ষা করাজোড় অথবা বিজোড়
Input-Process-Output – এই প্রক্রিয়ায় কাজ করার জন্য কম্পিউটারের বিভিন্ন অংশ ব্যবহৃত হয়। যাকে বলা হয় হার্ডওয়ার এবং সফ্টওয়ার।
হার্ডওয়ার এবং সফ্টওয়্যারঃ
কম্পিউটারের বিভিন্ন যন্ত্রাংশকে হার্ডওয়ার বলে। যেমন - Mouse, Keyboard, Microprocessor, Monitor, RAM ইত্যাদি। আর কম্পিউটারে ব্যবহৃত প্রোগ্রামগুলি হচ্ছে সফ্টওয়ার।

প্রোগ্রামিং ল্যাংগুয়েজ
সাধারনত আমরা বাংলা, ইংরেজী, হিন্দি, ফ্রেঞ্চ ইত্যাদি ভাষা বুঝে থাকি। কিন্তু কম্পিউটার শুধুমাত্র ইলেকট্রনিক্স সিগন্যাল বুঝে থাকে। এই ইলেকট্রনিক্স সিগন্যাল কে বলা হয় মেশিন ল্যাংগুয়েজ। একথা বলাই বাহুল্য যে কম্পিউটার এক ধরনের ইলেকট্রনিক্স যন্ত্র এবং এতে অসংখ্য লজিক গেট (Logic gate) রয়েছে। আর এ কেবলমাত্র ২টি লজিক বোঝে একটি হলো 0 (শুন্য) অর্থাৎ বিদ্যুত প্রবাহের অনুপস্থিতি এবং অপরটি হলো ১ (এক) অর্থাৎ বিদ্যুৎ প্রবাহের উপস্থিতি। এই শুন্য (0) এবং এক (১) এর এই পদ্ধতিকে বলে বাইনারী (Binary) পদ্ধতি। আমরা যেমন গানিতিক কার্যাবলী সম্পাদানের ক্ষেত্রে ০-৯ এই দশটি সংখ্যা নিয়ে কাজ করে থাকি। বাইনারী পদ্ধতিতে তেমনি শুন্য (০) এবং এক (১) এই দু’টি সংখ্যা ব্যবহার করা হয়। যেমন A কে কম্পিউটার 1000001 এবং B কে 1000010 হিসেবে রূপান্তরিত করে নেয়।
সুতরাং মেশিন ল্যাংগুয়েজ ব্যবহার করেও কম্পিউটারে প্রোগ্রাম লেখা যায় সেক্ষেত্রে ব্যাপারটি সময়সাপেক্ষ এবং কষ্টকরও বটে। এছাড়া মেশিন ল্যাংগুয়েজ ব্যবহার করে তৈরীকৃত প্রোগ্রাম বিভিন্ন মেশিনে চালানোর ক্ষেত্রে সীমাবদ্ধতা আছে। কাজেই পরবর্তীতে অর্থসূচক কিছু ইংরেজী সংকেত যেমন: SUM, ADD, LOAD, NULL ইত্যাদি ব্যবহার করে এক ধরনের ল্যাংগুয়েজ প্রবর্তন করা হয় যাকে বলা হয় অ্যাসেম্বলী ল্যাংগুয়েজ। এক্ষেত্রে 0 এবং 1 ব্যবহার না করে ইংরেজী সংকেত ব্যবহার করা হয়। তবে সাধারন ইংরেজীতে লেখা হলেও সেটি আবারও বাইনারী পদ্ধতিতে রূপান্তরিত হয় এবং বাইনারীতে প্রসেস হবার পর রেজাল্ট দেবার আগে আবারও ইংরেজীতে রূপান্তরিত হয়। এই রূপান্তরের কাজ করে যে প্রোগ্রাম বা সফ্টওয়ার তাকে বলা হয় অ্যাসেম্বলার। অ্যাসেম্বলী ল্যাংগুয়েজ তৈরীর সময়ই এর সাথে বিল্ট-ইন ভাবে অ্যাসেম্বলার তৈরী করা হয়েছে। সুতরাং আমরা অ্যাসেম্বলী ল্যাংগুয়েজে ইংরেজী সংকেত ব্যবহার করে প্রোগ্রাম লিখলে, অ্যাসেম্বলর তা মেশিন ল্যাংগুয়েজে রূপান্তর করে প্রয়োজনীয় কাজের সমাধান দিবে। তবে অ্যাসেম্বলী ল্যাংগুয়েজে প্রোগ্রাম লিখতে হলে একজন প্রোগ্রামারের কম্পিউটারের গঠন সম্বন্ধে প্রচন্ড ভাল জ্ঞান থাকা দরকার এবং তাকে একজন মেশিন বিশেষজ্ঞ হওয়ার দরকার হয়। তাই পরবর্তীতে কম্পিউটার ল্যাংগুয়েজকে সাধারনের ব্যবহার উপযোগী করে আরও প্রচুর প্রোগ্রামিং ল্যাংগুয়েজ তৈরী করা হয়। যারই উত্তরসূরী আজকের সি/সি ++ অথবা জাভা। এই জাতীয় ল্যাংগুয়েজে কাজ করার জন্য একজন প্রোগ্রামারের মেশিন বিশেষজ্ঞ হওয়ার দরকার হয় না। সাধারন ইংরেজী ভাষার মত করে এবং কিছু লজিক মেনে চলে এই প্রোগ্রামগুলে দিয়ে প্রোগ্রাম রচনা করা হয়ে থাকে।
কম্পাইলার ও ইন্টারপ্রেটর
কিছুদিন আগে আমার রাশিয়ান বন্ধু অ্যান বেড়াতে এসেছিল বাংলাদেশে। ওর আবার বেড়ানোতে ভীষন আগ্রহ এবং পছন্দের বাহন হলো রিক্সা। সমস্যা হ&&চ্ছ ও রাসান বোঝে কিন্তু বাংলা একেবারেই না, আর আমি বাংলা বুঝি রাশান একেবারেই না। ইংরেজীতে ও সাচ্ছন্দবোধ করে না। এবার বুঝুন বাধ্য হয়ে এক রিকসার তিনজন। আমাদের সাথে জুটিয়ে নিলাম রবিনকে ও রাশান কালচারাল সেন্টারে রাশান শেখায়, ব্যাস সমস্যান সমাধান হয়ে গেল। কাজেই আমাদের মাঝে রবিন দোভাষীয় কাজটি করে দিল। সাথে সাথে তিনজনের রিকসা করে ঢাকা ভ্রমন হয়ে উঠলো মজাদার।
ল্যাংগুয়েজের যতই উন্নতি হোক না কেন কম্পিউটারের ক্ষেত্রে একথা সবসময় সত্য যে সে বাইনারী পদ্ধতি (0 এবং 1) বা মেশিন ল্যাংগুয়েজ ছাড়া অন্য কোন ল্যাংগুয়েজ বোঝে না। কাজেই যতই আমরা সাবলিল ইংরেজীতে কম্পিউটারের প্রোগ্রাম রচনা করি না কেন; আমাদের ব্যবহৃত ল্যাংগুয়েজ এবং কম্পিউটারের মধ্যে একজন দোভাষীর দরকার হয়। যে কিনা ইংরেজীকে মেশিন ল্যাংগুয়েজে রূপান্তর করতে পারে। এরূপ রূপান্তরের কাজ যে প্রোগ্রাম বা সফ্টওয়ারটি করে থাকে থাকে আমরা বলি কম্পাইলার বা ইন্টারপ্রেটর। সুতরাং কম্পাইলার বা ইন্টারপ্রেটর হচ্ছে এক ধরনের ট্রান্সসিলেটর প্রোগ্রাম যা প্রোগ্রাম ল্যাংগুয়েজকে মেশিন ল্যাংগুয়েজে রূপান্তর করে। প্রতিটি প্রোগ্রামিং ল্যাংগুয়েজের নিজস্ব কম্পাইলার বা ইন্টারপ্রেটর রয়েছে। অ্যাসেম্বলী ল্যাংগুয়েজের ক্ষেত্রে এই কাজটি করার জন্য রয়েছে অ্যাসেম্বলার।
কম্পাইলার এবং ইন্টারপ্রেটর এর পাথর্ক্য
কম্পাইলার এবং ইন্টারপ্রেটর - এর মধ্যে কাজের দিক থেকে বেশ কিছু পার্থক্য রয়েছে।
কম্পাইলার
কম্পাইলার হাইলেভেল ল্যাংগুয়েজে লিখিত প্রোগ্রামকে সর্ম্পূন রূপে মেশিন ল্যাংগুয়েজে রূপান্তরিত করে। কম্পাইলার কোন একটি প্রোগ্রামের সম্পূর্ন Source Code-কে পড়ে, কোন ভুল না থাকলে Machine Code–এ রূপান্তরিত করে এবং প্রয়োজনীয় সাহায্যকারী ফাইল যুক্ত করে এক্সিকিউটেবল (বা.exe) ফাইলে রূপান্তরিত করে। পরবর্তীতে কম্পাইলার ছাড়াই অপারেটিং সিস্টেম থেকে প্রোগ্রামটি সরাসরি রান করানো যায়। যেমন আমরা যদি MS-Word এর Icon-এ ক্লিক করি তবে সরাসরি MS-Word চালু হয়। কারন WINWORD.exe নামে একটি exe ফাইল আগেই তৈরী করে রাখা হয়। কাজেই MS-Word কোন্ প্রোগ্রামিং ল্যাংগুয়েজ দ্বারা তৈরী এবং তাঁর কম্পাইলারের কোন প্রয়োজন হয় না। মনে করুন সি/সি ++ দিয়ে আপনি একটি গেম তৈরী করে ফাইলটির একটি নাম দিয়ে কম্পাইল করে .exe (এক্সিকিউটেবল) ফাইল তৈরী করলেন এবং ডেক্সটপে একটি Icon তৈরী করে রাখলেন। পরবর্তীতে বিভিন্ন সময়ে ওই Icon-এ ক্লিক করলেই গেমটি চালু হবে। এক্ষেত্রে আপনার মেশিনে সি/সি++ বা তাঁর কম্পাইলার না থাকলেও চলবে।
ইন্টারপ্রেটর
ইন্টারপ্রেটর সম্পূর্ন প্রোগ্রামকে একসাথে মেশিন ল্যাংগুয়েজে রূপান্তরিত করে না। ইন্টারপ্রেটর কোন একটি প্রোগ্রামের Source Code কে এক লাইন করে বা একটি স্টেটমেন্ট কে মেশিন ভাষায় রূপান্তর করে এবং ফলাফল প্রদান করে। এই কারনে ইন্টারপ্রেটর দ্বারা প্রোগ্রাম চালালে গতি কিছুটা কম হয় এবং ইন্টারপ্রেটর কোন এক্সিকিউটেবল (.exe) ফাইল তৈরী করে না, কাজেই পরবর্তীকালে ইন্টারপ্রেটরের সাহায্য ছাড়া সরাসরি অপারেটিং সিস্টেম এর সাহায্যে রান করানো যায় না ।
Contunue…..