প্রোগ্রামিং-এর মূল ধারণা

প্রোগ্রামিং-এর মূল ধারণা

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

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

সি প্রোগ্রাম কম্পাইলেশন এবং এক্সিকিউশন ফ্লো-চার্ট

সোর্স কোড (.c): আপনি যে কোডটি লিখেছেন

প্রিপ্রসেসর (Preprocessor): #include এর মতো ডিরেক্টিভগুলো প্রসেস করে এবং হেডার ফাইলের কোডগুলো যুক্ত করে এক্সপান্ডেড সোর্স কোড তৈরি করে।

কম্পাইলার (Compiler): এই এক্সপান্ডেড কোডকে হিউম্যান-রিডেবল থেকে এসেম্বলি কোডে রূপান্তর করে।

এসেম্বলার (Assembler): এসেম্বলি কোডকে নিয়ে মেশিনের বোধগম্য অবজেক্ট কোডে (.obj বা .o) রূপান্তর করে।

লিংকার (Linker): আপনার অবজেক্ট কোডের সাথে লাইব্রেরি ফাংশন (যেমন printf এর মূল কোড) লিংক করে একটি চূড়ান্ত এক্সিকিউটেবল ফাইল (.exe) তৈরি করে।

লোডার (Loader): এই .exe ফাইলটিকে কম্পিউটারের প্রধান মেমোরিতে (RAM) লোড করে এবং প্রসেসর সেটি এক্সিকিউট করে আমাদের আউটপুট স্ক্রিনে বা কনসোলে ফলাফল দেখায়।

প্রোগ্রামিং ভাষার প্রকারভেদ

প্রোগ্রামিং ভাষা মূলত দুই প্রকার:

  • Low-Level Languages: হার্ডওয়্যার-এর খুব কাছাকাছি। যেমন: মেশিন ভাষা, অ্যাসেম্বলি ভাষা।
  • High-Level Languages: মানুষের বোধগম্য এবং সহজে লেখা যায়। যেমন: Java, C, C++ ইত্যাদি।

কাজ করার ধরনের উপর ভিত্তি করেঃ

  • অবজেক্ট-অরিয়েন্টেড প্রোগ্রামিং: ডেটা ও ফাংশনগুলোকে 'অবজেক্ট' হিসেবে সংগঠিত করে এই প্রোগ্রামিং করা হয়। C++, Java, Python এর উদাহরণ।
  • স্ট্রাকচার্ড প্রোগ্রামিং: একটি প্রোগ্রামকে ছোট ছোট ধাপে বা স্ট্রাকচারে ভাগ করে প্রোগ্রামিং করা হয়। উদাহরণ- C, Pascal, Ada, COBOL, FORTRAN
  • ফাংশনাল প্রোগ্রামিং: গাণিতিক ফাংশনের মতো কোড লিখে প্রোগ্রাম তৈরি করা হয়। এটি ডেটা পরিবর্তনের চেয়ে কম্পিউটেশনের ওপর বেশি জোর দেয়। উদাহরণ - Haskell, Scala, Lisp, Clojure, Erlang, Elixir, F#, OCaml,
  • স্ক্রিপ্টিং প্রোগ্রামিং: এটি সাধারণত কোনো কাজ স্বয়ংক্রিয় করার জন্য ব্যবহৃত হয়। JavaScript একটি উদাহরণ, যা ওয়েব পেজে ইন্টারঅ্যাকটিভিটি যোগ করতে ব্যবহৃত হয়।
  • লজিক প্রোগ্রামিং: এটি কোনো কাজ সম্পন্ন করার জন্য যুক্তির উপর নির্ভর করে। Prolog একটি লজিক প্রোগ্রামিং ভাষার উদাহরণ।

স্ট্রাকচারাল প্রোগ্রামিং

  • এই প্রোগ্রামিং প্যাটার্নে প্রোগ্রামকে ছোট ছোট মডিউল বা ফাংশন এর মাধ্যমে ভাগ করে প্রবলেমটি সমাধান করা।
  • C একটি স্ট্রাকচারাল প্রোগ্রামিং ল্যাঙ্গুয়েজ কারণ এটা প্রোগ্রামিং সমস্যার সমাধানের জন্য একটি সঠিক স্ট্রাকচার/প্যাটার্ন প্রদান করে।

Structured এবং Object-oriented Programming

Structured ProgrammingObject-Oriented Programming
সুনির্দিষ্ট নিয়ন্ত্রিত একটা কাঠামোর উপর ভিত্তি করে করা হয় বলে এটাকে স্ট্রাকচার্ড বলা হয়।এটা অবজেক্ট এবং ক্লাস এর উপর নির্ভর করে ডেভেলপ করা হয় বলে অবজেক্ট অরিয়েন্টেড প্রোগ্রামিং বলা হয়।
প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা হয় যাকে ফাংশন বলে।প্রোগ্রামকে ছোট ছোট অংশে ভাগ করা হয় যাকে অবজেক্ট বলে।
ফাংশনে ডাটা এড করা অপেক্ষাকৃত কঠিনফাংশনে ডাটা এড করা অপেক্ষাকৃত সহজ
প্রোগ্রামিং কনসেপ্ট তুলনামূলক সহজ।প্রোগ্রামিং কনসেপ্ট তুলনামূলক কঠিন।
ডাটা সিকিউরিটি ফিচার যেমন Abstraction, Encapsulation এর মত ফিচার নাই।ডাটা সিকিউরিটি ফিচার যেমন Abstraction, Encapsulation ইত্যাদি আছে যা ডাটা সিকিউরিটি বাড়ায়।
একই নামে একাধিক ফাংশান তৈরি করা সম্ভব নয়।একই নামে একাধিক ফাংশান তৈরি করা সম্ভব যেমন Overloading এর মাধ্যমে।
এখানে ডাটার চেয়ে ফাংশন বেশী গুরুত্বপূর্ণ।এখানে ডাটা বেশী গুরুত্বপূর্ণ ফাংশনের চেয়ে।
এই প্রোগ্রামিং ল্যাংগুয়েজে কোডে "Top-Down" আপ্রোচ অনুসরণ করে।এই প্রোগ্রামিং ল্যাংগুয়েজে কোডে "Bottom-Up" আপ্রোচ অনুসরণ করে।
তুলনামূলক ফ্লেক্সিবিলিটি কম।তুলনামূলক ফ্লেক্সিবিলিটি বেশি।
উদাহরণ: C, Fortran, Pascal, Algol etc.উদাহরণ: C++, Java, Python, C# etc.