জাভা ডেভেলপারের চোখে পাইথন: তফাৎ, নতুন বৈশিষ্ট বা ফিচার
জাভা ডেভেলপারের চোখে পাইথন: তফাৎ, নতুন বৈশিষ্ট বা ফিচার
সফটওয়্যার ইঞ্জিনিয়ারের চাকরি ছেড়ে প্রায় ৩ সপ্তাহ হলো পেন স্টেট ইউনিভার্সিটি, এবিংটন (Penn State University at Abigton) -এ শিক্ষক হিসেবে জয়েন করেছি। পড়াচ্ছি পাইথনের উপর ২ টি আন্ডারগ্রেড কোর্স। একটা একদম বেসিক কোর্স, আরেকটা একটু এডভান্স লেভেলের কোর্স (পাইথন দিয়ে ডাটা স্ট্রাকচার)। পড়াচ্ছি বলতে আক্ষরিক অর্থেই শিখে শিখে পড়াচ্ছি। আমি সবসময়ই জাভা তে কোড করেছি — একটু আধটু সি কিংবা সি# -এ কাজ করলেও মূলতঃ জাভাতেই কাজ করেছি। আর তাই, নতুন করে শিখতে গিয়ে পাইথনের নতুন ফিচার বা জাভা থেকে আলাদা যেসব বৈশিষ্ট চোখে পড়ছে — তাই নোট করে রাখার উদ্দেশ্যেই আজকের লেখা, হয়তো কারো উপকারে আসবে। এখন পর্যন্ত যা চোখে পড়েছে তাই লিখছি, পরে আরো কিছু শিখলে/দেখলে লিখে রাখবো।
শুরু করার আগে বলে নেই, অনলাইনে পাইথনের উপর, ইন্টারেক্টিভ এই বইয়ের ১.৮ সেকশন — এনিচের প্রায় সবগুলো পয়েন্টের উদাহরণ সহ ব্যাখ্যা পাওয়া যাবে। আর বইয়ের রেফারেন্স সবশেষে দিয়ে দিচ্ছি:[২]।
- পাইথন ইন্টারপ্রেটেড ল্যাঙ্গুয়েজ — আর তাই, যেকোনো মেথড কোথাও ব্যবহার করতে হলে বা কল করতে হলে মেথডের বডি হয় আগে (অর্থাৎ, ফাইলে কল করার আগেই) লিখে রাখতে হবে, অথবা ইম্পোর্ট করে আগেই ইন্টারপ্রেটারের কাছে চিনিয়ে রাখতে হবে।
- পাইথন জাভার মতো ‘Strongly Typed’ ল্যাংগুয়েজ না। ভ্যারিয়েবল -র টাইপ বলে দিতে হয় না, পাইথন নিজে থেকেই এসাইনমেন্ট -এর উপর ভিত্তি করে ভ্যারিয়েবলের টাইপ ঠিক করে নেয়। যেমন, myVar = 5
- পাইথনে ক্যার্লি ব্রেইস (‘{‘, ‘}’) -র কিংবা কোডের শেষে সেমিকোলনের (;) বালাই নেই। পাইথন কোডের ইন্ডেন্টেশন উপর ভিত্তি করে নিজে থেকেই কোডের স্কোপ বুঝে নেয়। অবশ্য ‘for’ লুপ কিংবা ‘if’, ‘else’ এর শুরুটা কোলন (:) চিহ্ন দিয়ে বোঝাতে হয়।
- ‘else if’ কে পাইথন সংক্ষেপে elif বলে!
- পাইথনে Array বলে কিছু নেই। তার বদলে যা আছে, তা Array, Linked List আর Stack -এর মিশেল! একে List বলে। যেমন: myList = [1, 2, 3, “Cat”, False]
- Array -র মতো ইনডেক্স বেসড এলিমেন্ট একসেস করা যায়
- LinkedList -র মতো দুটো এলিমেন্টের মাঝে আবার নতুন এলিমেন্ট ইন্সার্ট করার উপায়ও আছে।
- Stack -এর পুশ, পপ -এর মতো পাইথনের লিস্টের শেষ এলিমেন্টের পর এপেন্ড বা শেষ এলিমেন্ট পপ করা যায়।
- লিস্টে একটা ভ্যালু কয়বার আছে, তাও কাউন্ট করার মেথড আছে।
- পাইথনের লিস্টে একই টাইপ ভ্যালু রাখার কোনো বাধ্যবাধকতা নেই। একই লিস্টে একসাথে ইন্টিজার, স্ট্রিং কিংবা ফ্লোট টাইপ ভ্যালু রাখা যায়।
- পাইথনে লিস্টের শেষ থেকে এলিমেন্ট একসেস করা যায়। myList [-1] লিস্টের শেষ এলিমেন্ট, myList[-2] তেমনি লিস্টের শেষ থেকে দুই নম্বর এলিমেন্ট রিটার্ন করবে!
- পাইথনে কোনো Switch-Case স্টেটমেন্ট নেই।
- for লুপের কাউন্টার ভ্যারিয়েবল (for counter in range(10: …) শুধু for লুপের মধ্যেই সীমাবদ্ধ না। for লুপের বাইরেও কাউন্টার ভ্যারিয়েবল তার ভ্যালু ধরে রাখে, তাকে ব্যবহারও করা যায়।
- ইন্টিজার ডিভিশন নামে পাইথনে নতুন এক ধরণের অপারেটর (ডাবল স্ল্যাশ // — জাভাতে যেটা কমেন্ট ) চালু করা হয়েছে। 3 / 2 পাইথনে যেখানে 1.5 রেসাল্ট দিবে, 3 // 2 দিবে শুধু 1
- কোডে কমেন্ট করার জন্য পাইথনে হ্যাশ চিহ্ন ‘#’ ব্যবহার করা হয়।
- জাভাতে এক্সপোনেন্ট (যেটাকে আমরা সাধারণত ‘পাওয়ার’ বলি, 3 পাওয়ার 3 = 27) অপারেটর না থাকলেও পাইথনে আছে। ডাবল মাল্টিপ্লিকেশন (**) দিয়ে তা বোঝানো হয়। পাইথনে 3 ** 3 = 27
- জাভাতে true, false স্মল লেটারে লেখা হয়, পাইথনে তা টাইটেল ফন্টে, অর্থাৎ প্রথম লেটার ক্যাপিটালাইজড: True, False
- লজিকাল এন্ড, অর বা নট (জাভাতে যা &&, ।।, !) পাইথনে শব্দাকারে and, or বা not হিসাবে লেখা হয়।
- পাইথনে String দুইভাবে ডিফাইন করা যায়। সিঙ্গেল কিংবা ডাবল কোট ব্যবহার করে String ডিফাইন করা যায়, যেমন: ‘This is a string’ বা “This is a string” — দুটোই একই String, অর্থাৎ কোট ম্যাচিং হতে হবে। খেয়াল রাখতে হবে, শুরুতে সিঙ্গেল কোট আর শেষে ডাবল কোট দিলে (বা উল্টোটা করলে) হবে না। যেমন: ‘This is invalid string” কোনো String না, এভাবে লিখলে Syntax Error হবে। এতে করে মজার ব্যাপার হচ্ছে ‘Someone just said: “Python is fun!” — and I agree’ — এটাও একটা ভ্যালিড String!
- জাভাতে যেটা null পাইথনে সেটা None
- পাইথনে Math -এর Set ডিক্লেয়ার করা যায়। যেমন : mySet = {1, 2, 3, True, ‘Cat’ }, অর্থাৎ, ক্যার্লি ব্রেইস ব্যবহার করে Set ডিফাইন করা যায়। আর Set -এর যাবতীয় ফাংশন, যেমন ইন্টারসেকশন, ইউনিয়ন, সাবসেট ইত্যাদি অপারেশন করা যায়।
এই সবগুলোই আমার এখন পর্যন্ত দেখা পাইথনের বিশেষ বৈশিষ্ট বা নতুন ফিচার। এছাড়াও যে আরো অনেক তফাৎ বা নতুন বৈশিষ্ট আছে — তা যে কেউই অনুমান করবেন। কারো কোনো ভালো রিসোর্স বা লিংক জানা থাকলে শেয়ার করার অনুরোধ থাকলো। আর নিচে আমার কাছে ভালো লেগেছে এমন কিছু বই বা রিসোর্সের লিংক দিয়ে দিচ্ছি:
- টেক্সট বই যেটা আমি পড়াচ্ছি (আমেরিকার হাইস্কুলের একজন শিক্ষকের লেখা বই — খুবই সাবলীল পাঠ্য): Python Crash Course by Eric Matthes
- পাইথনে ডাটা স্ট্রাকচার, এলগরিদমের উপর লেখা অনলাইনে আছে, ইন্টারেক্টিভ একটা বই: Problem Solving with Algorithms and Data Structures Using Python by Bradly Miller and David Ranum
- বাংলায় পাইথন শেখার ভালো একটা ওয়েবসাইট: https://python.howtocode.com.bd/
- তামিম শাহরিয়ার সুবিনের পাইথনের উপর শিক্ষক.কম -এর কোর্স
মন্তব্যসমূহ
একটি মন্তব্য পোস্ট করুন