এই পর্বে যা শিখবেন
- এই কোর্স কীভাবে সাজানো — পর্ব, ডায়াগ্রাম, কোড, কুইজ, পরীক্ষা ও সার্টিফিকেট
- Python-এর মূল চিন্তা: পড়ার সুবিধা, “batteries included” আর বিশাল ইকোসিস্টেম
- Python কোথায় চলে, কীভাবে জন্মাল, আর কে এখন এর দেখাশোনা করে
- C, C++, Java, JavaScript-এর সাথে সৎ তুলনা — কোন কাজে কোন ভাষা
- AI-এর লেখা Python কোড পড়া ও যাচাইয়ের প্রথম চেকলিস্ট
১ · স্বাগতম — এই কোর্স কীভাবে চলে
ABCL TECH-এর Python কোর্সে আপনাকে আন্তরিক স্বাগতম। আপনি হয়তো স্কুল বা কলেজে পড়েন, হয়তো বিশ্ববিদ্যালয়ে পড়ছেন, হয়তো চাকরির পরীক্ষার প্রস্তুতি নিচ্ছেন, হয়তো ডেটা বা AI-এর দিকে যেতে চান, কিংবা হয়তো আপনি এর মধ্যেই অন্য কোনো ভাষায় কাজ করেন। যেখান থেকেই আসুন — এই কোর্স আপনার জন্যই বানানো।
আগে কোনো প্রোগ্রামিং জানার দরকার নেই। অনেকের কাছে Python-ই প্রথম ভাষা, আর আমরা একদম শুরু থেকে শুরু করব। যাঁরা আমাদের C কোর্স বা C++ কোর্স থেকে এসেছেন, তাঁদের জন্য মাঝে মাঝে “C/C++ জানলে” নামে ছোট একটি বাক্স থাকবে। যাঁরা C পড়েননি, তাঁরা বাক্সটি নিশ্চিন্তে বাদ দিতে পারেন।
এই কোর্সে ৮টি মডিউলে মোট ৫৫টি পর্ব আছে। প্রতিটি পর্ব একই ছাঁচে সাজানো, যাতে কয়েকটি পর্ব পড়ার পর আপনি জানেন কোথায় কী পাবেন:
কনসেপ্ট আগে
প্রথমে “কেন” আর “ভেতরে কী ঘটে” — তারপর কোড। মুখস্থ নয়, বোঝা। বাংলাদেশের চেনা উদাহরণ দিয়ে ব্যাখ্যা।
উপমা, ছবি, ইতিহাসধাপে ধাপে ডায়াগ্রাম
“পরে” বোতাম চেপে চেপে দেখবেন কোড, ডেটা বা প্রক্রিয়া কীভাবে বদলায় — স্থির ছবিতে যা বোঝানো যায় না।
শেখার প্রতি পর্বে অন্তত ৩টিপাতাতেই চালানো যায় এমন কোড
ছোট, এক-ধারণার কোড, যা এই পাতাতেই “Run” চেপে চালাতে পারবেন। কিছু ইনস্টল না করেও শুরু করা যায়।
আধুনিক Python 3কুইজ, পরীক্ষা, সার্টিফিকেট
প্রতি পর্বের শেষে কুইজ আর শব্দকোষ। ড্যাশবোর্ডে মডিউল টেস্ট আর ফাইনাল পরীক্ষা দিয়ে সার্টিফিকেট নিতে পারবেন।
সম্পূর্ণ বিনামূল্যেলেখার ভেতরে ডটেড দাগ দেওয়া শব্দে মাউস রাখলে বা চাপলে তার সহজ বাংলা মানে দেখাবে; পর্বের শেষে “শব্দকোষ” অংশে সব একসাথে পাবেন। অগ্রগতির নিয়মটিও সহজ। লগইন করলে (Google বা ইমেইল দিয়ে) প্রতিটি পর্বের শেষে “পড়া শেষ” চিহ্ন দিতে পারবেন, আর সেটা যেকোনো ডিভাইস থেকে দেখা যাবে। লগইন না করেও সব পড়া, কোড চালানো আর কুইজ দেওয়া যায় — শুধু অগ্রগতি জমা থাকে না। ড্যাশবোর্ডে শেখার সাতটি মডিউলের (মডিউল ১–৭) প্রতিটির জন্য একটি করে টেস্ট (১৫টি প্রশ্ন, ২০ মিনিট) আর পুরো কোর্সের ফাইনাল পরীক্ষা (৪০টি প্রশ্ন, ৬০ মিনিট) আছে। মডিউল ৮ পরীক্ষা-প্রস্তুতির অনুশীলন, তাই সেখানে আলাদা টেস্ট নেই। মডিউল ১–৭-এর সব পর্ব পড়া শেষ করে ফাইনালে ৬০% বা তার বেশি পেলে সার্টিফিকেট পাবেন।
আমরা আপনাকে আধুনিক Python 3 শেখাব — f-string, pathlib, match, type hint আর pytest-এর Python, যা আজ পেশাদাররা লেখেন। কিন্তু শুধু syntax নয়: প্রতিটি পর্বে দেখব Python ভেতরে কী করছে, কারণ যিনি ভেতরের নিয়ম বোঝেন, তিনিই AI-এর লেখা কোডের ভুল ধরতে পারেন।
২ · Python আসলে কী — “আঠা” আর “ভাবনার” ভাষা
প্রতিটি প্রোগ্রামিং ভাষা কিছু একটা অগ্রাধিকার দেয়। C অগ্রাধিকার দেয় মেশিনের ওপর নিয়ন্ত্রণ আর গতিকে। Python অগ্রাধিকার দেয় মানুষের সময়কে — আপনার ভাবনা থেকে চলমান প্রোগ্রাম পর্যন্ত পৌঁছাতে যত কম সময় লাগে, তত ভালো। এই একটি সিদ্ধান্ত থেকেই Python-এর প্রায় সব বৈশিষ্ট্য বোঝা যায়।
📖 পড়া যায় pseudocode-এর মতো
ব্লক বোঝাতে { } নয়, indentation (লাইনের শুরুর ফাঁকা জায়গা)। ; নেই, টাইপ ঘোষণা বাধ্যতামূলক নয়। খাতায় অ্যালগরিদম যেভাবে লেখেন, কোড প্রায় তেমনই দেখায়।
🔋 Batteries included
ইনস্টল করার সাথেই পান বিশাল standard library — ফাইল, তারিখ, JSON, CSV, গণিত, ইমেইল, ছোট ওয়েব সার্ভার, ডেটাবেস (SQLite) পর্যন্ত।
বাড়তি কিছু ছাড়াই🧩 বিশাল ইকোসিস্টেম
PyPI-তে কয়েক লাখ বাইরের package — NumPy, pandas, Django, PyTorch… এক লাইনের কমান্ডে নামানো যায়।
আঠার ভাষা⚙️ নিচে C-এর শক্তি
সবচেয়ে প্রচলিত Python — CPython — নিজেই C-তে লেখা। ভারী কাজের library-গুলোর ভেতরেও C, C++ বা Fortran.
গতি যেখানে দরকারএকটি বড় রেস্তোরাঁর ম্যানেজারের কথা ভাবুন। তিনি নিজে রুটি বেলেন না, কাবাব পোড়ান না — এসব করেন দক্ষ বাবুর্চিরা, খুব দ্রুত। ম্যানেজারের কাজ হলো কোন অর্ডার কোন বাবুর্চির কাছে যাবে, কোন খাবার কোন প্লেটে সাজবে — পুরো ব্যবস্থা জোড়া লাগানো। Python সেই ম্যানেজার। আর বাবুর্চিরা হলো C-তে লেখা দ্রুতগতির library. ম্যানেজার নিজে ধীরে হাঁটলেও রেস্তোরাঁ দ্রুত চলে, কারণ ভারী কাজ তিনি নিজে করেন না।
একটি বাস্তব উদাহরণ দেখি। ধরুন একদিনের bKash-ধাঁচের লেনদেনের একটি তালিকা আছে — জমা ধনাত্মক, খরচ ঋণাত্মক। কত জমা হলো, কত খরচ হলো, দিনের শেষে নিট কত — জানতে চান। নিচের কোডটি “Run” চেপে চালান:
print("হ্যালো! আমি Python, আপনার হিসাব রাখছি।")
# একদিনের bKash-ধাঁচের লেনদেন (টাকা): + জমা, - খরচ
transactions = [500, -120, -45, 1000, -300, -60]
received = sum(t for t in transactions if t > 0)
spent = -sum(t for t in transactions if t < 0)
balance = sum(transactions)
print(f"জমা: {received} টাকা")
print(f"খরচ: {spent} টাকা")
print(f"দিনের শেষে নিট: {balance:+} টাকা")
print(f"সবচেয়ে বড় খরচ: {-min(transactions)} টাকা")আউটপুটে আসবে: প্রথমে বাংলা শুভেচ্ছা, তারপর জমা: 1500 টাকা, খরচ: 525 টাকা, দিনের শেষে নিট: +975 টাকা আর সবচেয়ে বড় খরচ: 300 টাকা. খেয়াল করুন — বাংলা লেখা সরাসরি ছাপা গেল, কোনো বাড়তি সেটিং লাগেনি। transactions একটি list; sum(t for t in transactions if t > 0) লাইনটি প্রায় ইংরেজি বাক্যের মতো পড়া যায়: “তালিকার যেসব t শূন্যের বেশি, তাদের যোগফল।” f"..." হলো f-string — বাঁকা বন্ধনীর ভেতরের মান লেখায় বসে যায়, আর :+ চিহ্নসহ সংখ্যা দেখায়। এগুলোর প্রতিটি পরে নিজ নিজ পর্বে বিস্তারিত আসবে; এখন শুধু স্বাদটা নিন।
একই কাজের মূল অংশ C-তে লিখলে কেমন দেখায়? (এটি চালানোর জন্য নয়, শুধু তুলনার জন্য।)
int transactions[] = {500, -120, -45, 1000, -300, -60};
int n = sizeof transactions / sizeof transactions[0];
int received = 0, spent = 0;
for (int i = 0; i < n; i++) {
if (transactions[i] > 0) received += transactions[i];
else spent -= transactions[i];
}
printf("Received: %d, Spent: %d\n", received, spent);C-র কোডও খারাপ নয় — বরং প্রতিটি ধাপ খোলাখুলি দেখা যায়, আর চলে অনেক দ্রুত। কিন্তু খেয়াল করুন, C-তে আপনাকে তালিকার দৈর্ঘ্য নিজে বের করতে হলো, লুপের সূচক (i) নিজে সামলাতে হলো, প্রতিটি ভ্যারিয়েবলের টাইপ (int) বলে দিতে হলো। Python-এ আপনি বলেছেন কী চান; C-তে বলেছেন কীভাবে করতে হবে। দুটোরই জায়গা আছে।
এবার দেখি Python লাইন ধরে ধরে কীভাবে একটি তালিকার যোগফল বের করে। দোকানের তিন দিনের বিক্রি যোগ করার এই ছোট কোডে “পরে” চাপুন, আর ডান পাশে ভ্যারিয়েবলের মান খেয়াল করুন:
1sales = [1200, 850, 1500]2total = 03for s in sales:4 total = total + s5print(f"মোট বিক্রি: {total} টাকা")
| sales | |
| total | |
| s |
- লাইন ১: তিন দিনের বিক্রি নিয়ে একটি list তৈরি হলো, আর তার গায়ে
salesনামটি লাগানো হলো। টাইপ বলতে হয়নি — Python নিজেই বুঝে নিয়েছে এটি একটি list. - লাইন ২:
totalনামে 0 রাখা হলো। এটি যোগফল জমানোর “খাতা”। - লাইন ৩, প্রথম ঘোরা:
for s in salesমানে “তালিকার প্রতিটি জিনিসকে একে একে s নাম দাও।” প্রথমে s = 1200. কোনো সূচক বা দৈর্ঘ্য গুনতে হলো না। - লাইন ৪: total = 0 + 1200 = 1200. ভেতরের লাইনটি চার ঘর সরানো — indentation দিয়েই Python বোঝে কোন লাইন লুপের ভেতরে।
- দ্বিতীয় ঘোরা: s হলো 850.
- total = 1200 + 850 = 2050.
- তৃতীয় ঘোরা: s হলো 1500 — তালিকার শেষ জিনিস।
- total = 2050 + 1500 = 3550. তালিকায় আর কিছু নেই, তাই লুপ শেষ।
- লাইন ৫: ফল ছাপা হলো। একটি মজার বিষয় খেয়াল করুন — লুপ শেষ হলেও
sএখনো 1500 ধরে আছে। C-তে লুপের ভেতরে ঘোষণা করা ভ্যারিয়েবল লুপের পরে থাকে না; Python-এ থাকে। এরকম ছোট পার্থক্যই পরে বড় বাগের উৎস হয় — পর্ব ১২ আর পর্ব ২০-এ বিস্তারিত দেখবেন। (বাস্তবে এই পুরো কাজ এক শব্দে হয়:sum(sales).)
Python কাঁচা গতি ছেড়ে দিয়ে উন্নয়নের গতি কেনে। এক কোটি সংখ্যার ওপর বিশুদ্ধ Python লুপ C-র চেয়ে কয়েক ডজন গুণ পর্যন্ত ধীর হতে পারে। কিন্তু বেশিরভাগ বাস্তব প্রোগ্রামে সময় যায় নেটওয়ার্ক, ডিস্ক বা ডেটাবেসের জন্য অপেক্ষায় — আর ভারী গণনার কাজ Python নিজে না করে C-তে লেখা library-কে দিয়ে দেয়। ফলে কোম্পানির কাছে প্রায়ই প্রোগ্রামারের এক সপ্তাহের সময় সার্ভারের কয়েক মিলিসেকেন্ডের চেয়ে অনেক দামি।
৩ · Python আজ কোথায় চলে
“বহুমুখী” কথাটা Python-এর ক্ষেত্রে অতিরঞ্জন নয়। একই ভাষা দিয়ে একজন গবেষক ছবি থেকে রোগ শনাক্তের মডেল বানান, একজন ওয়েব ডেভেলপার সার্ভার চালান, আর একজন অফিস কর্মী মাসের শেষে শত শত Excel ফাইল এক ক্লিকে জোড়া লাগান। প্রধান ক্ষেত্রগুলো দেখুন:
AI ও মেশিন লার্নিং
PyTorch, TensorFlow, scikit-learn, Hugging Face-এর library — আধুনিক AI গবেষণা ও প্রোডাক্টের প্রধান ভাষা Python. বড় ভাষা-মডেলের প্রশিক্ষণ কোডও সাধারণত Python থেকে চালানো হয়।
PyTorch, scikit-learnডেটা সায়েন্স ও বিশ্লেষণ
NumPy দিয়ে সংখ্যার বড় array, pandas দিয়ে টেবিল, Matplotlib দিয়ে চার্ট, আর Jupyter notebook-এ কোড, ফল আর ব্যাখ্যা এক জায়গায়।
NumPy, pandas, Jupyterওয়েব ব্যাকএন্ড
Django, Flask, FastAPI. Instagram বহু বছর ধরে বিশ্বের সবচেয়ে বড় Django ব্যবহারকারীদের একটি বলে পরিচিত।
Django, FastAPIঅটোমেশন ও স্ক্রিপ্টিং
ফাইলের নাম বদলানো, Excel/CSV জোড়া, রিপোর্ট বানানো, ইমেইল পাঠানো — যে কাজ রোজ হাতে করেন, ছোট একটি script তা কয়েক সেকেন্ডে করে দেয়।
অফিসের সময় বাঁচায়বিজ্ঞান ও প্রকৌশল
SciPy, SymPy, Astropy — পদার্থবিজ্ঞান থেকে জীববিজ্ঞান পর্যন্ত গবেষকেরা Python-এ হিসাব ও সিমুলেশন করেন। ২০১৯ সালে ব্ল্যাক হোলের প্রথম ছবি তৈরির সফটওয়্যারেও Python-এর library ব্যবহার হয়েছিল।
SciPy, AstropyDevOps, ক্লাউড ও টেস্টিং
সার্ভার সাজানোর টুল Ansible Python-এ লেখা; ক্লাউড পরিচালনার অনেক টুল ও SDK Python-এ। pytest দিয়ে অন্য ভাষার সিস্টেমও পরীক্ষা করা হয়।
Ansible, pytestইতিহাসেও Python বড় কোম্পানির ভেতরে গুরুত্বপূর্ণ ছিল। YouTube-এর শুরুর দিকের অনেক কোড Python-এ লেখা হয়েছিল, আর Google-এ শুরু থেকেই Python ছিল প্রধান ভাষাগুলোর একটি। Dropbox-এর ডেস্কটপ অ্যাপ ও সার্ভারের বড় অংশ এক সময় Python-এ চলত; পরে পারফরম্যান্সের কারণে তাঁরা কিছু অংশ Go-তে সরিয়ে নেন। এই শেষ তথ্যটিও গুরুত্বপূর্ণ — Python সব কাজের সেরা নয়, এবং বড় কোম্পানিগুলো সেটা জেনেই বেছে নেয়।
বাংলাদেশে Python
বাংলাদেশেও Python-এর চাহিদা চোখে পড়ার মতো। চাকরির বিজ্ঞাপনে ডেটা অ্যানালিস্ট, ডেটা ইঞ্জিনিয়ার, মেশিন লার্নিং ইঞ্জিনিয়ার, ব্যাকএন্ড (Django/FastAPI) আর QA অটোমেশনের পদে Python প্রায় নিয়মিত দেখা যায়। ব্যাংক, টেলিকম, মোবাইল ফাইন্যান্স আর ই-কমার্স প্রতিষ্ঠানে ডেটা বিশ্লেষণের কাজ বাড়ছে। অফিসে যিনি প্রতি মাসে হাতে হাতে রিপোর্ট বানান, Python শিখে তিনি সেই কাজ অটোমেট করতে পারেন — চাকরি বদল ছাড়াই এটা বড় সুবিধা। অনেক বিশ্ববিদ্যালয়ে এখন প্রোগ্রামিংয়ের পরিচিতি, ডেটা সায়েন্স, AI বা গবেষণার কাজে Python ব্যবহার হয়, আর ফ্রিল্যান্সিংয়েও স্ক্র্যাপিং, অটোমেশন ও ডেটার কাজে Python-এর চাহিদা আছে।
অনলাইনে “Python শিখলেই লাখ টাকার চাকরি” ধরনের দাবি দেখবেন। এগুলো বিশ্বাস করবেন না। চাকরি দেয় দক্ষতা — সমস্যা ভাঙতে পারা, ডেটা বুঝতে পারা, পরিষ্কার কোড লিখতে ও যাচাই করতে পারা। Python শুধু সেই দক্ষতার সবচেয়ে সহজ দরজা।
৪ · জন্মকথা — বড়দিনের ছুটির শখ থেকে Python 3.14
১৯৮৯ সালের ডিসেম্বর। নেদারল্যান্ডসের আমস্টারডামে গবেষণা প্রতিষ্ঠান CWI-তে কাজ করতেন ডাচ প্রোগ্রামার Guido van Rossum. বড়দিনের ছুটিতে সময় কাটানোর জন্য তিনি একটি নতুন scripting ভাষার interpreter লিখতে শুরু করেন। তিনি আগে ABC নামের একটি শিক্ষামূলক ভাষার দলে কাজ করেছিলেন — ABC পড়তে সহজ ছিল, কিন্তু বাইরের জগতের সাথে যুক্ত হতে পারত না। Guido চাইলেন ABC-র মতো পরিষ্কার, কিন্তু C ও অপারেটিং সিস্টেমের সাথে সহজে জোড়া যায় এমন একটি ভাষা। ১৯৯১ সালের ফেব্রুয়ারিতে প্রথম সংস্করণ (0.9.0) প্রকাশ্যে আসে।
নামটি সাপ থেকে আসেনি। Guido তখন BBC-র কমেডি অনুষ্ঠান Monty Python’s Flying Circus-এর ভক্ত ছিলেন, আর একটি ছোট, একটু রহস্যময় নাম চাইছিলেন। এজন্যই Python-এর ডকুমেন্টেশনে উদাহরণে প্রায়ই spam আর eggs দেখবেন — Monty Python-এর বিখ্যাত দৃশ্য থেকে।
| সাল | ঘটনা |
|---|---|
| ১৯৮৯ (ডিসেম্বর) | CWI-তে Guido van Rossum কাজ শুরু করেন |
| ১৯৯১ | প্রথম প্রকাশ্য সংস্করণ 0.9.0 |
| ১৯৯৪ | Python 1.0 |
| ২০০০ | Python 2.0 — list comprehension, উন্নত memory ব্যবস্থাপনা |
| ২০০১ | Python Software Foundation (PSF) প্রতিষ্ঠা |
| ২০০৮ (ডিসেম্বর) | Python 3.0 — ইচ্ছা করে পুরোনো কোডের সাথে অসামঞ্জস্যপূর্ণ বড় সংস্কার |
| ২০১৮ | Guido “BDFL” পদ ছাড়েন; পরের বছর থেকে নির্বাচিত Steering Council |
| ২০২০ (জানুয়ারি) | Python 2-এর আনুষ্ঠানিক সমাপ্তি (end of life) |
| ২০২০ থেকে | প্রতি বছর অক্টোবরে একটি নতুন version (PEP 602), শুরু 3.9 দিয়ে |
| ২০২৪ (অক্টোবর) | Python 3.13 — নতুন REPL, পরীক্ষামূলক free-threaded build আর JIT |
| ২০২৫ (অক্টোবর) | Python 3.14 — free-threaded build আনুষ্ঠানিকভাবে সমর্থিত (ঐচ্ছিক), template string |
Python 2 থেকে 3 — একটি কঠিন কিন্তু দরকারি বদল
Python 3.0 ইচ্ছা করেই পুরোনো কোড ভেঙে দেয়। লক্ষ্য ছিল বহু বছরের জমে থাকা নকশার ভুল শোধরানো — বিশেষ করে লেখা (text) আর কাঁচা byte-কে আলাদা করা, যাতে বাংলাসহ পৃথিবীর সব ভাষার লেখা স্বাভাবিকভাবে চলে। সবচেয়ে চোখে পড়ার মতো বদলটি ছিল print:
| বিষয় | Python 2 | Python 3 |
|---|---|---|
| ছাপানো | print "Hello" (একটি statement) | print("Hello") (একটি ফাংশন) |
| ভাগ | 7 / 2 → 3 | 7 / 2 → 3.5 (পূর্ণসংখ্যার ভাগ 7 // 2) |
| লেখা | সাধারণ string আসলে byte; Unicode আলাদা | সব string ডিফল্টভাবে Unicode |
| ইনপুট | raw_input() | input() |
পরিবর্তনটা প্রত্যাশার চেয়ে অনেক ধীরে হয়েছে — Python 3 আসার পরও প্রায় এক যুগ ধরে দুটি version পাশাপাশি চলেছে। এর শিক্ষা আমরা “ভাবনার প্রশ্ন”-তে আলোচনা করব। আপনার জন্য ব্যবহারিক কথা একটাই: পুরোনো টিউটোরিয়ালে বা AI-এর উত্তরে print "..." দেখলে বুঝবেন সেটা Python 2-এর যুগের — আজকের Python-এ চলবে না।
কে চালায় Python?
Python কোনো একটি কোম্পানির মালিকানাধীন নয়। এর কপিরাইট ও ট্রেডমার্ক রাখে অলাভজনক Python Software Foundation. প্রায় তিন দশক Guido ছিলেন “BDFL” — Benevolent Dictator For Life, অর্থাৎ শেষ সিদ্ধান্ত তাঁর। ২০১৮ সালে := (walrus operator, পর্ব ০৮-এ দেখবেন) নিয়ে তীব্র বিতর্কের পর তিনি সেই ভূমিকা ছেড়ে দেন। এখন ভাষার বড় সিদ্ধান্ত নেয় core developer-দের ভোটে নির্বাচিত পাঁচ সদস্যের একটি Steering Council. নতুন যেকোনো বৈশিষ্ট্য প্রস্তাব করতে হয় একটি লিখিত নথিতে — PEP (Python Enhancement Proposal). যেমন PEP 8 হলো কোড লেখার স্টাইল-গাইড, আর PEP 602 ঠিক করেছে বছরে একবার নতুন version আসবে, প্রতিটি version প্রায় ৫ বছর সমর্থন পাবে।
Version নিয়ে একটি কথা: এই কোর্সের সব কোড Python 3.14-এ পরীক্ষা করা। যেহেতু প্রতি অক্টোবরে নতুন version আসে, আপনার কম্পিউটারে এর চেয়ে নতুন version থাকতে পারে — তাতে সমস্যা নেই, কারণ Python 3-এর ভেতরে নতুন version সাধারণত পুরোনো কোড চালাতে পারে। কোনো বৈশিষ্ট্য নির্দিষ্ট version থেকে এসে থাকলে আমরা লিখে দেব, যেমন “match — Python 3.10 থেকে”।
৫ · কীবোর্ড থেকে স্ক্রিন — এক লাইন Python-এর যাত্রা
আপনি লিখলেন print(sum([1200, 850, 1500])) আর চাপলেন Enter. মুহূর্তেই স্ক্রিনে এলো 3550. মাঝখানে কী ঘটল? পুরো গল্পটা পর্ব ০৫-এ গভীরভাবে দেখব; এখানে শুধু বড় ছবিটা। “পরে” চাপুন:
- আপনার কোড
sales.pysource code - Compile
bytecodeছোট নির্দেশের তালিকা - Interpreter
CPython VMএকটি একটি নির্দেশ চালায় - C-এর কাজ
sum(), print()C-তে লেখা ফাংশন - আউটপুট
3550OS হয়ে স্ক্রিনে
print(sum([1200, 850, 1500]))
LOAD_NAME print LOAD_NAME sum BUILD_LIST [1200, 850, 1500] CALL 1 # sum(...) CALL 1 # print(...)
// খুব সরল করে বললে: for (;;) { instr = next_instruction(); switch (instr) { case LOAD_NAME: ... case CALL: ... } }
# sum() — C ফাংশন, list-এর সংখ্যা যোগ করে 1200 + 850 + 1500 → 3550 # print() — লেখাটিকে stdout-এ পাঠায়
$ python sales.py
3550
- Source code. আপনি একটি
.pyফাইলে লিখলেন, অথবা REPL-এ (Python-এর সরাসরি প্রশ্নোত্তরের পর্দা) টাইপ করলেন। এটি মানুষের পড়ার মতো লেখা — CPU এখনো কিছুই বোঝে না। - Bytecode-এ অনুবাদ। Python প্রথমে পুরো ফাইল পড়ে ব্যাকরণ যাচাই করে, তারপর একে bytecode-এ বদলায় — Python-এর নিজস্ব সরল নির্দেশের তালিকা। ব্যাকরণে ভুল (যেমন বন্ধনী না মেলা) থাকলে এই ধাপেই
SyntaxError, একটি লাইনও চলার আগে। import করা module-এর bytecode পরে আবার কাজে লাগানোর জন্য__pycache__ফোল্ডারে.pycফাইলে জমা থাকে। - Interpreter চালায়। CPython-এর ভেতরে C-তে লেখা একটি বড় লুপ আছে, যা bytecode-এর একটি একটি নির্দেশ নিয়ে কাজ করে। একে বলে Python virtual machine. প্রতিটি নির্দেশে টাইপ যাচাইসহ নানা হিসাব হয় — এটাই বিশুদ্ধ Python ধীর হওয়ার মূল কারণ। Python 3.11 থেকে এই লুপ অনেক চালাক হয়েছে, আর 3.13-এ পরীক্ষামূলক JIT যোগ হয়েছে।
- C-এর কাজ।
sum()আরprint()Python-এ লেখা নয় — এগুলো C-তে লেখা, আগে থেকেই machine code-এ compile করা ফাংশন। Interpreter শুধু তাদের ডেকে দেয়। NumPy বা PyTorch-এর ক্ষেত্রেও একই ঘটনা, শুধু অনেক বড় মাপে: Python সিদ্ধান্ত নেয়, C/C++ বা GPU ভারী কাজটা করে। - আউটপুট।
printলেখাটি অপারেটিং সিস্টেমের কাছে পাঠায়, OS সেটি terminal-এ দেখায়। পুরো যাত্রায় আপনাকে compile কমান্ড দিতে হয়নি — অনুবাদ আর চালানো দুটোই Python নিজে করেছে। এই সুবিধার দামই হলো কিছুটা কম গতি।
“Python interpreted ভাষা” কথাটা আধা-সত্য। আরও সঠিক হলো: CPython আপনার কোডকে bytecode-এ compile করে, তারপর নিজের virtual machine-এ সেটি interpret করে। এখানে “Python” হলো ভাষার নিয়ম, আর CPython সেই নিয়মের সবচেয়ে প্রচলিত বাস্তবায়ন। PyPy, MicroPython-এর মতো অন্য বাস্তবায়নও আছে।
৬ · চার স্তরের ইকোসিস্টেম — ভাষা থেকে framework
“Python জানি” বললে আসলে চারটি স্তরের কথা বোঝায়। নতুনরা প্রায়ই গুলিয়ে ফেলেন — “pandas কি Python-এর অংশ?” না, এটি একটি বাইরের package. কোন জিনিস কোন স্তরের, সেটা জানলে error পড়া, ইনস্টল করা আর AI-এর কোড যাচাই করা অনেক সহজ হয়। স্তরগুলো একে একে দেখুন:
- ভাষা
for, def, listমূল নিয়ম - Standard library
import csvসাথেই আসে - PyPI package
pip installবাইরে থেকে আনতে হয় - Framework
Django, PyTorchপুরো কাঠামো
sales = [1200, 850, 1500] print(sum(sales), max(sales), len(sales))
import statistics print(statistics.mean([1200, 850, 1500])) # csv, json, datetime, pathlib, sqlite3 ... সব সাথেই আসে
$ pip install pandas
import pandas as pd
df = pd.read_csv("sales.csv")
print(df["amount"].sum())
from fastapi import FastAPI
app = FastAPI()
@app.get("/balance")
def balance():
return {"taka": 975}
- ভাষা ও built-in ফাংশন।
if,for,def, list, dict আরsum,len,print-এর মতো built-in ফাংশন — কোনো import ছাড়াই সবখানে পাওয়া যায়। মডিউল ২ ও ৩ মূলত এই স্তর। - Standard library. Python ইনস্টল করলেই সাথে আসে কয়েকশো module — শুধু
importলিখতে হয়। “Batteries included” বলতে এটাই বোঝায়। পর্ব ২৭-এ এর একটি ভ্রমণ আছে। এখানে কোনো ইনস্টল লাগে না, তাই এগুলো সবচেয়ে নির্ভরযোগ্য। - PyPI package. Python Package Index-এ যে কেউ package প্রকাশ করতে পারেন — সংখ্যায় কয়েক লাখ। pip দিয়ে নামাতে হয়, আর প্রজেক্ট আলাদা রাখতে virtual environment লাগে (পর্ব ২৩)। খেয়াল করুন: যে কেউ প্রকাশ করতে পারেন মানে ভুয়া বা ক্ষতিকর package-ও থাকতে পারে — পর্ব ৫০-এ এ নিয়ে বিস্তারিত।
- Framework. একটি সাধারণ library-কে আপনি ডাকেন; framework উল্টো — সে একটি কাঠামো দেয়, আর নির্দিষ্ট সময়ে আপনার ফাংশনকে ডাকে। Django, FastAPI (ওয়েব), PyTorch (AI) এই স্তরে। পর্ব ৪৮-এ FastAPI দিয়ে শুরু করবেন। আগের তিন স্তর ভালো বুঝলে যেকোনো framework দ্রুত শেখা যায়।
নিজের বাড়ির রান্নাঘর দিয়ে ভাবুন। চুলা আর হাঁড়ি-পাতিল হলো ভাষা; ঘরে মজুত চাল-ডাল-লবণ-মসলা হলো standard library — চাইলেই হাতের কাছে। কাঁচাবাজার থেকে আনা মাছ-সবজি হলো PyPI package — আনতে হয়, আর দেখে-শুনে আনতে হয়, নইলে পচা জিনিস ঘরে ঢোকে। আর একটি ক্যাটারিং সার্ভিস হলো framework — মেনু আর পরিবেশনের পুরো ব্যবস্থা তাদের, আপনি শুধু নিজের পদটা বলে দেন।
৭ · C, C++, Java, JavaScript — একটি সৎ তুলনা
কোনো ভাষাই “সেরা” নয় — প্রতিটি কিছু জিনিস দেয়, কিছু জিনিস ছাড়ে। নিচের টেবিলে ভাষাগুলোর স্বভাব পাশাপাশি দেখুন। এখানে “ধীর/দ্রুত” মানে সাধারণ প্রবণতা; বাস্তব গতি নির্ভর করে কাজ, library আর বাস্তবায়নের ওপর।
| বৈশিষ্ট্য | Python | C | C++ | Java | JavaScript |
|---|---|---|---|---|---|
| কীভাবে চলে | bytecode, interpreter (CPython) | machine code-এ compile | machine code-এ compile | bytecode, JVM-এ JIT | ইঞ্জিনে JIT (V8 ইত্যাদি) |
| টাইপ | dynamic (ঐচ্ছিক type hint) | static | static | static | dynamic (TypeScript-এ static) |
| মেমরি ফেরত | স্বয়ংক্রিয় (garbage collection) | হাতে (free) | RAII, smart pointer | garbage collection | garbage collection |
| বিশুদ্ধ লুপের গতি | ধীর | খুব দ্রুত | খুব দ্রুত | দ্রুত | মাঝারি থেকে দ্রুত |
| লেখার গতি | খুব দ্রুত | ধীর | মাঝারি | মাঝারি | দ্রুত |
| সবচেয়ে শক্ত জায়গা | AI, ডেটা, অটোমেশন, ব্যাকএন্ড | OS, embedded, firmware | গেম ইঞ্জিন, ব্রাউজার, ট্রেডিং | বড় এন্টারপ্রাইজ, Android | ব্রাউজার, ফুল-স্ট্যাক ওয়েব |
| দুর্বল জায়গা | CPU-ভারী বিশুদ্ধ লুপ, মোবাইল অ্যাপ, ব্রাউজার | নিরাপত্তা, লেখার সময় | শেখা কঠিন | বেশি লম্বা কোড | টাইপের অদ্ভুত রূপান্তর |
এই তুলনা থেকেই আসল প্রশ্নটা আসে: কোন কাজে কোন ভাষা? নিচের চারটি বাস্তব কাজ একে একে দেখুন — প্রতিটির জন্য কী বিবেচনা করে সিদ্ধান্ত নেওয়া হয়:
- ডেটা বিশ্লেষণবিক্রির রিপোর্ট
- মোবাইল গেম ইঞ্জিনপ্রতি সেকেন্ডে ৬০ ফ্রেম
- ওয়েব APIঅর্ডার নেওয়ার সার্ভার
- মাইক্রোকন্ট্রোলারসেচ পাম্পের সেন্সর
১. গতি কতটা জরুরি — মিলিসেকেন্ড, না মিনিট? ২. কোথায় চলবে — সার্ভার, ফোন, ব্রাউজার, ছোট চিপ? ৩. কোন library/টুল তৈরি আছে? ৪. দলের মানুষ কোন ভাষা জানেন?
গতি: কয়েক সেকেন্ড চললেও সমস্যা নেই টুল: pandas, NumPy, Jupyter, Matplotlib ভারী হিসাব: ভেতরে C-তে, তাই দ্রুতই
গতি: প্রতি ফ্রেম ~১৬ মিলিসেকেন্ডের মধ্যে মেমরি: ফোনে সীমিত, নিয়ন্ত্রণ দরকার Python: টুল আর স্ক্রিপ্টে, ইঞ্জিনের কেন্দ্রে নয়
সময়ের বড় অংশ যায় ডেটাবেস/নেটওয়ার্কের অপেক্ষায় Python: Django, FastAPI — দ্রুত তৈরি খুব বেশি চাপ হলে কিছু অংশ Go/Java-তে
মেমরি: কয়েক কিলোবাইট RAM বিদ্যুৎ: ব্যাটারিতে মাসের পর মাস C: হার্ডওয়্যারের ওপর সরাসরি নিয়ন্ত্রণ
- আগে প্রশ্ন, পরে ভাষা। পেশাদাররা “কোন ভাষা প্রিয়” দিয়ে শুরু করেন না। চারটি প্রশ্ন দিয়ে শুরু করেন: গতির চাহিদা, কোথায় চলবে, কী টুল আছে, আর দলের দক্ষতা।
- ডেটা বিশ্লেষণ → Python. একটি দোকান-চেইনের মাসিক বিক্রি বিশ্লেষণ। ফল কয়েক সেকেন্ডে এলেই চলে, আর pandas-এর মতো টুল তৈরি আছে। বিশ্লেষক ঘণ্টায় দশটা প্রশ্ন পরীক্ষা করতে পারেন — এখানে লেখার গতিই সব।
- গেম ইঞ্জিন → C++. প্রতি সেকেন্ডে ৬০টি ফ্রেম মানে প্রতি ফ্রেমে মোটামুটি ১৬ মিলিসেকেন্ড। মেমরি কখন ফেরত যাবে তা নিজে ঠিক করতে হয়, garbage collection-এর হঠাৎ বিরতি চলে না। তাই বড় ইঞ্জিনের কেন্দ্র সাধারণত C++; Python থাকে বিল্ড-টুল আর এডিটর স্ক্রিপ্টে।
- ওয়েব API → অনেক বিকল্প, Python শক্তিশালী। একটি অনলাইন দোকানের অর্ডার সার্ভার বেশিরভাগ সময় ডেটাবেসের উত্তরের অপেক্ষায় থাকে, তাই ভাষার কাঁচা গতি কম গুরুত্বপূর্ণ। Python, Go, Java, JavaScript — সবই ভালো; দলের দক্ষতাই প্রায়ই সিদ্ধান্ত নেয়।
- মাইক্রোকন্ট্রোলার → C. ধানক্ষেতের সেচ পাম্পের মাটির-আর্দ্রতা সেন্সর — কয়েক কিলোবাইট RAM, ব্যাটারিতে চলে। এখানে C. তবে MicroPython নামে Python-এর একটি ছোট বাস্তবায়ন আছে, যা দিয়ে শেখা ও প্রোটোটাইপ চমৎকার হয়। মূল শিক্ষা: Python আপনার প্রথম ভাষা হতে পারে, একমাত্র নয়।
C-তে একটি ভ্যারিয়েবল হলো নির্দিষ্ট টাইপের একটি মেমরি-বাক্স; Python-এ ভ্যারিয়েবল হলো একটি নাম, যা যেকোনো টাইপের object-এর গায়ে লাগানো যায় (পর্ব ০৬)। C-তে আপনি compile করে .exe পান; Python-এ python file.py চালালেই অনুবাদ ও চালানো একসাথে হয়। malloc/free বা delete নেই — reference counting আর garbage collector মেমরি ফেরত দেয়। C কোর্সের C কেন? আর C++ কোর্সের C++ কেন? পাশাপাশি পড়লে তিনটি ভাষার দর্শনের পার্থক্য পরিষ্কার হবে।
৮ · Zen of Python — ভাষার ভেতরে লুকানো দর্শন
১৯৯৯ সালে Python-এর প্রথম দিকের core developer Tim Peters ভাষার নকশার মূল নীতিগুলো ১৯টি ছোট বাক্যে লিখে ফেলেন। পরে এটি PEP 20 হিসেবে স্থান পায়, আর Python-এর ভেতরে একটি “গোপন” module হিসেবে ঢুকে যায় — import this লিখলেই পুরোটা ছাপা হয়। নিচের কোড পুরোটা না ছেপে বেছে বেছে কয়েকটি লাইন দেখায়:
import contextlib
import io
buffer = io.StringIO()
with contextlib.redirect_stdout(buffer):
import this # import করলেই Zen ছাপা হয় — আমরা ধরে রাখছি
lines = buffer.getvalue().splitlines()
print(lines[0])
print("-" * len(lines[0]))
for n in (2, 3, 4, 8, 11, 14):
print(lines[n])
print(f"মোট নীতি: {len(lines) - 2}টি")আউটপুটে প্রথমে শিরোনাম The Zen of Python, by Tim Peters আর তার নিচে একটি দাগ, তারপর ছয়টি নীতি (Beautiful is better than ugly থেকে There should be one-- and preferably only one --obvious way to do it পর্যন্ত), শেষে মোট নীতি: 19টি. কৌশলটি হলো: import this নিজেই লেখা ছাপে, তাই contextlib.redirect_stdout দিয়ে সেই ছাপাকে স্ক্রিনের বদলে একটি io.StringIO-তে (মেমরিতে রাখা একটি “কাগজ”) পাঠানো হয়েছে। তারপর splitlines() দিয়ে লাইনে ভেঙে পছন্দের লাইন বেছে ছাপা হলো। লক্ষ করুন — তিনটি module-ই standard library-র, কিছু ইনস্টল করতে হয়নি। সূচক 1-এ একটি ফাঁকা লাইন আছে, তাই নীতির সংখ্যা len(lines) - 2.
কয়েকটি নীতির মানে, আর বাস্তবে এগুলো কোথায় দেখবেন:
| নীতি | সহজ বাংলায় | কোডে যেমন দেখায় |
|---|---|---|
| Beautiful is better than ugly. | কোড দেখতে গোছানো হওয়া উচিত। | PEP 8 স্টাইল, পরিষ্কার নাম |
| Explicit is better than implicit. | যা করছেন, খোলাখুলি লিখুন; লুকানো জাদু নয়। | from math import *-এর বদলে import math |
| Simple is better than complex. | সহজ সমাধান থাকলে সেটাই নিন। | নিজের লুপের বদলে sum(sales) |
| Readability counts. | পড়ার সুবিধা গুরুত্বপূর্ণ। | x-এর বদলে monthly_total |
| Errors should never pass silently. | ভুল চেপে রাখবেন না। | ফাঁকা except: না লেখা (পর্ব ২৪) |
| There should be one-- and preferably only one --obvious way to do it. | একটি কাজের একটি স্পষ্ট উপায় থাকা ভালো। | Perl-এর “অনেক উপায়” দর্শনের বিপরীত |
Zen-এর শেষ দিকের একটি লাইন একটু মজার: “Although that way may not be obvious at first unless you're Dutch.” — অর্থাৎ “স্পষ্ট উপায়টা প্রথমে চোখে না-ও পড়তে পারে, যদি না আপনি ডাচ হন।” এটি Guido-কে নিয়ে একটি স্নেহের ঠাট্টা। নীতিগুলো আইন নয়, দিকনির্দেশনা — নিজেরাই বলে “practicality beats purity”, অর্থাৎ বাস্তব প্রয়োজন বিশুদ্ধতার চেয়ে বড়।
৯ · কোর্সের মানচিত্র — কী শিখবেন, কী শিখবেন না
পুরো কোর্সটি ৮টি মডিউলে ভাগ করা। প্রতিটি মডিউল আগেরটির ওপর দাঁড়িয়ে আছে, তাই ক্রম মেনে পড়াই সবচেয়ে ভালো। যেকোনো মডিউলের প্রথম পর্বে সরাসরি যেতে নিচের লিংকে চাপুন:
| মডিউল | বিষয় | পর্ব | শুরু করুন |
|---|---|---|---|
| ১ | ভিত্তি — Python-এর মতো ভাবা | ০১–০৫ | Python কেন? (এই পর্ব) |
| ২ | মূল ভাষা — ভ্যারিয়েবল, string, সিদ্ধান্ত, লুপ, ফাংশন | ০৬–১৩ | ভ্যারিয়েবল ও টাইপ |
| ৩ | ডেটা স্ট্রাকচার ও মেমরি-ভাবনা | ১৪–২১ | list |
| ৪ | বড় প্রোগ্রাম গোছানো — module, pip, exception, ফাইল | ২২–২৮ | module ও package |
| ৫ | অবজেক্ট-ওরিয়েন্টেড Python | ২৯–৩৫ | class ও object |
| ৬ | আধুনিক ও উন্নত Python — type hint, টেস্টিং, async | ৩৬–৪৩ | context manager |
| ৭ | বাস্তব প্রয়োগ ও প্রজেক্ট | ৪৪–৫১ | Pythonic কোড |
| ৮ | পরীক্ষা ও ইন্টারভিউ প্রস্তুতি | ৫২–৫৫ | আউটপুট কী হবে? |
পর্ব ২১-এ একটি মাঝপথের প্রজেক্ট (একটি কমান্ড-লাইন টুল) আর পর্ব ৫১-এ একটি ক্যাপস্টোন প্রজেক্ট আছে — শেখা জিনিস দিয়ে আসল কিছু বানানোর জন্য।
যা শিখবেন
পুরো ভাষা গভীরভাবে, Python-এর ভেতরের মডেল (object, নাম, mutability), standard library, টেস্টিং, ডিবাগিং, পারফরম্যান্স মাপা, নিরাপদ কোড, আর ডেটা, ওয়েব ও অটোমেশনের প্রথম ধাপ।
যেকোনো দিকে যাওয়ার ভিতযা এই কোর্সে বিস্তারিত নেই
পূর্ণাঙ্গ মেশিন লার্নিং, গভীর pandas, পুরো Django বা মোবাইল/ডেস্কটপ GUI অ্যাপ। এগুলোর জন্য ABCL TECH-এ আলাদা কোর্স আছে; এই কোর্স সেগুলোর ভিত তৈরি করবে।
পরের ধাপের কোর্সকীভাবে পড়লে সবচেয়ে বেশি লাভ
- প্রতিটি ডায়াগ্রাম নিজে চালান। “পরে” চাপার আগে ভাবুন, পরের ধাপে কী হবে। অনুমান মিলল কি না দেখুন।
- কোড চালান, তারপর বদলান। একটি সংখ্যা বদলান, একটি লাইন মুছুন — দেখুন কী হয়। error এলে ভয় নেই; Python-এর error মেসেজ (traceback) পড়তে শেখাও এই কোর্সের অংশ, শুরু পর্ব ০৪-এ।
- ভাবনার প্রশ্নগুলো এড়িয়ে যাবেন না। উত্তর দেখার আগে নিজে দুই মিনিট ভাবুন।
- নিয়মিত, অল্প অল্প। একদিনে দশটি পর্বের চেয়ে প্রতিদিন একটি পর্ব অনেক বেশি কাজের। প্রতিটি মডিউল শেষে ড্যাশবোর্ডের মডিউল টেস্টটি দিন।
- নিজের কম্পিউটারে সেটআপ করুন। পাতার “Run” দিয়ে শুরু করা যায়, কিন্তু পর্ব ০৩-এ নিজের কম্পিউটারে Python আর VS Code বসানো শিখে নিন।
১০ · AI-এর যুগে Python — পড়তে, যাচাই করতে আর টেস্ট করতে পারা
আজ ChatGPT, Claude, Copilot-এর মতো AI টুলকে কোড লিখতে বললে প্রায়ই প্রথম উত্তরটা Python-এ আসে। কারণ বোঝা কঠিন নয়: ইন্টারনেটে খোলা Python কোডের পরিমাণ বিশাল, ভাষাটা সংক্ষিপ্ত ও নিয়মিত, আর AI জগতের নিজের টুলগুলোও Python-এ। ফলে AI টুলগুলো Python-এ সাধারণত সবচেয়ে ভালো কাজ করে।
কিন্তু এর একটি উল্টো দিক আছে। Python পড়তে এত সহজ যে AI-এর লেখা কোড দেখে মনে হয় “সব ঠিকই আছে” — অথচ ভেতরে ভুল থাকতে পারে। Python-এর dynamic typing-এর কারণে অনেক ভুল চালানোর আগে ধরা পড়ে না; কোডের যে লাইনে ভুল, সেই লাইনটি চলার সময়ই কেবল error আসে — হয়তো এক মাস পরে, হয়তো আসল গ্রাহকের সামনে।
যে কোড আপনি পড়তে পারেন না, সেটা আপনার কোড নয়।
AI-এর লেখা Python-এ সাধারণ ভুল
| AI-এর ভুল | কীভাবে চিনবেন | কোন পর্বে গভীরে |
|---|---|---|
| পুরোনো Python 2 ধাঁচ | print "...", raw_input | এই পর্ব, পর্ব ০৪ |
| নেই এমন package বা ফাংশন বানিয়ে ফেলা | ModuleNotFoundError, AttributeError | পর্ব ২২, ২৩, ৫০ |
টাকার হিসাবে float | 0.1 + 0.2 ঠিক 0.3 হয় না | পর্ব ০৭ |
| সব error চেপে রাখা | ফাঁকা except: বা except Exception: pass | পর্ব ২৪ |
| ডিফল্ট মানে list | def f(items=[]) | পর্ব ২০ |
AI-কে Python কোড লিখতে বললে শুধু “কোড দাও” বলবেন না। version, শর্ত আর যাচাইয়ের উপায় চেয়ে নিন। নিচের প্রম্পটটি কপি করে নিজের কাজের মতো বদলে নিন:
AI-এর লেখা Python হাতে পেলে — যাচাইয়ের চেকলিস্ট
- Python কে, কখন তৈরি করেন? — Guido van Rossum; কাজ শুরু ১৯৮৯ সালের ডিসেম্বরে, প্রথম প্রকাশ ১৯৯১ সালে।
- Python কি compiled না interpreted? — CPython কোডকে আগে bytecode-এ compile করে, তারপর নিজের virtual machine-এ interpret করে; তাই সাধারণভাবে “interpreted” বলা হয়।
- Dynamic typing মানে কী? — টাইপ থাকে মানের (object-এর) সাথে, নামের সাথে নয়; চালানোর সময় যাচাই হয়, আর একই নামে পরে অন্য টাইপের মান রাখা যায়।
- Python 2 আর 3-এর একটি বড় পার্থক্য বলুন। — Python 3-এ
printএকটি ফাংশন,/সবসময় দশমিক ভাগ দেয়, আর string ডিফল্টভাবে Unicode. - PEP 8 কী? — Python কোড লেখার আনুষ্ঠানিক স্টাইল-গাইড: নামকরণ, indentation (৪ space), লাইনের দৈর্ঘ্য ইত্যাদি।
ভাবনার প্রশ্ন
প্রতিটি প্রশ্ন নিয়ে নিজে কিছুক্ষণ ভাবুন — তারপর “→ উত্তর” চাপুন। এগুলোই আপনাকে কোড-লেখক থেকে সিস্টেম-চিন্তক বানাবে।
প্র ০১ডেটা সায়েন্স আর AI-এর জগতে Python কীভাবে জিতল — যখন গতিতে C++, আর পরিসংখ্যানে R বা MATLAB আগে থেকেই ছিল?
Python এই জায়গা একদিনে পায়নি; এটি প্রায় দুই দশকের ধারাবাহিক ঘটনার ফল। প্রতিটি ধাপ আগের ধাপের ওপর দাঁড়িয়ে আছে।
- সংখ্যার ভিত (১৯৯৫–২০০৬): শুরুতে Python-এ সংখ্যার বড় array-র জন্য ছিল দুটি প্রতিযোগী library — Numeric আর পরে Numarray. সম্প্রদায় দুই ভাগ হয়ে যাচ্ছিল। ২০০৬ সালে Travis Oliphant দুটিকে মিলিয়ে NumPy প্রকাশ করেন। NumPy-র ভেতরের হিসাব C-তে চলে, কিন্তু ব্যবহার করা যায় Python থেকে — এটাই “আঠার ভাষা” ধারণার সবচেয়ে সফল প্রমাণ।
- বিজ্ঞানের টুল: এর আগেই ২০০১ সালে SciPy শুরু হয়েছিল, আর একই বছর Fernando Pérez শুরু করেন IPython — যা থেকে ২০১৪ সালে জন্ম নেয় Jupyter notebook. গবেষকেরা কোড, চার্ট আর ব্যাখ্যা এক পাতায় রাখতে পারলেন।
- টেবিলের ডেটা ও মেশিন লার্নিং: ২০০৮ সালে Wes McKinney একটি আর্থিক প্রতিষ্ঠানে কাজ করতে গিয়ে pandas বানানো শুরু করেন; প্রায় একই সময়ে scikit-learn আসে।
- Deep learning: Google ২০১৫ সালে TensorFlow প্রকাশ করে, আর Facebook (এখন Meta)-এর গবেষণা দল ২০১৬ সালে PyTorch আনে। দুটোরই ইঞ্জিন C++ ও GPU-তে, কিন্তু মূল ব্যবহারের পথ Python.
কেন R বা MATLAB নয়? MATLAB-এর লাইসেন্স দামি ছিল, আর R পরিসংখ্যানে অসাধারণ হলেও সাধারণ সফটওয়্যার — ওয়েব সার্ভার, অটোমেশন, ডেটাবেস — বানাতে Python বেশি সুবিধাজনক। একজন বিশ্লেষক Python-এ মডেল বানিয়ে সেই একই ভাষায় সেটি ওয়েব API হিসেবে চালু করতে পারেন। আর C++ দ্রুত হলেও প্রতিটি পরীক্ষামূলক ধারণা যাচাই করতে অনেক বেশি সময় লাগে; গবেষণায় দিনে দশটা ধারণা পরীক্ষা করাটাই বড় কথা।
একবার সবাই Python-এ জড়ো হলে নেটওয়ার্ক ইফেক্ট শুরু হয়: বেশি ব্যবহারকারী → বেশি library → বেশি টিউটোরিয়াল → আরও বেশি ব্যবহারকারী।
মূল উপলব্ধি: ভাষা জেতে শুধু নিজের গুণে নয়, তার চারপাশের ইকোসিস্টেম ও সম্প্রদায়ের জোরে। Python দ্রুত গণনা নিজে করেনি — দ্রুত গণনাকে সহজে ব্যবহারযোগ্য করেছে।
প্র ০২Python 2 থেকে 3-এ যেতে প্রায় এক যুগ লাগল কেন? একটি ভাষা বা সফটওয়্যার বদলানোর সময় এখান থেকে কী শেখার আছে?
Python 3.0 আসে ২০০৮ সালের ডিসেম্বরে। Python 2-এর আনুষ্ঠানিক সমাপ্তি ঘটে ২০২০ সালের ১ জানুয়ারি — মূল পরিকল্পনা ছিল ২০১৫, কিন্তু পাঁচ বছর বাড়াতে হয়। এত দেরির কারণগুলো খুব শিক্ষণীয়।
- ইচ্ছাকৃত ভাঙন: Python 3 পুরোনো কোড চালাত না।
print-এর মতো সহজ বদল টুল দিয়ে ঠিক করা যেত (2to3), কিন্তু text আর byte আলাদা করার বদল কোডের গভীরে ঢুকে ছিল — ফাইল, নেটওয়ার্ক, ডেটাবেস যেখানেই লেখা আসে-যায়। - মুরগি আগে না ডিম: ব্যবহারকারীরা বলতেন, “আমার দরকারি library Python 3-এ চলে না, তাই যাব না।” Library লেখকেরা বলতেন, “ব্যবহারকারী নেই, তাই Python 3-এ সময় দেব না।” এই অচলাবস্থা বহু বছর চলে।
- প্রথম দিকের Python 3 ধীর ছিল এবং নতুন সুবিধা কম ছিল — বদলানোর তাড়না তৈরি হয়নি।
কী দিয়ে অচলাবস্থা ভাঙল? Python 3-এ পুরোনো কিছু syntax ফিরিয়ে আনা হলো (যেমন 3.3-এ u"..."), যাতে একই কোড দুই version-এ চলে; six-এর মতো সাহায্যকারী library এলো; আর Python 3-এ আকর্ষণীয় নতুন জিনিস এলো — f-string (3.6), async/await, type hint. শেষে বড় প্রজেক্টগুলো একসাথে ঘোষণা দিল যে তারা Python 2 সমর্থন বন্ধ করছে। Dropbox, Instagram-এর মতো কোম্পানি লক্ষ লক্ষ লাইনের কোড ধাপে ধাপে সরিয়েছে, এবং সেই অভিজ্ঞতা প্রকাশ্যে লিখেছে।
এর পর থেকে Python-এর নেতৃত্ব এমন বড় ভাঙন এড়িয়ে চলে; কোনো কিছু বাদ দিতে হলে আগে কয়েক version ধরে সতর্কবার্তা (deprecation) দেওয়া হয়।
মূল উপলব্ধি: সফটওয়্যারে “ঠিক করা” আর “সবাইকে ঠিক জায়গায় নিয়ে আসা” দুটি আলাদা কাজ, আর দ্বিতীয়টি অনেক কঠিন। পুরোনো ও নতুন একসাথে চালানোর পথ, ধাপে ধাপে সরানোর টুল আর নতুন দিকে যাওয়ার স্পষ্ট লাভ — তিনটিই না থাকলে ভালো পরিবর্তনও আটকে যায়।
প্র ০৩সবাই বলে Python “ধীর” — তবু বিশ্বের বড় বড় সিস্টেম কেন Python-এ চলে?
“ধীর” কথাটা সত্য, কিন্তু অসম্পূর্ণ। প্রশ্ন হলো — কী মাপছি, আর কার সময় বেশি দামি?
- বিশুদ্ধ লুপে ধীর: এক কোটি সংখ্যা Python-এর
forলুপে যোগ করলে C-র চেয়ে অনেক গুণ সময় লাগে, কারণ প্রতিটি ধাপে interpreter-কে টাইপ যাচাই, object তৈরি ইত্যাদি করতে হয়। - কিন্তু বাস্তবে ভারী কাজ C-তে: একই যোগ NumPy দিয়ে করলে পুরো লুপটা C-তে চলে, গতি C-র কাছাকাছি চলে যায়। PyTorch-এ মডেল প্রশিক্ষণের সময় প্রায় সব সময়টা কাটে GPU-র কোডে; Python শুধু নির্দেশ দেয়।
- অপেক্ষাই আসল খরচ: একটি সাধারণ ওয়েব অনুরোধে ডেটাবেসের উত্তর আসতে যদি অনেক মিলিসেকেন্ড লাগে, তাহলে Python-এর নিজের কোডের ভাগ মোট সময়ের ছোট অংশ। ভাষা বদলালে লাভ সামান্য।
- মানুষের সময় দামি: সার্ভার ভাড়া প্রতি বছর সস্তা হয়, দক্ষ প্রোগ্রামারের সময় নয়। দ্রুত বাজারে আসা, দ্রুত বাগ ঠিক করা আর নতুন সদস্যের দ্রুত কোড বোঝা — এগুলো কোম্পানির জন্য প্রায়ই বেশি লাভজনক।
যেখানে সত্যিই গতি দরকার, সেখানে বড় দলগুলো একটি পরিচিত কৌশল নেয়: আগে Python-এ বানানো, তারপর profiler দিয়ে মাপা (পর্ব ৪৩), আর শুধু সবচেয়ে গরম অংশটুকু C, C++, Rust বা Cython-এ সরিয়ে নেওয়া। Python নিজেও দ্রুত হচ্ছে — Python 3.11-এ Faster CPython প্রকল্পের কাজে অনেক প্রোগ্রাম উল্লেখযোগ্যভাবে দ্রুত চলে, আর 3.13 থেকে পরীক্ষামূলক JIT যোগ হয়েছে। তবে কিছু জায়গা Python-এর নয় — গেম ইঞ্জিনের কেন্দ্র, OS kernel, খুব কম মেমরির চিপ।
মূল উপলব্ধি: পারফরম্যান্স মানে পুরো সিস্টেমের গতি, একটি লুপের নয়। আন্দাজে নয়, মেপে সিদ্ধান্ত নিন — আর মনে রাখুন, প্রোগ্রামারের সময়ও একটি খরচ।
প্র ০৪GIL কী, আর “free-threaded Python” নিয়ে এত আলোচনা কেন?
আধুনিক কম্পিউটারে একাধিক CPU core থাকে — আপনার ল্যাপটপে হয়তো ৮টি। স্বাভাবিক প্রত্যাশা: ৮টি thread দিয়ে কাজ ভাগ করলে প্রায় ৮ গুণ দ্রুত। কিন্তু CPython-এ বহু বছর ধরে তা হতো না, কারণ GIL (Global Interpreter Lock).
GIL কেন এল? CPython প্রতিটি object-এর জন্য একটি গণনা রাখে — কতগুলো নাম তাকে দেখছে (reference count). দুটি thread একসাথে এই গণনা বদলালে ভুল হতে পারে, আর মেমরি নষ্ট হতে পারে। সবচেয়ে সহজ সমাধান: একটি বড় তালা — যে thread তালা ধরে আছে, শুধু সে-ই Python bytecode চালাবে। এতে interpreter সরল ও একক thread-এ দ্রুত থাকে, আর C extension লেখা সহজ হয়। ১৯৯০-এর দশকে বেশিরভাগ কম্পিউটারে একটিই core ছিল, তাই সমস্যাও কম ছিল।
এখনকার সমস্যা: CPU-ভারী বিশুদ্ধ Python কোড thread দিয়ে একাধিক core-এ ছড়ানো যায় না। (নেটওয়ার্ক বা ডিস্কের অপেক্ষার সময় GIL ছেড়ে দেওয়া হয়, আর NumPy-র মতো library ভারী কাজে GIL ছাড়ে — তাই অনেক কাজে এটা টেরই পাওয়া যায় না।) বিকল্প হিসেবে আলাদা process (multiprocessing) চালাতে হতো।
পরিবর্তন: GIL সরানোর চেষ্টা বহু বছর ধরে হয়েছে, কিন্তু একক thread-এর গতি কমে যেত। Sam Gross-এর প্রস্তাব PEP 703 ২০২৩ সালে গৃহীত হয়। Python 3.13-এ একটি আলাদা, পরীক্ষামূলক free-threaded build আসে, আর Python 3.14-এ এটি আনুষ্ঠানিকভাবে সমর্থিত হয় — তবে এখনো ঐচ্ছিক, ডিফল্ট build-এ GIL আছে। Free-threading সবার জন্য ডিফল্ট হবে কি না, তা নির্ভর করছে library-গুলোর প্রস্তুতি আর গতির ফলাফলের ওপর।
মূল উপলব্ধি: একটি সময়ের “সরল ও যথেষ্ট ভালো” নকশা পরের যুগের হার্ডওয়্যারে বাধা হয়ে দাঁড়াতে পারে — আর লক্ষ লক্ষ ব্যবহারকারীর ভাষায় সেটা বদলানো ধীর, সাবধানী প্রক্রিয়া। পর্ব ৪১-এ thread, process আর GIL হাতে-কলমে দেখবেন।
প্র ০৫“কোড লেখা হয় একবার, পড়া হয় বহুবার” — এই কথাটা কেন Python-এর নকশার কেন্দ্রে, আর AI-এর যুগে এর গুরুত্ব কি বেড়েছে?
Python-এর স্টাইল-গাইড PEP 8 শুরুতেই Guido-র একটি পর্যবেক্ষণ উদ্ধৃত করে: code is read much more often than it is written — কোড যতবার লেখা হয়, তার চেয়ে অনেক বেশিবার পড়া হয়। একটি ফাংশন হয়তো দশ মিনিটে লেখা, কিন্তু পরের পাঁচ বছরে বাগ খুঁজতে, বদলাতে, রিভিউ করতে সেটি পড়া হবে শতবার — অন্য মানুষ, বা ছয় মাস পরের আপনি নিজে।
এই চিন্তা Python-এর অনেক সিদ্ধান্তে দেখা যায়:
- Indentation বাধ্যতামূলক: C-তে ভুল indentation দিয়ে কোড বিভ্রান্তিকর দেখাতে পারে, অথচ চলে অন্যভাবে। Python-এ যা দেখায়, তা-ই চলে।
- শব্দ, চিহ্ন নয়:
&&-এর বদলেand,!-এর বদলেnot. - “একটি স্পষ্ট উপায়”: সবাই একইভাবে লিখলে অন্যের কোড পড়া সহজ।
- বিতর্কিত বৈশিষ্ট্যে সাবধানতা:
:=(walrus) নিয়ে বিতর্কের মূলে ছিল এই প্রশ্নই — এটা কি কোড পড়া কঠিন করবে?
AI-এর যুগে কী বদলাল? আগে বেশিরভাগ সময় যেত কোড লিখতে; এখন AI কয়েক সেকেন্ডে শত লাইন লেখে। ফলে মানুষের প্রধান কাজ হয়ে দাঁড়িয়েছে পড়া — রিভিউ, যাচাই, ভুল খোঁজা। লেখা আর পড়ার অনুপাত আরও একতরফা হয়েছে। পড়তে সহজ ভাষা তাই আরও মূল্যবান — আবার বিপজ্জনকও, কারণ সুন্দর দেখানো কোডে আমরা ভুল কম সন্দেহ করি। পরিষ্কার নাম, ছোট ফাংশন, type hint আর টেস্ট — এগুলো এখন শুধু “ভালো অভ্যাস” নয়, AI-এর লেখা কোডে আস্থা রাখার উপায়।
মূল উপলব্ধি: কোডের আসল পাঠক মানুষ, কম্পিউটার নয়। Python-এর পড়ার সুবিধা একটি সুযোগ — সেটা কাজে লাগাতে হলে আপনাকে মনোযোগী, সন্দেহপ্রবণ পাঠক হতে হবে।
অনুশীলন
এগুলোর বেশিরভাগে কোড লিখতে হবে না — দেখা, ভাবা আর যাচাই করাই আসল কাজ।
-
কোডটা বদলে দেখুন: উপরের
bkash_total.py-তে list-এর শেষে-2000যোগ করে আবার চালান। চালানোর আগে লিখে রাখুন জমা, খরচ, নিট আর সবচেয়ে বড় খরচ কত হবে বলে আপনার ধারণা।জমা বদলাবে না: 1500. খরচ হবে 525 + 2000 = 2525. নিট হবে 975 − 2000 = −1025, আর
:+থাকায় ছাপা হবে-1025. সবচেয়ে বড় খরচ এখন 2000, কারণmin(transactions)হলো −2000. চালানোর আগে অনুমান করা আর পরে মেলানো — এটাই কোড যাচাইয়ের সবচেয়ে মৌলিক অভ্যাস। -
স্তর চিনুন: নিচের প্রতিটি কোন স্তরের — ভাষা/built-in, standard library, PyPI package, না framework? (ক)
len()(খ)import json(গ)import requests(ঘ) Django (ঙ)import pathlib(ক) built-in — import ছাড়াই পাওয়া যায়। (খ) standard library. (গ) PyPI package — খুব জনপ্রিয় হলেও Python-এর সাথে আসে না,
pip install requestsলাগে। (ঘ) framework (PyPI থেকেই নামাতে হয়)। (ঙ) standard library. মনে রাখবেন:ModuleNotFoundErrorএলে প্রথম প্রশ্ন — এটা কি বাইরের package, আর ইনস্টল করা হয়েছে কি? -
ভাষা বাছাই: নিচের তিনটি কাজে আপনি কোন ভাষা বেছে নেবেন, এক লাইনে কারণসহ: (ক) একটি কলেজের ভর্তি-ফলের ১০ হাজার সারির Excel থেকে বিষয়ভিত্তিক গড় বের করা, (খ) একটি স্মার্টওয়াচের হৃৎস্পন্দন মাপার firmware, (গ) একটি ওয়েবসাইটের বোতামে চাপলে ব্রাউজারেই ছবি বড়-ছোট হওয়া।
(ক) Python (pandas) — একবারের বিশ্লেষণ, গতি নয় লেখার সুবিধাই মুখ্য। (খ) C (বা C++/Rust) — ছোট চিপ, কম মেমরি, ব্যাটারি; সরাসরি হার্ডওয়্যার নিয়ন্ত্রণ দরকার। (গ) JavaScript — ব্রাউজারে স্বাভাবিকভাবে চলে এমন ভাষা এটাই; Python এখানে স্বাভাবিক পছন্দ নয়। একই মানুষ তিনটি কাজে তিনটি ভাষা বেছে নিতে পারেন — এটাই পেশাদার চিন্তা।
-
AI অডিট: যেকোনো AI-কে বলুন “Python-এ একটি প্রোগ্রাম লেখো যা ৫ জন ছাত্রের নম্বর নিয়ে গড় বের করবে।” তারপর উপরের চেকলিস্ট ধরে যাচাই করুন। কোন কোন জায়গায় প্রশ্ন জাগল?
সাধারণত যা দেখা যায়:
- কোডে
input()দিয়ে নম্বর নেওয়া হয়, কিন্তু কেউ “আশি” বা ফাঁকা লিখলেValueErrorদিয়ে প্রোগ্রাম থেমে যায় — ইনপুট যাচাই নেই। - শূন্য জন ছাত্র হলে শূন্য দিয়ে ভাগ (
ZeroDivisionError) সামলানো হয়নি। - গড় অনেক দশমিক ঘরসহ ছাপা হয় — রাউন্ড করার কথা AI ভাবেনি।
এই প্রশ্নগুলো তুলতে পারাই আসল দক্ষতা। এই কোর্সের পর্বগুলো শেষে প্রতিটির সমাধান আপনি নিজেই জানবেন।
- কোডে
নিজেকে যাচাই করুন
ভুল হলে কারণসহ ব্যাখ্যা পাবেন, আবার চেষ্টাও করতে পারবেন।
ক্রমCPython-এ একটি Python প্রোগ্রাম চলার ধাপগুলো সঠিক ক্রমে সাজান (▲▼ চেপে সরান)
- ✍️
.pyফাইলে source code লেখা - 📐 ব্যাকরণ যাচাই করে bytecode-এ অনুবাদ
- 🔁 Interpreter (virtual machine) একটি একটি bytecode নির্দেশ চালায়
- ⚙️ C-তে লেখা built-in ফাংশন বা library আসল কাজ করে
- 🖥️ ফলাফল অপারেটিং সিস্টেম হয়ে স্ক্রিনে
Python ভাষার স্রষ্টা কে, এবং এর প্রথম প্রকাশ্য সংস্করণ কোন সালে আসে?
- Dennis Ritchie, ১৯৭২
- Guido van Rossum, ১৯৯১
- Bjarne Stroustrup, ২০০৮
- Tim Peters, ১৯৯৯
CPython একটি .py ফাইল কীভাবে চালায়?
- পুরো ফাইলকে সরাসরি machine code-এ compile করে একটি .exe বানায়
- কোনো অনুবাদ ছাড়াই লেখাটি অক্ষর ধরে ধরে পড়ে চালায়
- প্রথমে bytecode-এ অনুবাদ করে, তারপর নিজের virtual machine-এ চালায়
- কোডটিকে JavaScript-এ রূপান্তর করে ব্রাউজারে চালায়
NumPy দিয়ে লক্ষ লক্ষ সংখ্যার হিসাব বিশুদ্ধ Python লুপের চেয়ে অনেক দ্রুত হয় — মূল কারণ কী?
- NumPy-র ভেতরের হিসাব C-তে লেখা, compile করা কোডে চলে
- NumPy আলাদা একটি দ্রুত প্রোগ্রামিং ভাষা
- NumPy হিসাবগুলো ইন্টারনেটে বড় সার্ভারে পাঠিয়ে দেয়
- NumPy কিছু সংখ্যা বাদ দিয়ে আনুমানিক হিসাব করে
পুরোনো একটি টিউটোরিয়ালে print "Hello" লেখা আছে। আধুনিক Python-এ এ সম্পর্কে কোনটি সঠিক?
- এটি Python 3-এ ঠিকঠাক চলবে
- এটি শুধু একটি স্টাইলের পার্থক্য, ফল একই
- pip দিয়ে একটি package ইনস্টল করলে চলবে
- এটি Python 2-এর ধাঁচ; Python 3-এ লিখতে হবে
print("Hello")
নিচের কোনটি Python-এর standard library-র অংশ, অর্থাৎ আলাদা ইনস্টল ছাড়াই import করা যায়?
- pandas
- json
- Django
- PyTorch
AI একটি Python প্রোগ্রাম লিখে দিল, আর একবার চালিয়ে ঠিক ফল এলো। এরপর সবচেয়ে ভালো পদক্ষেপ কোনটি?
- একবার চলেছে, তাই কোডটি ঠিক — সরাসরি ব্যবহার শুরু করা
- AI-কেই জিজ্ঞেস করা “কোডটা ঠিক আছে তো?” এবং উত্তর মেনে নেওয়া
- প্রতিটি লাইন বুঝে, ফাঁকা বা অস্বাভাবিক ইনপুটে চালিয়ে, অন্তত একটি ফল হাতে মিলিয়ে দেখা
- কোড লম্বা হলে ধরে নেওয়া যে সব দিক ভাবা হয়েছে
শব্দকোষ
লেখার মধ্যে ডটেড দাগ দেওয়া শব্দে মাউস রাখুন বা চাপুন — অর্থ দেখাবে। এই পর্বের সব নতুন শব্দ এখানে একসাথে:
মনে রাখুন
- Python অগ্রাধিকার দেয় মানুষের সময়কে — পড়তে সহজ, “batteries included”, বিশাল ইকোসিস্টেম; বদলে কাঁচা গতি কিছুটা কম।
- CPython কোডকে bytecode-এ compile করে virtual machine-এ চালায়; ভারী কাজ প্রায়ই C-তে লেখা library করে।
- চার স্তর: ভাষা → standard library → PyPI package → framework; কোনটা কোন স্তরের, জানা জরুরি।
- Guido van Rossum, ১৯৮৯ সালে শুরু, ১৯৯১ সালে প্রকাশ; Python 3 (২০০৮) এখন একমাত্র Python, প্রতি অক্টোবরে নতুন version.
- কাজ অনুযায়ী ভাষা বাছুন, আর AI-এর লেখা Python সবসময় পড়ুন, চালান, হাতে মিলিয়ে যাচাই করুন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পর্ব ০২ · কোডের আগে ভাবা — সমস্যা ভাঙা ও অ্যালগরিদমপরবর্তী পর্বযেকোনো ভাষায় কোড লেখার আগের চিন্তার কাঠামো।
- Python প্রোগ্রামিং · কোর্স হোম৫৫টি পর্বপুরো কোর্সের রোডম্যাপ — কোন পর্ব কখন।
- C কেন? — C প্রোগ্রামিং কোর্সের প্রথম পর্বপাশের ট্র্যাকযে ভাষায় CPython নিজে লেখা — মেশিনের কাছাকাছি থেকে দেখা।
- Python for AIপরের ধাপএই কোর্সের ভিত নিয়ে AI ও ডেটার দিকে এগোতে।
- Data Scienceপরের ধাপpandas, ভিজ্যুয়ালাইজেশন আর বাস্তব ডেটা বিশ্লেষণ।