গত পর্বগুলোতে আমরা পাইথনের কিছু সাধারণ আলোচনা দেখেছি। কিন্তু একজন ডেভেলপার খুব স্বাভাবিকভাবেই এই প্রশ্নটা করতে পারেন যে পাইথন টেকনিক্যালি কতটা উপযোগী? এই পর্বে আমরা এই বিষয়টি নিয়েই আলোচনা করব।

অবজেক্ট ওরিয়েন্টেড (Object Oriented)

পাইথন procedural (উদাহরণস্বরুপ) এবং অবজেক্ট ওরিয়েন্টেড দুই ধরনের প্রোগ্রামিং প্যারাডাইম (Paradigm) সমর্থন করে। কোন প্রোগ্রমিং ল্যাঙ্গুয়েজ অবজেক্ট ওরিয়েন্টেড হতে হলে পলিমরফিজম (Polymorphism), ইনহেরিটেন্স (Inheritance), এনক্যাপস্যুলেশন (Encalsulation), অ্যাবস্ট্র্যাকশন (Abstraction) ইত্যাদি ফিচারগুলো সমর্থন করতে হয়, আর পাইথনে এর সবগুলোই বিদ্যমান। অধিকন্তু অন্যান্য প্রোগামিং ল্যাঙ্গুয়েজের থেকেও পাইথনে এই বিষয়গুলো অনেক বেশি সহজবোধ্য। এজন্য কোড পুনঃব্যবহার (Reuse) করাটাও অনেক সহজ।

পোর্টেবল (Portable)

মজার ব্যাপার হচ্ছে এই পাইথন ভাষাটি লেখা হয়েছে পোর্টেবল ANCI C ল্যাঙ্গুয়েজ ব্যবহার করে। যার কারণে পাইথন অধিকাংশ প্ল্যাটফর্মেই ভার্চুয়ালি কাজ করতে পারে। বর্তমান সময়ে পরিচিত যেকোন কম্পিউটার অপারেটিং সিস্টেম থেকে শুরু করে মোবাইল সিস্টেমেও চলতে সক্ষম। উদাহরণস্বরুপ –

  • Windows Operating System
  • Linux Operating System
  • Mac OS
  • Symbian OS
  • Gaming Console
  • Android OS
  • Pocket PS systems etc.

আগেই বলা হয়েছে যে পাইথনের বিভিন্ন GUI ভিত্তিক লাইব্রেরি আছে , তাই মূল কোডের কোন বড় ধরনের পরিবর্তন না করেই বিভিন্ন অপারেটিং সিস্টেমের জন্য খুব সহজেই সফটওয়্যার বানানো যায়।

এটা ফ্রি (It’s Free)

পাইথন সম্পূর্ণ ফ্রি এবং ওপেনসোর্স ল্যাঙ্গুয়েজ। ওপেনসোর্স হবার কারণে এর সাপোর্টও অসাধারন। পৃথিবীর যেকোন প্রান্ত থেকে যে কেউ এখানে অবদান রাখতে পারে, যার ফলে পাইথনের এত এত লাইব্রেরি এবং API.

এটা তুলনামূলকভাবে শেখা এবং ব্যবহার করা সহজ (It is relatively easy to learn and use)

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

পাইথন ব্যবহার করা সহজ। আমার ব্যক্তিগতভাবে কোন পাইথন প্রোগ্রাম লেখার সময় মনে হয় কোন স্যুডো কোড (Pseudo code) লিখছি। কোন ডাটা টাইপের দরকার নেই, কোন স্পেশাল বিরামচিহ্নের দরকার নেই, শুধু এলাইনমেন্ট (alignment) ঠিক করে লিখে গেলেই হয়।

হাইব্রিড ফিচার (Hybrid Feature)

ফিচারের দিক থেকে পাইথন স্ক্রিপ্টিং ভাষা থেকে শুরু করে সিস্টেম ডেভেলপমেন্ট ভাষা সবগুলোকেই অন্তর্ভূক্ত করেছে; তাই এক কথায় এটাকে হাইব্রিড প্রোগ্রামিং ভাষা বলা যায়। নিচে কিছু গুরুত্বপূর্ণ ফিচার নিয়ে আলোচনা করা হল –

  • স্বয়ংক্রিয় মেমরি ব্যবস্থাপনা (Automatic Memory Management)
    • আমার প্রথম প্রোগ্রামিং এর হাতেখড়ি শুরু হয় সি প্রোগ্রামিং দিয়ে। সেখানে একটা অধ্যায় মেমরি অ্যালোকেশন নিয়ে বিশদ আলোচনা ছিল। পয়েন্টার ব্যবহার করতে গেলে malloc দিয়ে মেমরি ম্যানেজ করা লাগত, যেটা খুবই ঝামেলার ছিল। কিন্তু পাইথন নিজেই স্বয়ংক্রিয়ভাবে মেমরি ম্যানেজ করে থাকে, তাই মেমরি ডাম্প হবার কোন ভয় নেই।
  • ডাইনামিক টাইপিং (Dynamic Typing)
    • প্রচলিত অধিকাংশ প্রোগ্রামিং ভাষা তে ডাটা টাইপ নির্দিষ্ট করে দিতে হয় অর্থাৎ কোন ভ্যারিয়েবল নাম্বার (Number) হবে নাকি স্ট্রিং (String) হবে এটা নির্ধারণ (Define) করা বাধ্যতামূলক; কিন্তু পাইথনে এই ধরনের কোন ঝামেলা নেই, ভ্যারিয়েবল ডিক্লেয়ার (Declare) করলেই হয়। টাইপ কি হবে বা সাইজ কত হবে এটা নিয়ে মাথা ঘামানোর কোন প্রয়োজন নেই।
  • মডুলার প্রোগ্রামিং (Modular Programming)
    • পাইথন মডুলারিটি (Modularity) অনুসরণ করে অর্থাৎ পাইথনের কোডগুলো মডিউল (Module), ক্লাসে (Class) বিভক্ত যার কারণে কোড পুনঃব্যবহার (Code reusable) করা অনেক সহজ হয়।
  • বিল্ট-ইন অবজেক্ট (Build in Object)
    • পাইথনে প্রয়োজনীয় সকল ডাটা স্ট্রাকচার যেমন লিস্ট, ডিকশনারি, সেট ইত্যাদি বিল্ট-ইন ভাবেই পাওয়া যায়, অর্থাৎ আলাদাভাবে এটাকে তৈরি করার দরকার নেই। শুধু তাইই নয়, বিভিন্ন অ্যালগরিদম যেমন সর্টিং বা ম্যাপিং সহজেই ব্যবহার করা যায়।
  • থার্ড পার্টি সাপোর্ট (Third party support)
    • যেহেতু পাইথন একটি ওপেনসোর্স ভাষা তাই যেকোন কাজের জন্য অসংখ্য থার্ড পার্টি লাইব্রেরি বা ফ্রেমওয়ার্ক পাওয়া যায়।