অনলাইন ডেস্ক
প্রোগ্রামিং
প্রোগ্রামিং কি যদি প্রশ্ন করা হয়, তাহলে সংক্ষিপ্ত ভাবে বলা যায় কম্পিউটারকে কোন কিছু করতে ইন্সট্রাকশন দেওয়ার সিস্টেমটাই হচ্ছে প্রোগ্রামিং।
অনেক গুলো প্রোগ্রামিং ল্যাঙ্গুয়েজ রয়েছে। এক এক প্রোগ্রামিং ল্যাঙ্গুয়েজ এক এক কাজ করে। যেমন ওয়েব সাইট তৈরি করার জন্য রয়েছে এক ধরনের প্রোগ্রামিং ল্যাঙ্গুয়েজ, ডেস্কটপ সফটওয়ার তৈরি করার জন্য রয়েছে আরেক ধরনের প্রোগ্রামিং ল্যাঙ্গুয়েজ, মোবাইল অ্যাপ তৈরি করার জন্য রয়েছে অন্য ধরনের প্রোগ্রামিং ল্যাঙ্গুয়েজ। কিচ্ছু কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে আবার সব ধরনের সফটওয়ার বা অ্যাপই তৈরি করা যায়।
কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ অনেক বেশি কমপ্লিকেটেড। অনেক অনেক ফিচার থাকে। আবার কিচ্ছু কিছু প্রোগ্রামিং অনেক সহজ, অনেক অল্প কিছু ফিচার থাকে। সহজ হোক বা কঠিন, প্রোগ্রামিং ল্যাঙ্গুয়েজে যে কয়টি বিষয় থাকতেই হয়, তা হচ্ছেঃ
- data
- data structures
- flow control
ডাটা হচ্ছে যে কোন তথ্য। এই লেখা গুলোও একটা ডেটা, আমাদের নাম গুলো এক একটা ডেটা, এভাবে সব কিছু। যাই দেখি না কেন, তাই হচ্ছে ডেটা। তো একটা প্রোগ্রামিং এ এই ডেটা স্টোর করার সিস্টেম থাকতে হয়। না হলে তো প্রোগ্রামিং ল্যাঙ্গুয়েজ টি কাজই করতে পারবে না।
ডেটা এলোমেলো থাকলে তা কোন কাজে আসে না। ডেটা গুলো সাজিয়ে রাখার সিস্টেম ও প্রোগ্রামিং ল্যাঙ্গুয়েজে থাকতে হয়। যেমন কোন কিছু লিস্ট করার জন্য আমাদের লিস্ট দরকার। এই লিস্ট একটি ডেটা স্ট্র্যাকচার।
ফ্লো কন্ট্রোল হচ্ছে লজিক পার্ট। লজিক ছাড়া তো কম্পিউটার কাজ করতে পারে না। আর তাই প্রোগ্রামিং ল্যাঙ্গুয়েজও লজিক ছাড়া সম্পূর্ণ হতে পারে না। যেমন যতক্ষণ(while) বৃষ্টি হবে, আমি ঘুমিয়ে থাকব। এখানে এই যতক্ষণ বা while দিয়ে একটা ফ্লো কন্ট্রোল করা হচ্ছে। আবার যদি(if) বৃষ্টি হয়, আমি ভিজব। এখানে যদি বা if দিয়ে একটা কন্ডিশন দেওয়া হচ্ছে। কন্ডিশন, লজিক কন্ট্রোল এসব থাকে হয় একটা প্রোগ্রামিং ল্যাঙ্গুয়েজে।
ওয়েব প্রোগ্রামিং
ফ্রন্টএন্ডঃ আমরা যখন কোন ওয়েব সাইট ভিজিট করি, তা আমাদের কিছু কন্টেন্ট দেখায়। আমরা ওয়েব সাইট ভিজিট করলে যা কিছু দেখি, তাই হচ্ছে ফ্রন্টএন্ড।
আমরা যা কিছু দেখব, তা যারা ডেভেলপ করে, তাদের বলা হয় ফ্রন্টএন্ড ডেভেলপার। ফ্রটএন্ড তৈরি করতে যে ল্যাঙ্গুয়েজ গুলো দরকার হয়, তা হচ্ছে HTML, CSS, JavaScript। মাত্র এই তিনটি।
ব্যাকএন্ডঃ ওয়েব সাইটটা যে লোড হয় সাধারণত কোন সার্ভার থেকে। সার্ভারে সাধারণত ফ্রন্টএড কোডের পাশা পাশি আরো কিছু কোড লিখতে হয়। সাধারণত ফাংশনাল কোড গুলো। এগুলোকে বলা হয় ব্যাকএন্ড কোড।
ব্যাকএন্ড এর কোড গুলো যে লিখে, তাদের বলা হয় ব্যাকএন্ড ডেভেলপার। ব্যাকএন্ড ল্যাঙ্গুয়েজ গুলোর মধ্যে রয়েছে PHP, Python, JavaSctipt, Java ইত্যাদি। ফ্রন্টএন্ডের জন্য মাত্র তিনটে ল্যাঙ্গুয়েজ থাকলে ব্যাকয়েন্ডের জন্য রয়েছে অনেক অনেক ল্যাঙ্গুয়েজ।
আরও পড়ুন-কীভাবে ইংরেজি পড়ার অভ্যাস করব
ডেটাবেজ
প্রতিটা ওয়েব সাইটেই অনেক গুলো ডেটা থাকে। এই ডেটা গুলো স্টোর করে রাখার জন্য রয়েছে আবার ডেটাবেজ ম্যানেজমেন্ট ল্যাঙ্গুয়েজ। যা দিয়ে ডেটা গুলো সুন্দর ভাবে সাজিয়ে রাখা হয় এবং প্রয়োজন অনুসারে আবার ডেটা গুলো ব্যবহার করা যায়। ডেটা ম্যানেজ করার জন্য অনেক গুলো ডেটাবেজ ম্যানেজমেন্ট সিস্টেম রয়েছে। যেমন MySQL, Oracle DBMS, SQLite, PostgreSQL ইত্যাদি।
এই ওয়েব সাইট গুলো ভিজিট করার জন্য দরকার হয় আবার একটা সফটওয়্যার। যাকে আমরা বলি ওয়েব ব্রাউজার। এবং তাও একটা অ্যাপলিকেশন সফটওয়্যার।
ডেস্কটপ সফটওয়্যার প্রোগ্রামিং
ডেস্কটপ সফটওয়্যার বলতে যে কোন কম্পিউটারের সফটওয়ার গুলো। যাদের বলা হয় অ্যাপ্লিকেশন সফটওয়্যার। যেমন উইন্ডোজ, ম্যাক বা লিনাক্সের সফটওয়্যার গুলো। এ সফটওয়ার গুলো তৈরি করার জন্য রয়েছে অনেক গুলো ল্যাঙ্গুয়েজ। যেমন C, C++, C#, Swift, Java, Python।
এক এক অপারেটিং সিস্টেমের জন্য সফটওয়ার তৈরি করতে এক এক প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করা হয়। আবার কিছু কিছু প্রোগ্রামিং ল্যাঙ্গুয়েজ রয়েছে যে গুলো দিয়ে সব ধরনের অপারেটিং সিস্টেমের জন্য সফটওয়ার তৈরি করা যায়।
আবার এখনকার অ্যাপলিকেশন সফটওয়্যার গুলো তৈরি করতে দরকার হয় অনেক গুলো ল্যাঙ্গুয়েজ। একটা অ্যাপলিকেশনের অনেক গুলো অংশ থাকে। এক একটা অংশ এক একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে তৈরি করলে ভালো আউটপুট পাওয়া যায়। তাই এক একটা অংশ এক এক প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে তৈরি করে ফাইনালি বিল্ড করেই আমাদের জন্য ব্যবহার উপযোগী করা হয়। এরপর আমরা তা ইন্সটল করে ব্যবহার করতে পারি।
অপারেটিং সিস্টেম প্রোগ্রামিং
আমরা যে সফটওয়্যার গুলো ব্যবহার করি, সেগুলো সরাসরি কম্পিউটারে হার্ডওয়ারে ব্যবহার করা যায় না। দরকার হয় অন্য আরেকটা সফটওয়্যার, যেটা আমাদের ব্যবহৃত সফটওয়্যারটির কমান্ড গুলো হার্ডওয়ারে এক্সিকিউট করে আমাদের আউটপুট দিবে। ঐ স্পেশাল সফটওয়্যারটিই হচ্ছে অপারেটিং সিস্টেম। প্রতিটা কম্পিউটার চালাতেই এরকম একটা অপারেটিং সিস্টেমের দরকার হয়।
আমরা সাধারণত একটা সফটওয়্যারে কিছু কাজ করি। সফটওয়ারটি ঐ কাজ গুলো করার জন্য অপারেটিং সিস্টেমকে বলে। আর অপারেটিং সিস্টেম হার্ডওয়ারকে বলে কাজ গুলো করে দিতে। এরপর হার্ডওয়ার রেজাল্টটা অপারেটিং সিস্টেমকে দেয়। অপারেটিং সিস্টেম আমাদের সফটওয়্যারে রেজাল্টটা পাঠিয়ে দেয়। এরপর আমরা আমাদের কাজের আউটপুট পাই।
এই অপারেটিং সিস্টেমও তৈরি করা হয় প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে। যেমন এসেম্বলি ল্যাঙ্গুয়েজ বা সি প্রোগ্রামিং ল্যাঙ্গুয়েজ। আধুনিক অপারেটিং সিস্টেম গুলো তৈরি করতে অনেক গুলো ল্যাঙ্গুয়েজই ব্যবহার করা হয়। আবার আধুনিক অপারেটিং সিস্টেমের সাথে ব্যবহারকারীর সুবিধের জন্য অনেক গুলো অ্যাপ্লকিকেশন যুক্ত করা থাকে।
উপরে যা কিছু সম্পর্কে ধারণা নিয়েছি, এগুলোর মধ্যে একটা সম্পর্ক রয়েছে। সুন্দর সম্পর্ক।
যেমন ধরি আমাদের একটা কম্পিউটার রয়েছে। হোক ল্যাপটপ বা ডেস্কটপ। তো এই কম্পিউটার চালাতে তো একটা অপারেটিং সিস্টেম লাগবে, তাই না? ধরে নিচ্ছি আমাদের ঐ কম্পিউটারে একটা অপারেটিং সিস্টেম ইন্সটল করা রয়েছে, যেমন উইন্ডোজ।
এবার ঐ অপারেটিং সিস্টেমে একটা অ্যাপলিকেশন সফটওয়্যার রয়েছে, যা আমরা ব্যবহার করতে পারি। যেমন যে কোন ওয়েব ব্রাউজারই এক একটা অ্যাপলিকেশন সফটওয়্যার। ধরে নিচ্ছি আমাদের অপারেটিং সিস্টেমে একটা ওয়েব ব্রাউজার ইন্সটল করা রয়েছে। যেমন গুগল ক্রোম। এবার এই গুগল ক্রোমে আমরা কোন সাইট ভিজিট করলে যে ডেটা গুলো দেখি, তাই হচ্ছে ঐ ওয়েব সাইটের ফ্রন্টএন্ড। ওয়েব সাইটটা একটা সার্ভারে রাখা আছে, যাকে বলে ব্যাকএন্ড।। আর সার্ভারে রয়েছে আরেকটা অ্যাপলিকেশন, যাকে বলা যায় ওয়েব অ্যাপলিকেশন। যা কোন ওয়েব সাইট ভিজিট করলে কিছু ডেটা পাঠায়।
কত গুলো ধাপে আমরা একটা ওয়েব সাইট দেখতে পারি। প্রথমে অপারেটিং সিস্টেম, যা তৈরি করতে অনেক গুলো প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করা হয়েছে। এরপর ব্রাউজার নামক অ্যাপলিকেশন সফটওয়ার, যা তৈরি করতে অনেক গুলো প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করা হয়েছে। এরপর হচ্ছে ওয়েব সাইটটি। যার দুইটি অংশ। ব্যাকেন্ড এবং ফ্রন্টেন্ড। যার পেচ্ছনেও রয়েছে অনেক গুলো প্রোগ্রামিং ল্যাঙ্গুয়েজ ও ডেটাবেজ।
মোবাইল অপারেটিং সিস্টেমে
কম্পিউটার অপারেটিং সিস্টেমের মতই মোবাইল গুলো ব্যবহার করার জন্যও দরকার হয় অপারেটিং সিস্টেম। যেমন অ্যান্ড্রয়েড। এই অ্যান্ড্রয়েড অপারেটিং সিস্টেমে ব্যবহারকারী ব্যবহার করার জন্য দরকার হয় অনেক গুলো অ্যাপলিকেশন সফটওয়্যার। যাদের আমরা সংক্ষেপে অ্যাপ হিসেবেই জানি। এ অ্যাপ গুলো তৈরি করতেও বিভিন্ন প্রোগ্রামিং ল্যাঙ্গুয়েজের দরকার হয়। দরকার হয় ডেটাবেজ সিস্টেমেরও।
যেমন অ্যান্ড্রয়েড অ্যাপ তৈরি করতে ব্যবহার করা হয় জাভা বা কটলিন। আইওএস এর অ্যাপ তৈরি করতে ব্যবহার করা হয় সুইফট বা অবজেক্টিভ সি। আবার অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়েও এই অ্যান্ড্রয়েড বা আইওএস এর অ্যাপ তৈরি করা যায়।
কোড এডিটর
প্রোগ্রামিং এর কোড গুলো লেখার জন্য বিশেষ ধরনের টেক্সট এডিটর রয়েছে। এই কোড এডিটর গুলোতে কোড লিখলে কোডের এক এক অংশ এক এক ভাবে কালার করে হাইলাইট করে দেয়, যেন ডেভেলপারদের কোড লিখতে এবং পড়তে সুবিধে হয়।
আবার কোড ভুল ধরা, কিভাবে কোড লিখলে ভালো হবে, তা সাজেস্ট করা সহ অনেক গুলো ফিচার সহ কোড এডিটর রয়েছে। যাদের বলা হয় ইন্ট্রিগ্রেটেড ডেভেলপমেন্ট এনভারনমেন্ট বা IDE। এই কোড এডিটর বা আইডিই গুলোও তৈরি হয়েছে একটা না একটা প্রোগ্রামিং ল্যাঙ্গুয়েজ দিয়ে।
ভার্শন কন্ট্রোল
যে কোন সফটওয়্যার হোক বা অপারেটিং সিস্টেম হোক, এসবের জন্য লিখতে হয় অনেক অনেক কোড। কিছু সফটওয়্যারে হয়তো একজন কাজ করে। আবার কিছু সফটওয়্যারে কাজ করে কয়েক হাজার ডেভেলপার।
একজন হোক আর হাজার ডেভেলপার হোক, সাধারণ অনেক গুলো ফাইলে কোড লিখতে হয়। আমরা সকালে কি খেয়েছি, বিকেলেই তাই ভুলে যাই। ডেভেলপাররা তো এর ব্যাতিক্রম না। ওরা তো মঙ্গল গ্রহ থেকে আসে নাই। ওরাও সব ভুলে যায়। সকালে কি লিখেছে, কেন লিখেছে এসব মনে রাখার জন্য ওদের এমন কিছু একটার দরকার পড়ে যেন পরে যে কোন সময় বুঝতে পারে কখন কি লিখেছে, কেন লিখেছে। আবার মানুষ মাত্রই ভুল করে। ডেভেলপাররাও তো মানুষ, রোবট নয়, তাই তারাও ভুল করতে পারে। কোন ভুল করার পর যেন সহজেই আগের অবস্থায় ফিরে যেতে পারে, Ctrl Z এর মত। তার জন্য দরকার হয় একটা সিস্টেমের। ডেভেলপাররা নিজেরাই এমন একটা সিস্টেম তৈরি করে নিয়েছে, যাকে বলা হয় ভার্শন কন্ট্রোল সিস্টেম। এই ভার্শন কন্ট্রোল সিস্টেমের সাহায্যে একই প্রজেক্টে কয়েক হাজার ডেভেলপার কোন সমস্যা ছাড়াই কাজ করতে পারে। অনেক গুলো ভার্শন কন্ট্রোল সিস্টেম রয়েছে। গিট ওদের মধ্যে সবচেয়ে বেশি জনপ্রিয়।
এভাবে একজন হোক বা অনেক জন ডেভেলপার, একটা ল্যাঙ্গুয়েজ বা অনেক গুলো ল্যাঙ্গুয়েজ ব্যবহার করেই তৈরি করা হয় সফটওয়্যার গুলো। আমরা দেখি ফাইনাল আউটপুট। লেখাটাতে অনেক কিছু যুক্ত করার কারণে মনে হতে পারে এসব বুঝি অনেক কঠিন। আসলে জিনিস গুলো তেমন কঠিন নয়। অনেক সহজ। শুধু বুঝতে হয় কি করতে হবে, কেন করতে হবে। একটার সাথে আরেকটার সম্পর্ক। কোনটা কোথায় প্রয়োগ করতে হবে ইত্যাদি।
কঠিন লাগুক বা সহজ, এই বিষয় গুলো কিন্তু অনেক এক্সাইটিং। এসব নিয়ে কাজ করতে কি যে ভালো লাগে। চিন্তা করেন আপনি এত বছর যে সফটওয়ারটা ব্যবহার করে এসেছেন, এখন আপনি নিজেই এমন সফটওয়্যার তৈরি করতে পারছেন। দারুণ লাগবে না? দারুণ লাগারই কথা। প্রোগ্রামিং এ আগ্রহী হলে স্বাগতম সুন্দর এই দুনিয়ায়। পৃথিবী এখন আমাদের কন্ট্রোলে
Discussion about this post