পাইথন প্রোগ্রামিং ভাষার প্রবক্তা হলেন ডাচ কম্পিউটার বিজ্ঞানী গুইডো ভ্যান রসাম (Guido van Rossum)। ১৯৮০-এর দশকের শেষের দিকে নেদারল্যান্ডসের Centrum Wiskunde & Informatica (CWI) গবেষণাগারে ABC ভাষার উত্তরসূরি হিসেবে তিনি পাইথনের বিকাশ শুরু করেন এবং ১৯৯১ সালের ফেব্রুয়ারিতে এর প্রথম সংস্করণ আনুষ্ঠানিকভাবে প্রকাশিত হয়। পাইথনের মূল দর্শন হলো প্রাঞ্জল কোড লিখন, স্পষ্ট সিনট্যাক্স এবং বহু-পদ্ধতিগত প্রোগ্রামিং সমর্থন (প্রসিডিউরাল, অবজেক্ট-ওরিয়েন্টেড ও ফাংশনাল)।
- হাইব্রিড অনুবাদ ব্যবস্থা (Hybrid Execution): পাইথন সম্পূর্ণ কম্পাইল্ড (যেমন C/C++) বা সরাসরি লাইন-বাই-লাইন ইন্টারপ্রেটেড ভাষা নয়। আদর্শ সি-পাইথন (CPython) প্রথমে সোর্স কোডকে একটি মধ্যবর্তী বাইটকোডে (.pyc) সংকলন করে এবং পরবর্তীতে ভার্চুয়াল মেশিনের মাধ্যমে কার্যকর করে।
- ডায়নামিক টাইপিং (Dynamically Typed): কোডে চলকের ডেটা টাইপ আগে থেকে ঘোষণা করতে হয় না; রানটাইমে অবজেক্টের মানের ওপর ভিত্তি করে স্বয়ংক্রিয়ভাবে টাইপ নির্ধারিত হয়।
- স্বয়ংক্রিয় মেমরি ব্যবস্থাপনা: রেফারেন্স কাউন্টিং (Reference Counting) এবং সাইক্লিক গারবেজ কালেক্টরের মাধ্যমে অব্যবহৃত মেমরি স্বয়ংক্রিয়ভাবে মুক্ত হয়।
- ব্যাটারিজ ইনক্লুডেড (Batteries Included): গণিত, ফাইল সিস্টেম, নেটওয়ার্কিং, স্ট্রিং প্রসেসিং ইত্যাদির জন্য সমৃদ্ধ স্ট্যান্ডার্ড লাইব্রেরি বিল্ট-ইন থাকে।
| ধাপ | যন্ত্রাংশ / প্রক্রিয়া | কার্যপ্রণালী ও আউটপুট |
|---|---|---|
| ১. লেক্সিক্যাল অ্যানালিসিস | টোকেনাইজার (Tokenizer) | সোর্স কোডকে ক্ষুদ্র ক্ষুদ্র উপাদান বা টোকেনে বিভক্ত করে (কিওয়ার্ড, আইডেন্টিফায়ার, লিটারেল, অপারেটর ও ইনডেন্টেশন টোকেন INDENT/DEDENT)। |
| ২. সিনট্যাক্স পার্সিং | পার্সার (Parser) | সিনট্যাক্স ব্যাকরণ যাচাই করে মেমরিতে অ্যাবস্ট্রাক্ট সিনট্যাক্স ট্রি (AST) গঠন করে। কোনো ব্যাকরণগত ভুল থাকলে এই পর্যায়েই SyntaxError ঘটে। |
| ৩. বাইটকোড কম্পাইলেশন | কোড জেনারেটর | AST থেকে প্ল্যাটফর্ম-স্বাধীন ইন্টারমিডিয়েট বাইটকোড (.pyc) তৈরি হয় যা pycache ডিরেক্টরিতে ক্যাশ হিসেবে জমা থাকে। |
| ৪. ভার্চুয়াল মেশিন রানটাইম | পাইথন ভার্চুয়াল মেশিন (PVM) | একটি স্ট্যাক-ভিত্তিক ইন্টারপ্রেটার ইঞ্জিন যা বাইটকোডের প্রতিটি নির্দেশ ধারাবাহিকভাবে পড়ে কম্পিউটারের প্রসেসরে কার্যকর করে। |
অন্যান্য ভাষার মতো পাইথনে কোড ব্লক বোঝাতে দ্বিতীয় বন্ধনী {} ব্যবহৃত হয় না। এর পরিবর্তে ইনডেন্টেশন বা শূন্যস্থান ব্যবহৃত হয়:
- ইনডেন্টেশনের নিয়ম (PEP 8): প্রতি কোড ব্লকের জন্য আদর্শ হলো ঠিক ৪টি স্পেস (Spaces) ব্যবহার করা। ট্যাব ও স্পেসের মিশ্রণ সম্পূর্ণ নিষিদ্ধ (পাইথন ৩-এ এটি
TabErrorঘটায়)। - চলকের নামকরণের শর্ত (Identifiers): বর্ণমালা বা আন্ডারস্কোর (
_) দিয়ে নাম শুরু হতে হবে, কোনো সংখ্যা দিয়ে শুরু হতে পারবে না। পাইথন কেস-সেনসিটিভ (যেমনNumওnumপৃথক)। সংরক্ষিত কিওয়ার্ড (যেমনdef, class, if, while) চলক হিসেবে ব্যবহৃত হতে পারে না। - কমেন্ট ও ডকস্ট্রিং: এক লাইনের মন্তব্যের জন্য
#ব্যবহৃত হয়। ফাংশন বা ক্লাসের ডকুমেন্টেশনের জন্য ট্রিপল কোট"""..."""ডকস্ট্রিং হিসেবে ব্যবহৃত হয় যা.docদিয়ে পড়া যায়।