compiler_interpreter

কম্পাইলার, ইন্টারপ্রেটর, আই ডি ই (Compiler, Interpreter, IDE )

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

কিন্তু তিনি এ কাজের জন্য একজন রাখার পরিবর্তে দুইজনকে রেখেছেন কারন তাদের দুইজনের কাজের মধ্যে পার্থক্য আছে। পলা ক্লায়েন্টের সকল কথা শুনে তারপর গনক সাহেবকে বলে আর পিটু এক লাইন করে শুনে আর ওই লাইনটা বলে।

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

গনক সাহেব -> কম্পিউটারঃ কম্পিউটার শুধুমাত্র একটি মাত্র ভাষা নিয়ে থাকে আর তা হল বাইনারী। অর্থাৎ কম্পিউটার শূন্য আর এক ছাড়া কিছুই বোঝে না। তাকে কিছু বোঝতে গেলে অবশ্যই ০ বা ১ দিয়ে বোঝাতে হবে।

পলা -> কম্পাইলারঃ কম্পাইলার আমাদের সোর্স-কোড পুরোটা আগে চেক করে কোনো ভুল আছে কি না। ভুল থাকলে এরর দেখায় এবং কোড কাজ করে না। সম্পুর্ন ভুল-মুক্ত করার পর সোর্স-কোডকে মেশিনকোডে অনুবাদ করে।

পিটু -> ইন্টারপ্রেটরঃ এর কাজ হল সোর্স-কোড থেকে একটি করে ইন্সট্রাকশন নিয়ে তাকে মেশিনকোডে নিয়ে যাওয়া এবং সে অনুযায়ী কাজ করা।

compiler_interpreter

কম্পিউটার হল একাধিক হার্ডওয়ারের সমস্টি । এ সকল হার্ডওয়্যার কম্পিউটার মেমোরির সংরক্ষিত অবজেক্ট কোডের ইন্সট্রাকশন অনুযায়ী কাজ করে । অবজেক্ট কোড হল ০ আর ১ এর সমন্বয়ে গঠিত স্ট্রিং । কম্পিউটার কন্ট্রোল বাইনারী বিটের এই স্ট্রিংকে প্রথমে ভোল্টেজ লেভেল এবং পরে ভোল্টেজ লেবেল থেকে হার্ডওয়্যার উপযোগী ইন্সট্রাকশন প্রেরন করে ।

অবজেক্ট কোডকে ভোল্টেজ লেভেলে কনভার্ট করা, ভোল্টেজ লেবেল থেকে হার্ডওয়্যার উপযোগী ইন্সট্রাকশন প্রেরন করা ও সব শেষে হার্ডওয়্যার দ্বারা কাজ করানো এ সব কিছুকেই বলা হয় Interpretation ।

অবজেক্ট কোডকে মেশিন ল্যাঙ্গুয়েজ কোডও বলা হয় । আমাদের জন্য মেশিন ল্যাঙ্গুয়েজে কোড করা খুব কঠিন, কারন মেশিন ল্যাঙ্গুয়েজ কোড শুধুমাত্র ০ আর ১ দিয়ে তৈরী। এদেরকে low level language বলা হয়। Low level language কম্পিউটার হার্ডওয়্যার এর জন্য উপযোগী, মানুষের জন্য নয়। মানুষের জন্য উপযোগী হল Higher level language, যাকে Source language ও বলা হয়ে থাকে। c++,java ইত্যাদি Higher level language এর উদাহরন ।

 

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

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

এই মেশিন ল্যাঙ্গুয়েজ প্রোগ্রামটি এরপর কম্পিউটার মেমরিতে সেভ হয় এবং পরবর্তীতে কম্পিউটার হার্ডওয়্যার দ্বারা এই ইন্সট্রাকশনগুলো এক্সিকিউট করানো হয়।

কম্পাইল করা কোন সোর্স প্রোগ্রামকে মেশিন ল্যাঙ্গুয়েজ প্রোগ্রামে অনুবাদ করার পর সেটিকে যখন খুশি যতবার খুশি এক্সিকিউট করানো যায়। বার বার এক্সিকিউট করার জন্য বারবার কম্পাইল করার দরকার হয় না। তবে মেশিন লেঙ্গুয়েজের প্রোগ্রামটি মুল প্রোগ্রাম থেকে অনেক বড় হয়।

 

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

বোঝাই যাচ্ছে কম্পাইলার, ইন্টারপ্রেটর অপেক্ষা জটিল। কিন্তু কম্পাইলারের এক্সিকিউসন প্রসেস অনেক দ্রুত।

বর্তমানে অনেক জায়গায় কম্পাইলার ও ইন্টারপ্রেটর একসঙ্গে ব্যাবহার করা হয়। কম্পাইলার সোর্স প্রোগ্রামকে low level language ও high level language এর মাঝামাঝি একটি ল্যাঙ্গুয়েজে অনুবাদ করে যা পরবর্তীতে ইন্টারপ্রেটর দ্বারা এক্সিকিউট করানো হয়।

bytecode

একটি সাধারন ধারনা আছে যে প্রোগ্রামিং ল্যাঙ্গুয়েজগুলো মূলত দুই ভাগে বিভক্ত

  • কম্পাইলড (কম্পাইলার ব্যাবহার করে)
  • ইন্টারপ্রেটেড (ইন্টারপ্রেটর ব্যাবহার করে)

কিন্তু আসলে তা ভুল। আমরা ইতিমধ্যে জেনেছি যে কম্পাইলার আর ইন্টারপ্রেটরের কার অনুবাদ করা শুধুমাত্র তাদের অনুবাদ পদ্ধতিটি আলাদা। তাই একটি সোর্স ল্যাঙ্গুয়েজ কম্পাইল্ড ও ইন্টারপ্রেটেড দুই রকমের হইতে পারে। যেমনঃ সি দিয়ে লেখা কোন কোড কম্পাইলড বা ইন্টারপ্রেটেড যে কোন রকম হইতে পারে।

 

IDE -> Integrated development environment:

IDE

আমাদের প্রায় সবার বাসায় রিমোট নিয়ন্ত্রিত টেলিভিশন আছে। রিমোট দিয়ে যে সব কাজ করানো যায় টিভির কী প্রেস করেও সেই সব কাজ করানো যায়। কিন্তু তারপরেও আমরা রিমোট ব্যাবহার করি কারন রিমোট আমাদের বাড়তি কিছু সুবিধা দেয়, যেমনঃ দূর থেকে নিয়ন্ত্রন করা, একাধিক চেনেল জাম্প করে যাওয়া ইত্যাদি। অর্থাৎ রিমোট টিভির ব্যাবহারকে আমাদের কাছে সহজ করে তোলে।

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

অনেক্ষন ধরে নন-স্টপ বকরবকর করলাম। পোস্টটি থেকে আপনাদের কোন উপকার হইলে ভালো লাগবে। ভুল কিছু পেলে অবশ্যই জানাবেন।
[এখানে আমি শুধু High level এবং low level language সম্পর্কে বলেছি। Middle level language এর কোথাও কোন কোন জায়গায় উল্লেখ আছে, সি কে Middle level language বলা হয়, তবে দ্বিমত আছে।
এখানে আমি কম্পাইলার এর কার্যপ্রণালী সম্পর্কে বর্ননা করি নি। তবে ভবিষ্যতে করার চিন্তা ভাবনা আছে।
IDE অংশে আমি শুধু কম্পাইলারের কথা বলছি, ইন্টারপ্রেটরের কথা বলি নি, কারন নতুন করে আলাদাভাবে বলে আরো দীর্ঘ করতে চাই নি।]

43 comments

  1. Arif says:

    আসলেই, অসাধারন।

  2. SwadhIn says:

    Bro..erkm post aro chai…tahole amdr esb jotil jinish bujha onk easy hbe! Sorry banglish_e cmnt krar jno..

  3. মেহেদি হাসান says:

    Keep on boss.

  4. Md. Olioul Islam says:

    অসাধারণ , চালায় যাও শরীফ

  5. Tahmid says:

    আনন্দিত… উচ্ছসিত… আর হাল্কা পাতলা ঈর্ষান্বিত। ১ লাইন করে অনুবাদ আর পুরো একটা প্রোগ্রাম এর অনুবাদ ব্যাপারটা জানা ছিল। কিন্তু জানার মধ্যেও যে কত অজানা ছিল সেটা এখন দেখলাম।
    Keep going bro.. মন থেকে দোয়া থাকল।

  6. Shohag Nawaz says:

    Awesome Tutorial. Thanks a lot Sharif vai. We prayer for you. Go ahead.

  7. Ferdous says:

    আর্টিকেল টা পড়লে কম্পাইলার বইটার একটা ধারনা পাওয়া যাবে এবং পড়তে সহজ হবে। ধন্যবাদ শরীফ কে এই সুন্দর আর্টিকেলটার জন্য ।

  8. shahed says:

    thanks

  9. Abdullah Al Kutub says:

    vvvveeeeeerrrrrrryyyyyyyy
    ggggooooooooodddddd

  10. sakib ezio says:

    Awesome ……thanx for that Sharif vai..

  11. sakib ezio says:

    Awesome ….☺☺☺

  12. বরাবরের মতই অসাধারণ আপনার পোস্ট

  13. nurul akhand says:

    Great

    Nurul Akhand from Frankfurt Germany

  14. নাজিয়া তাসনিম says:

    যদিও এসব সম্পর্কে ধারণা নেই, পোস্টটা পড়ে এটা অবশ্যই বুঝলাম, খুব যত্ন করে লিখেছেন। শুভকামনা সতত। :)

  15. Anwar Palash says:

    Why i did not get u before!!!!!!!!!

  16. Hachibur says:

    অনেক অনেক শুভ কামনা রইল।

  17. mahmudul says:

    ভাই, আপনার এই পোষ্টটা আরও আগে যদি পড়তাম তাহলে ct তে আরও ৪ টি mark বেশি পাইতাম। যাই হোক, অনেক কিছু জানলাম। ধন্যবাদ ভাই……

  18. shohan says:

    vaia .thnks. Please Apni ki janaben c programing sekhar dhapgulo ki ki

  19. Mohammad Zubair says:

    ভাইয়া, আপনার ভিডিও টিউতোরিয়াল গুলো আমার খুব ভালো লেগেছে। আপনাকে অনেক অনেক ধন্যবাদ।

  20. Mohammad Zubair says:

    ভাইয়া, আপনার ভিডিও টিউটোরিয়াল গুলো আমার খুব ভালো লেগেছে। আপনাকে অনেক অনেক ধন্যবাদ।

  21. uzzal says:

    Thanks for posted…

  22. uzzal says:

    thanks

  23. Oboseshe Ami says:

    Excellent..

  24. touhidalamin says:

    Nice post very helpful for us. Thanks

  25. uzzal says:

    good topices

  26. Topon roy says:

    Onek valo laglo thanks.

  27. Md. Osman Ali says:

    Your writing and YouTube videos are very helpful to me as I am a beginner of C programming!!!

  28. মো: অালী হোসেন says:

    অনেক ভালো হয়েছে। ভালো লাগলো ভাইয়া।

  29. ahsan habib says:

    ভাই আমি কি c না শিখে c++ শিখতে পারি। জানালে খুব ভালো হয়। আর c এবং c++ এর মধ্যে পার্থক্যটা একটু বলবেন।

  30. ahsan habib says:

    ভাই আমি কি c না শিখে c++ কি শিখতে পারি। জানালে খুব ভালো হয়। আর c এবং c++ এর মধ্যে পার্থক্যটা একটু বলবেন।

Leave a Reply

Your email address will not be published. Required fields are marked *