Kothay Tip!!!

Did you know your participation in Blog posts can get you points? Create, Like, and Comment to increase your points!!! Also, get a chance to win exciting prizes by participating in the kothay competition. Click here for more! Register or Sign in now to enjoy!!!




Categories

RECENT ACTIVITIES
View All
Dec. 9, 2012, 9:14 p.m.  mafinar received a praise for পাইথন কেন ? and gained 2 points     View
Dec. 9, 2012, 9:14 p.m.  tareq liked পাইথন কেন ? and gained 1 point     View
Dec. 3, 2012, 6:04 p.m.  mafinar updated the blog: পাইথন কেন ?     View
Dec. 3, 2012, 4:25 p.m.  mafinar updated the blog: পাইথন কেন ?     View
Dec. 3, 2012, 4:21 p.m.  mafinar updated the blog: পাইথন কেন ?     View
Dec. 3, 2012, 4:15 p.m.  mafinar updated the blog: পাইথন কেন ?     View
Dec. 3, 2012, 4:13 p.m.  mafinar created a blog: পাইথন কেন ? and gained 5 points     View

পাইথন কেন ?

Posted by mafinar on on Dec. 3, 2012, 6:04 p.m.  

তখন ২০০২ হবে, ১০ মেগা বাইট ডাউনলোড মানে বিরাট কিছু, সী শার্প নতুন নতুন শিখছিলাম তখন... বিভিন্ন সাইট ব্রাউস করতে করতে এক জায়গায় দেখলাম সী শার্প এর সাথে পাইথন এর পার্থক্য নিয়ে একটা আর্টিকেল। সাধারনত জাভা ছিল (এবং এখনো থাকে) সী শার্প এর মূল প্রতিধ্ধন্ধি কিন্তু তখন পাইথন- এক উদ্ভট নাম শুনে ভাবলাম, দেখা যাক কি জিনিস ... তখনি ডাউনলোড করা পাইথন এবং আমার প্রথম পরিচয় dynamically typed programming language এর সাথে। প্রথম কিছুদিন একটু কষ্ট হচ্ছিল type ঘোষণা না করে প্রোগ্রামিং কিন্তু একবার যখন পাইথন ডকুমেন্টেশন এর টিউটোরিয়াল শেষ করলাম এরপর আমার আর পিছে তাকাতে হয়নি। আজ অবধি আমি আমার বেশিরভাগ কাজ পাইথন এই করি, আর যদি পাইথন এর করা না যায় তখন পাইথন দিয়ে প্রোটোটাইপ করে নেই।

অনেকেই আমাকে জিজ্ঞাসা করে, পাইথন কেন? যেখানে বেশিরভাগ মানুষ PHP তে ওয়েব ডেভেলপমেন্ট করে আমি কেন পাইথন এ "কষ্ট" করে কাজ করি, চাকুরী পাওয়া মুশকিল হবে ইত্যাদি ... ভাবলাম আমার বিভিন্ন সময়কার উত্তর এর একটা কম্পাইলেশন এই পোস্ট এ তুলে ধরি।

বেশ পরিচিত হ্যাকার Eric Raymond এর দুটো আর্টিকেল: http://www.catb.org/esr/faqs/hacker-howto.html এবং http://www.linuxjournal.com/article/3882 ছিল আমার প্রথম দিকনির্দেশনা পাইথন এর প্রতি। PHP তে যখন প্রথম (২০০২ এর অনেক পরে ) কাজ করি তখন থেকেই আমার একটা ঘৃনা কাজ করতো এর প্রতি ... $var বলুন আর চরম দুর্বল সিনটেক্স বলুন, PHP এর প্রতি আমার সম্মান কখনই ছিল না ... মনে মনে সব সময়েই ভাবতাম যে পাইথন/রুবি এর মত কিছু একটা দিয়ে (আমি রুবি পারতাম) ওয়েব ডেভেলপমেন্ট হয় কিনা, তখনি পরিচয় হলো Rails এর সাথে ... কিন্তু সাথে সাথে Django এর লিংক ও পেয়েছিলাম, যেহেতু আমার কাছে পাইথন বেশি ভালো লাগত রুবি থেকে (রুবি ও অনেক ভালো, PHP থেকে তো বটেই এবং it was a tough decision choosing between Python vs Ruby, both are awesome). সঙ্গে সঙ্গে PHP এর CakePHP আর Symfony কে মনে হলো ছেলে খেলা এবং powerless এবং এর পর থেকে আমি ওয়েব ডেভেলপমেন্ট এ Python ছাড়া অন্য কিছু করিনি (অবশ্য চিন্তা করছি play framework শিখার)। কিন্তু আমার পার্সোনাল এক্সপেরিয়েন্স এবং পছন্দ যথেষ্ট থাকা উচিত না, আরো বহু গুনাবলী আছে পাইথন এর যে কারণে আমি সব প্রোগ্রামার কে সাজেস্ট করব পাইথন শিখতে।

প্রথমত, কোনো ইউনিভার্সিটি পাইথন শিখায় না, শিখালেও হয়ত খুব কম (এখন এ কথা বাংলাদেশ এর সাপেক্ষে বলতে হয়, MIT সহ অনেকেই এখন পাইথন শিখাচ্ছে)... তাই, যারাই পাইথন শিখে তারা নিজের উত্সাহে শিখে, জানার উদ্দেশ্শে শিখে, পয়সা উপার্জনের জন্য না ... আর যদি এতে সফল হয়, তাহলে বুঝতে হবে তারা ভালো প্রোগ্রামার ... এবং তাদের কাছে অন্য কোনো টেকনোলজি তে যাওয়া কঠিন কিছু না ... সুতরাং আপনার কমিউনিটি তে থাকবে সব self taught প্রোগ্রামার। পাইথন কমিউনিটি (Pythonista ) রা আবার অনেক পার্সোনাল কোড মেনে চলে যা কিনা "import this" পাইথন REPL এ টাইপ করলেই পাওয়া যায় ... ওগুলো শুধুমাত্র পাইথন না, বরং যেকোনো প্রোগ্রামিং এর জন্য প্রযোজ্য। আপনার কোড হবে আরো বোধগম্য এবং আপনি চাইলেও অনেক ক্ষেত্রে খারাপ কোডিং করতে পারবেন না (indentation এ ভুল তো হবেই না)... আপনি যদি পাইথন থেকে অন্য কোথাও যান আপনি ভালো প্রোগ্রামার হিসাবেই যাবেন আর খুব কম সময়েই ভালো হয়ে উঠবেন। এবার আশা যাক অন্য কথায় ... একটা বই আছে Coders At Work (http://www.codersatwork.com/). সেই বইতে বহু প্রোগ্রামার দের ইন্টারভিউ নেওয়া হয় ... অনেকেই পাইথন এর কথা বলেছেন ওখানে। বেশিরভাগ নামী দামী প্রোগ্রামার রা পাইথন কোডিং করে ... এবং সেই কারণে পাইথন এর লাইব্রেরিও অনেক উন্নত। আপনি যা চাইবেন তাই পাইথন এ পাওয়া যাবে, যে category এর প্রোগ্রামিং হোক না কেন। গুগল, NASA, ফেইসবুক এর মত জায়গায় পাইথন ব্যবহার করা হয়, আর সেই অনুপাতে পাইথন এ API ও enriched হয়ে আসছে। এবার আশি আরেকটু technicality তে, পাইথন ভাষা হিসাবে অনেক শক্তিশালী। এমন কিছ কাজ পাইথন এ (সাথে সাথে, রুবি তেও) করা যায় যা কিনা অন্য খুব কম ভাষাতেই সম্ভব। উদাহরণসরূপ বলতে হয় পাইথন এর metaprogramming এবং reflection এর ব্যবহার, মেটাক্লাস, মাল্টিপল ইনহেরিটেন্স ইত্যাদি। যেমন, আপনি প্রোগ্রাম করার সময়েই বলতে পারবেন আপনার প্রোগ্রাম কিরকম আচরণ করবে, runtime এ আপনি variable inspect ইবং intercept করে প্রোগ্রামকে প্রোগ্রামার হিসাবে ব্যবহার করতে পারবেন। এই কাজ ও অন্যান্য ভাষায় করা যায় কিন্তু পাইথন এ এতই সহজ এগুলো করা যে অন্যান্য ভাষায় এক্সপার্ট রাও মাঝে মাঝে জানে না যে তাদের প্রিয় লান্গুয়াগে এ ওগুলো করা যায়। আমি আমার পরবর্তী পোস্ট এ আরো ভালো ভাবে উদাহরণ সহ লিখব এই বিষয়ে। সহজ কথায়, কিছু জটিল প্রোগ্রামিং technique যা অন্য ভাষায় মানুষজন ব্যবহার কম করে, ঐসব কাজ পাইথন সহজ করে দেয়, আর আপনি পাইথন থেকে যদি আপনার মূল ভাষায় ফিরে যান, তখন আপনি আপনার লান্গুয়াগে এ আরো পারদর্শী হয়ে যাবেন, আপনার ব্রেন আরো খুলে যাবে, এবং আপনি অনেক নতুন ভাবে আপনার প্রবলেম সলভ করতে পারবেন আরো দ্রুত।

অনেকেই ছোট সোর্স কোড কে পাইথন এর গুন হিসাবে ধরে (১০০ লাইন এর জাভা = ১০ লাইন পাইথন) কিন্তু আমি সেটাকে cheap marketing strategy মনে করি। আমার কাছে বরং পাইথন এর functional programming ক্ষমতাকে আরো ইন্টেরেস্টিং লাগে। কম্পিউটার প্রোগ্রামিং এর প্রথম দিকের কনসেপ্ট এই functional programming কিন্তু এখন ওই কনসেপ্ট আবার চালু হতে যাচ্ছে multicore/distributed computing এর কারণে। ডিসক্লেইমার: পাইথন "অল্প কিছু" functional নিয়ম পালন করে কিন্তু যাই করে, খারাপ করে না ... অন্ততপক্ষে আপনাকে শুরুতেই Haskell /Lisp শেখা থেকে বাচাবে বরং কিছুটা বিনা মুললেই পরিচয় করিয়ে দিবে ওগুলোর সাথে। map, filter, আর reduce ই বা খারাপ কি? একটা পদক্ষেপ তো নেব হলো। আর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং এও পাইথন এর জুরি নেই, অপারেটর ওভারলোডিং, মাল্টিপল ইনহেরিটেন্স থেকে শুরু করে মেটা ক্লাস আর ডেকরেটর এর মত কনসেপ্ট পাইথন এর শুরু থেকেই পাবেন, যা আপনার জাভা তে করতে গেলে অনেক সাধনা করতে হত (এগুলোর অনেক কিছু আবার জাভা তে নেই-ও). আর মডুলার প্রোগ্রামিং তো রয়েছেই পাইথন এ সেই ১৯৯০ থেকে।

এবার আসা যাক use case এ ... http://wiki.python.org/moin/OrganizationsUsingPython হলো কোম্পানি লিস্ট আর http://wiki.python.org/moin/SchoolsUsingPython হলো ইউনিভার্সিটি লিস্ট। আর যদি জানতে চান কি কি সেক্টর এ কাজ করা যায়, তাহলে বলতে হবে, "যে কোনো" ... তাও অনেক ভালোভাবে। ডেস্কটপ থেকে ওয়েব ডেভেলপমেন্ট পর্যন্ত। আর হাঁ, পাইথন দিয়ে অনেক কম সময়ে অনেক প্রফেশনাল লেভেল এ ওয়েব এপ্লিকেশন তৈরী করা যায়। কম সময় বলতে, মাসের কাজ দিনে, তাও secured, bug-free এবং readable উপায় এ. এই বিষয়ে আমি আরো কিছু লিখব পরবর্তী পোস্ট এ কিন্তু আপাতত https://www.djangoproject.com/ ঘুরে আসুন।এই ওয়েবসাইট টি (http://www.kothay.com) মাত্র ১ মাসের কম সময়ে ডেভেলপ করা হয়েছে ১ জন মানুষ দিয়ে (এখন এই ধরনের সাইট আবার বানাতে লাগবে ৫ দিন , ওই বিষয়ে পরে কথা বলব )

পাইথন খুব সহজ কিন্তু শক্তিশালী একটি লান্গুয়াগে। আমি ৭ দিনে শিখেছি পাইথন এমন এক সময়ে যখন আমি নিজেই নতুন নতুন প্রোগ্রামিং শিখি। এবং আজ অবধি খুব কম কাজ দেখেছি যা পাইথন করতে পারে না (তাও আবার খুব সহজে), ম্যাপিং থেকে আরম্ভ করে সার্ভার লিখা পর্যন্ত, সব ধরনের কাজ এ পাইথন অন্যান্য লান্গুয়াগে থেকে সহজতর। আমি আগামী কিছুদিন পোস্ট করব পাইথন/django শেখার ব্যাপার এ। আমি সাধারনত ভালো লিখতে পারি না তাই লিখার মান ভালো না হলে পিটাবেন না। আমি আশা করি আপনাদের কাজে আসতে পারব।

You are not a follower
Follow?
This post was billed under the category Tutorials
 Tags:  python   tutorial   programming