এই পর্বে আমরা পাইথনের ইতিহাস, বৈশিষ্ট্য এবং পাইথন দিয়ে আসলে কী করা যায়, তা সম্পর্কে জানার চেষ্টা করব। কারণ পাইথনের ইতিহাস এবং কাজ আসলেই অনেক মজার!
প্রথমে ইতিহাসের দিকে আসা যাক। আগেই বলে রাখি, আমি উইকিপিডিয়ার মত ইনফরমেটিভ কিন্তু বিরক্তিকর আলোচনায় যাবো না।
আমরা এখন পৃথিবীতে যত আধুনিক প্রোগ্রামিং ভাষা জানি তাদের সবার বাবা-মা দুইটাই হচ্ছে “সি”। এটাকে বলা হয় মধ্যম স্তরের ভাষা। কারণ এর আগের ভাষাগুলো ছিলো “মেশিনের ভাষা”। অর্থাৎ আমার যন্ত্রগণক (কম্পিউটার !) যে ভাষায় কথা বলে সেই ভাষা ! এই ভাষাতে কোড লিখলে যন্ত্রগণক ভাইয়ার লাভ হলেও মানুষের অবস্থা খারাপ হয়ে যেতো। সেখানে থেকে বের হয়ে এসে প্রথম “সি” তেই মেশিন এবং মানুষের ভাষার মাঝে একটা সামঞ্জস্য আনা হয়।
তারপর প্রশান্ত মহাসাগরে অনেক জল গড়িয়েছে। মানুষ তাদের সুবিধার জন্য প্রোগ্রামিং ভাষাকে প্রতিদিন ব্যবহার করা ভাষার কাছাকাছি নিয়ে আসার চেষ্টা করছে। সেই হিসেবে বলা যায়, হাল আমলের “পাইথন” এর মা-বাবা ও হলো “সি”। পাইথনের শরীরের (লাইব্রেরী/ফাংশন ইত্যাদি) বেশ কিছু অংশ “সি”
ব্যবহার করে ডিজাইন করা। এই ভাষা প্রথম প্রকাশ করা হয় ১৯৮৯ সালের ডিসেম্বরে। জনাব Guido van Rossum নামের একজন ডাচ ভদ্রলোক হচ্ছেন এই ভাষার স্রষ্টা। কিছুদিন আগে পাইথনের ৩.৪ ভার্সন বাজারে এসেছে। তবে এখনও ব্যবহারিক দিক দিয়ে পাইথন ২.৭.৬ এর জনপ্রিয়তা বেশি। আর মুখের ভাষার অনেক কাছাকাছি হওয়ায় নবিশ প্রোগ্রামারদের মাঝে এর জনপ্রিয়তাও অনেক বেশি!
আচ্ছা, পাইথনের এত জনপ্রিয়তার কারণ কী শুধু শিখতে সহজ এই কারণেই? মোটেই না। পাইথনের জনপ্রিয়তার একটা মূল কারণ হচ্ছে এটা দিয়ে যেকোন কিছুই করা যায়!
প্রোগ্রামিং ক্যারিয়ারে দুটো ভাগ আছে। একটা হচ্ছে- ডেস্কটপ/ডিভাইস প্রোগ্রামিং, আরেকটা হচ্ছে- ওয়েব প্রোগ্রামিং।আমরা অন্যান্য জনপ্রিয় যেসব ভাষা দেখি তাদের সবগুলোকেই কাজের ক্ষেত্রে এই দুইভাগে বিভক্ত করে ফেলা যায়। ডিভাইস প্রোগ্রামিংয়ে বহুল ব্যবহৃত ভাষা হচ্ছে- সি++, জাভা, অবজেক্ট ওরিয়েন্টেড সি। আর ওয়েব প্রোগ্রামিংয়ে বহুল ব্যবহৃত ভাষা- পিএইচপি, জাভাস্ক্রিপ্ট। এমননা যে, এক ক্যাটাগরীর ভাষাকে দিয়ে আরেক ক্যাটাগরীর কাজ করা যাবে না! তবে লাইব্রেরী আর ম্যানেজমেন্ট খরচের পার্থক্যের কারণে সাধারণত এটা করা হয় না! অথচ “পাইথন” দিয়ে বেশ ভালোভাবেই সমান তালে দুই ক্যাটাগরীর কাজ চালিয়ে যাওয়া সম্ভব !
পাইথনের আছে কিছু ইফেক্টিভ লাইব্রেরী মডিউল (এটাকে রেডিমেড ফাংশন বলা চালে, যারা বিভিন্ন হিসেব জনিত কাজ করতে বেশ পটু) যাদেরকে প্রোগ্রামের যেকোন লাইনে যখন ইচ্ছা তখন ব্যবহার করা যায় । এছাড়া পাইথনের জনপ্রিয় কিছু framework আছে যাদের দিয়ে কাজ করলে সময়ের সাশ্রয় হয় অনেক।
Framework হচ্ছে (সহজ ভাষায়) একটা সিস্টেম যাতে আগে থেকেই কিছু কাজ করে দেওয়া থাকে। এতে প্রোগ্রামার যখন কোন প্রজেক্টে হাত দেয় তখন তার সময় বেঁচে যায় অনেক। Framework কে real estate এজেন্টের সাথে তুলনা করা যায়। যে কিনা জমি ও ইঞ্জিনিয়ার থেকে শুরু করে বাড়ি তৈরির সব কাঁচামাল-ই সরবরাহ করে। বাড়ির মালিক (software Developer) শুধু পছন্দসই ডিজাইনটা বেছে নেয়।
ওয়েবে কাজ করার জন্য পাইথনের Framework হচ্ছে- Flask, Django, Web2Py, Bottle.
গেম ডেভেলপমেন্টের জন্য Framework হচ্ছে- pygame
বিজ্ঞান গবেষণায় ব্যবহার হওয়ার মত- SciPy
সফটওয়ার ডেভেলপমেন্টে সাপোর্ট হিসেবে – SCons
এগুলো হচ্ছে কিছু বহুল ব্যবহৃত পাইথন দিয়ে তৈরি সিস্টেম। এর বাইরেও আরও অনেক Framework/ system আছে।
তারপরও কিন্তু পাইথনের সাথে অন্য ভাষার আসল পার্থক্যটাই বাদ রয়ে যায়। সেটা হচ্ছে, পাইথন হচ্ছে একটা “Scripting language” । এর মানে হচ্ছে, এটা হিসাব-নিকাশের চাইতে Data manipulation এই বেশি সিদ্ধহস্ত। বিশাল বিশাল ডাটা দিয়ে কাজ করার জন্য “পাইথন” লাগবেই।
যেমন- কেউ যদি আপনার হাতে “ভালোবাসা দিবি কিনা বল” সিনেমার স্ক্রিপ্ট হাতে ধরিয়ে বলল,
“১০ মিনিটের মাঝে এই সিনেমায় ঠিক কয়বার চৌধুরী সাহেব বলা হয়েছে তা বের করুন! ”
আপনার মুখ থেকে প্রথম যে কথাটা বের হবে, “এতো অসম্ভব!”
অথচ পাইথন সাথে থাকলে আপনি হয়তো অনন্ত জলিলের মত বলতে পারতেন, “এটা কোন ব্যাপার হল! অসম্ভবকে সম্ভব করাই আমার কাজ!”
আপনাকে যা করতে হত, এই স্ক্রিপ্টের পিডিএফ ভার্সনটা নিয়ে সব ডায়ালগ একটা টেক্সট ফাইলে সেভ করতে হত। তারপর একটা পাইথন কোড লিখতে হত যা কিনা এই টেক্সট ফাইলের সব লাইন পড়বে এবং মোট কয়টা “চৌধুরী সাহেব” শব্দ আছে তা হিসেব করবে। তারপর রান করলেই কেল্লা ফতে !
সবশেষে পাইথনের নামকরণ নিয়ে কিছু বলি। “পাইথন” মানে অজগর হলেও এখানে কিন্তু তা বোঝানো হয়নি। জনাব Guidoo যখন তার তৈরি ভাষার নামকরণ নিয়ে ভাবছিলেন তখন তার মনে প্রথমেই যে জিনিসটা আসে তা হচ্ছে তার পছন্দের টিভি সিরিজ Monty Python’s Flying Circus. বুঝাই যাচ্ছে, এই রকম নামকরণের রহস্য!
আজকে এই পর্যন্তই !
2 comments
ভাই সেইরকম হচ্ছে, চালায় যান। পাইথন নিয়ে আমার নিজস্ব কিছু লেখার পরিকল্পনা ছিল কিন্তু আমার কাজটা আপনিই খুব সুন্দর করে করে দিচ্ছেন। এই জন্য আপনাকে অনেক ধন্যবাদ। তবে ভাই টপিকগুলোর মাঝে যেন ধারাবাহিকতা থাকে, বিষয়বস্তু গুলো যেন বিক্ষিপ্ত না হয় । আর প্রতিটা পর্বে কিছু সমস্যা দিয়ে দিয়েন যাতে করে পাঠকেরা নিজে নিজে ভাবার অবকাশ পায়। আর স্ট্রিং এ যাওয়ার আগে পাইথন দিয়ে গাণিতিক সমস্যা সমাধান করার উপর বেশি জোর দেন, তারপর file, module, object-orientation ইত্যাদি ইত্যাদি বিষয়গুলাতে যাইয়েন। সবার আগে দরকার শক্ত গাণিতিক ভিত্তি।
এই tutorial series এর জন্য শুভকামনা
Author
ধন্যবাদ দিপু। আমি আসলে চাচ্ছি আগে সবগুলো ডাটা টাইপ সম্পর্কে একটা আইডিয়া দিয়ে তারপর অপারেশনাল ব্যাপারগুলোতে যেতে।