ফান্ডামেন্টাল অব কোডিং এন্ড প্রোগ্রামিং

 



কোডিং ও প্রোগ্রামিং এই দুইটা শব্দের সাথে আমরা সবাই মোটামুটি পরিচিত। অনেকে প্রোগ্রাম বলতে যা বুঝে, কোডিং বলতেও তা বুঝে। কিন্তু আদতে দুটি আলাদা ব্যপার, তাদের কাজও আলাদা।


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


প্রথমেই আমাদের বুঝতে হবে কোড আর প্রোগ্রাম এক না! এদের মধ্যে অনেক পার্থক্য আছে। প্রথমেই এই দুইটার একটা খোলাসা করি।

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

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

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

কোডিং ও প্রোগ্রামিং এর ফান্ডামেন্টাল বিষয় হলো কোনো প্রোগ্রামিং ল্যাঙ্গুয়েজ কম্পিউটারের ভাষা না! কম্পিউটারের ভাষা হলো বাইনারি! জাস্ট 1 এবং 0 !  বাইনারি হচ্ছে সবচেয়ে ব্যাসিক যেটা কম্পিউটার খুব সহজে বুঝতে পারে! আসলে যেটা কম্পিউটারের মাতৃভাষা, সেটা সহজে না বুঝলে আর কোন ভাষা বুঝবে?

এই বাইনারিকে মেশিন ল্যাঙ্গুয়েজ বা মেশিন ভাষা বলা হয়। 0 বলতে বুঝায়  ০-২ ভোল্ট বিদ্যুৎ। 1 মানে হলো ৩-৫ ভোল্ট বিদ্যুৎ।

এই ভাষা (মেশিন ল্যাঙ্গুয়েজ) বুঝতে আমাদের দম বের হয়ে যাবে এটাই স্বাভাবিক। তাই কিছু কোডিং ল্যাঙ্গুয়েজ ব্যবহার করা হয় যা কম্পাইলিং এর কাজ করে৷ অর্থাৎ আমাদের ভাষায় দেওয়া ইন্সট্রাকশনকে কম্পিউটারের বোধগম্য করে। যেমন পাইথন, সি, জাভা, জাভাস্ক্রিপ্ট, সি প্লাস প্লাস, রুবি, সুইফট, উবুন্টু, কোটলিন ইত্যাদি ইত্যাদি ইত্যাদি! ৭০০ টি প্রোগ্রামিং ল্যাঙ্গুয়েজ এর নাম লেখা সম্ভব হচ্ছে না। হ্যা, এখন পর্যন্ত প্রায় ৭০০ টির মতো  প্রোগ্রামিং ল্যাঙ্গুয়েজ আছে(গুগল ডিজিটাল গ্যারেজ এর মতে। সব মিলিয়ে সঠিক সংখ্যা হাজারের উপরে)!

প্রোগ্রাম মানে হলো কম্পিউটারকে ইন্সট্রাকশন দেওয়া। কিন্তু কম্পিউটার কী আর আমাদের ভাষা বুঝে? তার মাতৃভাষা হলো "মেশিন ল্যাঙ্গুয়েজ"। তাহলে আমরা কীভাবে কম্পিউটারকে ইন্সট্রাকশন দেব? মেশিন ল্যাঙ্গুয়েজেই দিতে হবে। কিন্তু মেশিন ল্যাঙ্গুয়েজ আমরা বুঝতে পারি না। তাই আমরা কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করি। যেই ল্যাঙ্গুয়েজ প্রোগ্রামকে কম্পিউটারের বোধগম্য করে। অর্থাৎ ইন্সট্রাকশন গুলো কম্পিউটারকে বুঝিয়ে দেয়।

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

কম্পিউটারকে আমি নির্দেশ দিতে পারি ১-১০ পর্যন্ত সংখ্যার যোগফল বের করতে। এবং সেই নির্দেশ আমি ৭০০ টি প্রোগ্রামিং ভাষায় দিতে পারি।

সেই ৭০০ টি নির্দেশ আলাদা ল্যাঙ্গুয়েজে লেখা হলেও, প্রতিটি প্রোগ্রাম কোডটিকে কম্পিউটারের বোধগম্য কোডে রুপান্তর করবে।

৭০০ টি ভাষাকে প্রোগ্রাম রচনা করার ভিত্তিতে যদি বিভিন্ন স্তরে বিভক্ত করি, তাহলে ৪ টি স্তর পাবো। লো লেভেল ল্যাঙ্গুয়েজ, মিড লেভেল ল্যাঙ্গুয়েজ, হাই লেভেল ল্যাঙ্গুয়েজ, ভেরি হাই লেভেল ল্যাঙ্গুয়েজ। এখন এই চারটি স্তরকে "কম্পিউটার কীভাবে বুঝে" তার উপর ভিত্তি করে দুইটা ক্যাটাগরিতে ফেলতে পারি। ১. লো লেভেল অব এবস্ট্রাকশন, ২. হাই লেভেল অব এবস্ট্রাকশন। এবস্ট্রাকশন যত লো হবে, সেই ল্যাঙ্গুয়েজ ততই মেশিন ল্যাঙ্গুয়েজের কাছাকাছি থাকবে।

লো লেভেল অব এবস্ট্রাকশন যেমন সি, অ্যাস্যাম্বলি ল্যাঙ্গুয়েজ এগুলো বাইনারির অনেক কাছাকাছি। অর্থাৎ কম্পিউটার সহজে বুঝতে পারে৷ যার ফলে কম্পাইলিং করার সময় কম্পিউটারের উপর কম ধকল যায়। কম সময়ে, কম শক্তি খরচ করে কম্পিউটার বা মেশিন প্রোগ্রাম পড়তে পারে বা বুঝতে পারে৷ এর জন্য ছোট খাট মাইক্রপ্রসেসর বা কম্পিউটারে লো লেভেল অব এবস্ট্রাকশন ব্যবহার করা হয়। যেমম ঘড়ি, ফ্রিজ, গাড়ির, ট্রাফিক লাইট ইত্যাদির কিছু প্রোগ্রাম ইত্যাদি। সি অথবা অ্যাস্যাম্বলি বা এরকম লো লেভেল অব এবস্ট্রাকশন ব্যবহার করে এগুলো প্রোগ্রাম করা হয়।

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

পাইথন
পাইথন হাই লেভেল অব এবস্ট্রাকশন ল্যাঙ্গুয়েজ


মোবাইল, ডেস্কটপ এপ্লিকেশন, অপারেটিং সিস্টেম ইত্যাদি তৈরিতে হাই লেভেল অব এবস্ট্রাকশন ব্যবহার করা হয়৷

ডেটা স্টোর, এক্সেস করতে হাই লেভেল ল্যাঙ্গুয়েজ যেমন এসকিউএল ব্যবহার করা হয়। ডেটা এনালাইসিস করতে পাইথন ব্যবহার করা হয়। প্রত্যেকটি ভাষার কাজ একই হলেও এগুলোর নিজস্ব একটি ইউনিক কোয়ালিটি আছে। একেকটা একেক বিষয়ে এক্সপার্ট। কিন্তু সব কাজই করতে পারে।

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

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

শুধু দেখতে হবে কোন কাজে কোন ল্যাঙ্গুয়েজ ব্যবহার করা সুবিধাজনক, কোন ক্ষেত্রে কোন ল্যাঙ্গুয়েজ পারফেক্ট ইত্যাদি।

এটাই হচ্ছে মূলত ফান্ডামেন্টাল অব কোডিং এন্ড প্রোগ্রামিং

তথ্যসুত্রঃ ১. গুগল ডিজিটাল গ্যারেজ (https://learndigital.withgoogle.com/digitalgarage)

২.Techterms(https://www.google.com/amp/s/techterms.com/amp/definition/high-level_language)

৩. ComputerHope (https://www.computerhope.com/jargon/l/lowlangu.htm)

৪.CodeMentor(https://www.codementor.io/@edwardbailey/coding-vs-programming-what-s-the-difference-yr0aeug9o)

৫.Devskiller(https://devskiller.com/how-many-programming-languages/)

Post a Comment

0 Comments