জাভা ডেভেলপারের চোখে পাইথন: তফাৎ, নতুন বৈশিষ্ট বা ফিচার - ১

জাভা ডেভেলপারের চোখে পাইথন: তফাৎ, নতুন বৈশিষ্ট বা ফিচার - ১
৩১ অগাস্ট, ২০১৮, শুক্রবার

সফটওয়্যার ইঞ্জিনিয়ারের চাকরি ছেড়ে প্রায় ৩ সপ্তাহ হলো পেন স্টেট ইউনিভার্সিটি, এবিংটন (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 -এর যাবতীয় ফাংশন, যেমন ইন্টারসেকশন, ইউনিয়ন, সাবসেট ইত্যাদি অপারেশন করা যায়।  
এই সবগুলোই আমার এখন পর্যন্ত দেখা পাইথনের বিশেষ বৈশিষ্ট বা নতুন ফিচার।  এছাড়াও যে আরো অনেক তফাৎ বা নতুন বৈশিষ্ট আছে - তা যে কেউই অনুমান করবেন। কারো কোনো ভালো রিসোর্স বা লিংক জানা থাকলে শেয়ার করার অনুরোধ থাকলো।  আর নিচে আমার কাছে ভালো লেগেছে এমন কিছু বই বা রিসোর্সের লিংক দিয়ে দিচ্ছি:
  1. টেক্সট বই যেটা আমি পড়াচ্ছি (আমেরিকার হাইস্কুলের একজন শিক্ষকের লেখা বই - খুবই সাবলীল পাঠ্য): Python Crash Course by Eric Matthes
  2. পাইথনে ডাটা স্ট্রাকচার, এলগরিদমের উপর লেখা অনলাইনে আছে, ইন্টারেক্টিভ একটা বই: Problem Solving with Algorithms and Data Structures Using Python by Bradly Miller and David Ranum
  3. বাংলায় পাইথন শেখার ভালো একটা ওয়েবসাইট: https://python.howtocode.com.bd/
  4. তামিম শাহরিয়ার সুবিনের পাইথনের উপর শিক্ষক.কম -এর কোর্স
ধন্যবাদ। 

1 comment:

  1. Hey Nice Blog!! Thanks For Sharing!!!Wonderful blog & good post.Its really helpful for me, waiting for a more new post. Keep Blogging!
    will help you more:
    谷歌优化,baidu seo,谷歌seo,外贸网站建设,独立站引流,海外推广,web development outsourcing China ,web design ,web design China,谷歌推广,外贸英文网站建设,谷歌优化最牛的公司,谷歌排名,英文网站翻译,西安facebook营销,上海谷歌优化,上海谷歌seo,北京谷歌优化,facebook,北京谷歌seo
    外贸建站 推广

    ReplyDelete

কাজের জায়গায় ভুল থেকে শেখা: regex 'র একটা খুব কমন বিষয় যেটা এতদিন ভুল জানতাম

কাজের জায়গায় ভুল থেকে শেখা: regex 'র একটা খুব কমন বিষয় যেটা এতদিন ভুল জানতাম  ৩ ফেব্রুয়ারি, শনিবার, ২০২৪ রেগুলার এক্সপ্রেশন (Regular Exp...