গত পর্বগুলোতে আমরা পাইথনের কিছু সাধারণ আলোচনা দেখেছি। কিন্তু একজন শিক্ষানবিশ, প্রোগ্রামার বা ডেভেলপার খুব স্বাভাবিকভাবেই এই প্রশ্নটা করতে পারেন যে পাইথন প্রযুক্তিগতভাবে (Technically) কতটা উপযোগী? এই পর্বে আমরা এই বিষয়টি নিয়েই আলোচনা করব।
অবজেক্ট ওরিয়েন্টেড (Object Oriented)
পাইথন প্রসিডিউরাল (procedural), অবজেক্ট ওরিয়েন্টেড এবং ফাংশনাল প্রোগ্রামিং তিন ধরনের প্রোগ্রামিং প্যারাডাইম (Paradigm) সমর্থন করে। কোন প্রোগ্রমিং ল্যাঙ্গুয়েজ অবজেক্ট ওরিয়েন্টেড হতে হলে পলিমরফিজম (Polymorphism), ইনহেরিটেন্স (Inheritance), এনক্যাপস্যুলেশন (Encalsulation), অ্যাবস্ট্র্যাকশন (Abstraction) ইত্যাদি ফিচারগুলো সমর্থন করতে হয়, আর পাইথনে এর সবগুলোই বিদ্যমান। অধিকন্তু অন্যান্য প্রোগামিং ল্যাঙ্গুয়েজের থেকেও পাইথনে এই বিষয়গুলো অনেক বেশি সহজবোধ্য। এজন্য কোড পুনঃব্যবহার (Reuse) করাটাও অনেক সহজ।
পোর্টেবল (Portable)
মজার ব্যাপার হচ্ছে এই পাইথন ভাষাটি লেখা হয়েছে পোর্টেবল ANCI C ল্যাঙ্গুয়েজ ব্যবহার করে। যার কারণে পাইথন অধিকাংশ প্ল্যাটফর্মেই ভার্চুয়ালি কাজ করতে পারে। অনেকগুলো প্রোগামিং ল্যাঙ্গুয়েজে আলাদা আলাদা প্ল্যাটফর্মে প্রোগ্রাম রান করার জন্য কোডে পরিবর্তন করতে হয়, কিন্তু পাইথন ( write once, run anywhere”) ফিচার এর জন্য একটি কোড দিয়েই যেকোনো প্ল্যাটফর্মে সেই কোডটি রান করতে পারবেন । বর্তমান সময়ে পরিচিত যেকোন কম্পিউটার অপারেটিং সিস্টেম থেকে শুরু করে মোবাইল সিস্টেমেও চলতে সক্ষম। উদাহরণস্বরুপ –
- Windows Operating System
- Linux Operating System
- Mac OS
- Symbian OS
- Gaming Console
- Android OS
- Pocket PS systems etc.
আগেই বলা হয়েছে যে পাইথনের বিভিন্ন GUI ভিত্তিক লাইব্রেরি আছে , তাই মূল কোডের কোন বড় ধরনের পরিবর্তন না করেই বিভিন্ন অপারেটিং সিস্টেমের জন্য খুব সহজেই সফটওয়্যার বানানো যায়।
এটা ফ্রি (It’s Free)
পাইথন সম্পূর্ণ ফ্রি এবং ওপেনসোর্স ল্যাঙ্গুয়েজ। OSI-অনুমোদিত ওপেন-সোর্স লাইসেন্স এর অধীনে পাইথন তৈরি করা হয়েছে, আর এটি বাণিজ্যিক উদ্দেশ্য সহ সবার ব্যবহার এবং বিতরণের জন্য পাইথনকে ফ্রি করা হয়েছে । ওপেনসোর্স হবার কারণে এর সাপোর্টও অসাধারন। পৃথিবীর যেকোন প্রান্ত থেকে যে কেউ এখানে অবদান রাখতে পারে, যার ফলে পাইথনের এত এত লাইব্রেরি এবং API.
পাইথন তুলনামূলকভাবে শেখা এবং ব্যবহার করা সহজ (Python is relatively easy to learn and use)
এটা আগেও উল্লেখ করা হয়েছে যে অন্যান্য প্রোগ্রামিং ভাষার চেয়ে পাইথন শেখা তুলনামূলকভাবে অনেক সহজ। এমনকি আপনি যদি অন্য প্রোগ্রামিং ভাষা আগে শিখে থাকেন তাহলে একদিনের ভিতরেই বেসিক প্রোগ্রামিং শিখে যাবেন। যেকোন কিছুতে এক্সপার্ট হবার জন্য যথেষ্ট সময়ের প্রয়োজন হয়, একইভাবে এখানেও এক্সপার্ট হতে সময় দিতে হবে।
পাইথন ব্যবহার করা সহজ। আমার ব্যক্তিগতভাবে কোন পাইথন প্রোগ্রাম লেখার সময় মনে হয় কোন স্যুডো কোড (Pseudo code) লিখছি। কোন ডাটা টাইপের দরকার নেই, কোন স্পেশাল বিরামচিহ্নের (Punctuation) দরকার নেই, শুধু এলাইনমেন্ট (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)
- যেহেতু পাইথন একটি ওপেনসোর্স ভাষা তাই যেকোন কাজের জন্য অসংখ্য থার্ড পার্টি লাইব্রেরি বা ফ্রেমওয়ার্ক পাওয়া যায়।
- অন্যান্য প্রোগ্রামিং ভাষার সাথে সহজে একত্রিত হতে পারা (Easy-to-integrate with Other Programming Languages)
- পাইথনের আরো একটি বিশেষ ফিচার রয়েছে । পাইথন শুধু Jython এবং Cython এর মতো টুলস এর সাথে কাজ করে না , পাইথন সহজেই API এর মাধ্যমে অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজ এর সাথে একত্রিত হতে পারে ।
দ্রুত ডেভেলপমেন্ট ( Rapid Development)
ব্যবহারকারীরা পাইথন প্রোগ্রামিং ভাষা ব্যবহার করে নতুন ধরনের অ্যাপ্লিকেশন তৈরি করতে পারে। পাইথনের বহুমুখীতার (versatility) কারণে, এই ভাষা প্রোগ্রামারদেরকে নতুন জিনিস চেষ্টা করার অনুমতি দেয়। অন্যান্য প্রোগ্রামিং ভাষাতে পাইথনের মতো ফ্লেক্সিবিলিটি এবং স্বাধীনতার দিয়ে থাকে না ।
একটিভ পাইথন কমিউনিটি সাপোর্ট (Active Python Community Support )
পাইথন ব্যবহারকারীরা পাইথনের লাইব্রেরি বিকাশে এবং ভাষার উন্নতিতে অনেক অবদান রাখতে পারে। অনেক ব্যক্তি পাইথনকে বড় এবং উন্নত করার জন্য কাজ করে যাচ্ছে । আর এই সকল অবদান এর জন্যই এখন পর্যন্ত দুই লাখের অধিক কাস্টম-নির্মিত সফ্টওয়্যার প্যাকেজ আপলোড করা হয়েছে ৷ আর পাইথন আরো বেশি আকর্ষণীয় হয়ে উঠেছে কমিনিউটি সাপোর্ট এর জন্য। আপনি যদি কোনো সমস্যায় পড়ে যান তবে আপনি কমিনিউটি সাপোর্ট থেকে খুব তাড়াতাড়ি সাহায্য পেয়ে যাবেন ।
নিরাপত্তা (Security)
Worldwide Application Security Project (OWASP) পাইথন সিকিউরিটি প্রজেক্টের কারণে এটি সবচেয়ে নিরাপদ প্রোগ্রামিং ভাষাগুলির মধ্যে একটি। এটি ব্যবহার করে প্রোগ্রামাররা তাদের কোডের সিকিউরড ভার্সন তৈরি করে রাখতে পারে । এতে করে হ্যাকিং থেকে শুরু করে কোড ম্যানিপুলেশনে আরো বেশি প্রতিরোধী হয়ে উঠতে পারে।
শেষ কথা
পাইথনের কিছু অসুবিধা রয়েছে যেমন স্লো স্পিড, মেমরি বেশি নেয়, মোবাইল এপ্লিকেশনে দুর্বল, রানটাইমে এরর দেখা দিতে পারে । তবে এই সকল সমস্যা বাদে আপনি পাইথনে খুব সহজে এবং ভালোমতো প্রোগ্রামিং করতে পারবেন । তাই এই সকল সমস্যা নিয়ে চিন্তার কোনো কারণ নেই ।
আসসালামু আলাইকুম ।
স্যার আশা করি ভাল আছেন।
আমি পাইথন প্রোগ্রামিং নতুন শুরু করেছি। পাইথন এর মাধ্যমে ডাটা এনালাইসিস এবং স্ট্যাটিসটিক্যাল ক্যালকুলেশন করতে চাই।
এজন্য কিভাবে কাজ করলে ভালো দক্ষতা অর্জন করতে পারব জানালে উপকৃত হবো।
আরেকটা বিষয় গবেষণার জন্য ডাটা এনালাইসিস এর কি কি দক্ষতা থাকা উচিত জানালে উপকৃত হব।
ধন্যবাদ
ওয়ালাইকুম আসসালাম।
ডাটা এনালাইসিস এবং স্ট্যাটিসটিক্যাল ক্যালকুলেশন এর জন্য Numpy এবং Pandas শিখলে ভাল হবে।
গবেষণার জন্য কি কি বিষয়ে জানতে হবে সেটা পরে একটা ব্লগে প্রকাশ করার ইচ্ছা আছে।
গবেষণা কি নিয়ে করতে চান সেটা বললে বলা আরো সহজ হত। গবেষণা তো বিশাল একটা বিষয় সেখান থেকে সাধারণভাবে তথ্য দেওয়া মুশকিল।