পাইথন এবং জাভাস্ক্রিপ্ট দুটোই খুবই জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ। যারা নতুন প্রোগ্রামিং শিখেন, তাদের বেশিরভাগ অংশ শুরুতে পাইথন কে নির্বাচন করেন শেখার জন্য। বর্তমান পৃথিবীতে বেশিরভাগ সফটওয়্যার যেমন ইউটিউব, পিন্টারেস্ট, ইনস্টাগ্রাম সহ নানা ওয়েবসাইট পাইথন প্রোগ্রামিং ল্যাংগুয়েজের তৈরি।
2018 আগ পর্যন্ত পাইথনকে বলা হয়ে হত নতুন শিক্ষার্থীদের সবচেয়ে জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ। কিন্তু 2019 এবং 2020 সালে দেখা যাচ্ছে পাইথন শেখার আগ্রহীদের সংখ্যা কিছুটা কমেছে। এখন শিক্ষার্থীরা জাভাস্ক্রিপ্ট শেখায় বিশেষ মনোনিবেশ করছে।
তাই আজকে আমরা আলোচনা করব পাইথন এবং জাভাস্ক্রিপ্ট কোনটি আপনার দৃষ্টিকোন থেকে ভালো হবে।
কেন আমরা জাভাস্ক্রিপ্ট এবং পাইথন এর পার্থক্য করি?
পাইথন এবং জাভাস্ক্রিপ্ট দুটোই খুব জনপ্রিয় প্রোগ্রামিং ল্যাঙ্গুয়েজ। যেখানে জাভাস্ক্রিপ্ট শুধুমাত্র ওয়েব ডেভেলপমেন্ট ডোমেইন নিয়ে কাজ করে, সেখানে পাইথন ওয়েব ডেভলপমেন্ট ডোমেইন সহ বিভিন্ন রকম অ্যাপ্লিকেশন ডোমেইন নিয়ে কাজ করে থাকে।
পাইথন তারাই পছন্দ করে যারা নতুন প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখছে। পাইথন মোবাইল অ্যাপ্লিকেশনের জন্য খুব সুবিধার নয়। কিন্তু জাভাস্ক্রিপ্ট তুলনামূলক মোবাইল অ্যাপ্লিকেশনের জন্য উপযুক্ত। আবার পাইথন জাভাস্ক্রিপ্টের তুলনায় অনেক স্লো রান করে। জাভাস্ক্রিপ্ট ব্রাউজার এবং সার্ভার দুটোর ক্ষেত্রেই সমান ভাবে কাজ করে। কিন্তু পাইথন শুধুমাত্র সার্ভার সাইড প্রোগ্রামে কাজ করে থাকে।
এইচটিএমএল ল্যাঙ্গুয়েজ হচ্ছে এক প্রকার ব্রাউজার অরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ। যেখানে কোন প্রকার চেঞ্জ করতে হলে কোডের মধ্যে ইডিট করে তারপর সেটি আপলোড করতে হয়। যাকে আমরা বলি ব্রাউজার অরিয়েন্টেড। আর অপরদিকে সার্ভার অরিয়েন্টেড হচ্ছে wordpress-এর পিএইচপি সহ আরো বিভিন্ন ধরনের ল্যাঙ্গুয়েজ।
এই সার্ভার অরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলো প্রয়োজন মত ইনস্ট্যান্ট চেঞ্জ সব জায়গায় করা যায়। যেমন কেউ যদি ওয়ার্ডপ্রেসে ইলিমেন্টর বিল্ডার ব্যবহার করে কোন প্রকার চেঞ্জ নিয়ে আসে, তারপর অরিয়েন্টেড প্রোগ্রামিং ল্যাঙ্গুয়েজ গুলোর কারণে সব জায়গায় ওই পরিবর্তন টা দৃশ্যমান হয়। এই কারণে সার্ভার অরিয়েন্টেড অবশ্যই একপ্রকার অ্যাডভান্টেজ। কিন্তু এইচটিএমএল সার্ভার অরিয়েন্টেড না হওয়ায় এধরনের ল্যাঙ্গুয়েজে কোন প্রকার চেঞ্জ নিয়ে আসতে হলে মেইন কোডগুলো চেঞ্জ করতে হয়।
পাইথন কি?
পাইথন এক প্রকার প্রোগ্রামিং ল্যাঙ্গুয়েজ। ভার্চুয়াল প্রতিটি সাইন্টিফিক অ্যাপ্লিকেশনের জন্য একপ্রকার অপরিহার্য টুলস। সারা বিশ্বব্যাপী ডাটা সায়েন্স, আর্টিফিশিয়াল ইন্টেলিজেন্স, মেশিন লার্নিং, কম্পিউটার অ্যাডুকেশন, কম্পিউটার ভিশন, ইমেজ প্রসেসিং, মেডিসিন, বায়োলজি এবং অ্যাস্ট্রোনমিতে সায়েন্টিফিক স্পেশালাইজড অ্যাপলিকেশন হিসেবে ব্যবহার হয়ে আসছে।
পাইথন ওয়েব ডেভেলপমেন্ট ব্যবহার করা যায়। এটি মূলত ওয়েবসাইটের back-end ডেভলপমেন্ট-এ ব্যবহার দেখা যায়।
জাভাস্ক্রিপ্ট কি?
যেখানে পাইথন শুধুমাত্র back-end ডেভলপমেন্ট-এ ব্যবহার করা হয়, সেখানে জাভাস্ক্রিপ্ট back-end এবং front-end দুই কাজে সমান ভাবে ব্যবহার করা যায়। ফ্রন্ট এন্ড ডেভেলপমেন্ট বলতে ওয়েবসাইটের বাহ্যিক অবকাঠামো অবস্থায় কোন প্রকারের চেইঞ্জকে বোঝানো হয়। অর্থাৎ আপনি চেঞ্জ করবেন ওয়েবসাইটের বাহ্যিক অবস্থার মধ্যে, কিন্তু মূলত চেঞ্জ হবে back-end-এ, যা মুলত জাভাস্ক্রিপ্ট ল্যাঙ্গুয়েজ করে থাকে। জাভাস্ক্রিপ্ট world-wide ব্যবহার করা হয় কারণ এটির ভার্সেটাইল ব্যবহার আমাদের ওয়েব অ্যাপ্লিকেশন বিভিন্ন পরিবর্তনে যথেষ্ট পরিমাণ স্বাধীনতা দিয়ে থাকে।
পাইথন এবং জাভাস্ক্রিপ্ট এর মধ্যে পার্থক্য-
- REPL(Read-Eval-Print-Loop)-
- পাইথন: এটি পাইথন ইন্সটলের সময় ডিফল্ডভাবে ইন্সটল হয়ে থাকে।
- জাভাস্ক্রিপ্ট: এখানে ইনবিল্ড REPL থাকে না। বেশিরভাগ ক্ষেত্রেই ব্রাউজারে রান করতে হয়। এছাড়া node.js ইন্সটল করে REPL ব্যবহার করা যায়।
- Mutability-
- পাইথন: পাইথনের Mutable এবং Immutable দুই প্রকার ডাটা টাইপ রয়েছে। যেমন Set (Mutable) এবং List (Immutable)
- জাভাস্ক্রিপ্ট: যেখানে জাভাস্ক্রিপ্টের কোন পরাক মিউটেবল এবং ইমিউটেবল কন্সেপ্ট নেই।
- Strings-
- পাইথন: পাইথনের ডিফল্ট সোর্স কোডের নাম হচ্ছে ASCII।
- জাভাস্ক্রিপ্ট: কিন্তু জাভাস্ক্রিপ্টে অবুশ্যই encode করতে হবে UTF-16 দিয়ে। এখানে বিল্ডইন কোন সাপোর্ট নেই raw bytes এর জন্য।
- Numbers-
- পাইথন: পাইথনে কিছু ডিফল্ট নিউমেরিক টাইপস রয়েছে। যেমন int, float, fixed-point decimal ইত্যাদি।
- জাভাস্ক্রিপ্ট: কিন্তু জাভাস্ক্রিপ্টে শুধুমাত্র একটি ফ্লোটিং পয়েন্ট নাম্বার রয়েছে।
- Hash Tables-
- পাইথন: পাইথনে রয়েছে বিল্ড-ইন হ্যাশ টেবল। যাকে বলা হয়ে থাকে, dictionaries, sets ইত্যাদি। এই সকল হ্যাশিং গুলো Keys এবং values ব্যবহার করে থাকে।
- জাভাস্ক্রিপ্ট: কিন্তু জাভাস্ক্রিপ্টে কোন প্রকার বিল্ড-ইন হ্যাশিং টেবল নেই। এখানে কোন প্রকার হ্যাশিং টেবিল সাপোর্ট করে না।
- Inheritance-
- পাইথন: পাইথনে ব্যবহার করা হয়, class-based inheritance মডেল। যেমন- class Welcome: Def _init_(self, name):self.name=name def Greet(self): print (‘hello, I am’ + self.name)From the above example shows you a class definition and _init_function is a constructor.
- জাভাস্ক্রিপ্ট: জাভাস্ক্রিপ্ট ব্যবহার করে prototype based inheritance মডেল। যেমন- We need to create a function where we used classes in python as below: welcome =function(name){this.name=name this.greet=function(){ return “hello I am “ + this. name}}
- Code Blocks-
- পাইথন: পাইথনে ব্যবহার করা হয় identation।
- জাভাস্ক্রিপ্ট: আর জাভাস্ক্রিপ্টে ব্যবহার করা হয় curly brakets।
- Function Arguments-
- পাইথন: যদি কোন প্রকার প্যারামিটারে সমস্যা হয়, তাহলে পাইথন এক প্রকার ইরোর টেক্সট দিবে।
- জাভাস্ক্রিপ্ট: আর জাভাস্ক্রিপ্টে যদি কোন ভ্যালু অ্যাড করা না হয় তাহলে যে অটোম্যাটিক ভ্যালু অ্যাড করে কাজ চালিয়ে নিবে।
- Data Types-
- পাইথন: পাইথনের রয়েছে দুইটি একই রকম ডাটা টাইপ। List এবং Tuple। পাইথনের এই Iist এবং জাভাস্ক্রিপ্টের array দু’টো প্রায় এক।
- জাভাস্ক্রিপ্ট: জাভাস্ক্রিপ্টের ইনবিল্ড array টাইপ রয়েছে।
- Properties and Attributes-
- পাইথন: পাইথন অ্যাট্রিবিউট ডিফাইন করার ক্ষেত্রে ডিসক্রিপটর প্রটোকল ব্যবহার করে। যেখানে আমরা চাইলে getter, setter ফাংশন ব্যবহার করতে পারি।
- জাভাস্ক্রিপ্ট: জাভাস্ক্রিপ্টের অবজেক্টের মধ্যে রয়েছে প্রোপার্টিজ। যেখানে আন্ডারলেইং অ্যাট্রিবিউটস গুলো কম্পোজ করা যায়। এখানে প্রোপার্টি ডিফাইন করার সুযোগ আছে।
- Modules-
- পাইথন: পাইথনে বিভিন্ন রকম মডিউল ব্যবহার করা যায়। পাইথনের মডিউলকে বলা হয় batteries।
- জাভাস্ক্রিপ্ট: জাভাস্ক্রিপ্টের মডিউল গুলো হলো – date, math, regexp, JSON।
আরও কিছু বড়ধরনের পার্থক্য রয়েছে পাইথন এবং জাভাস্ক্রিপ্ট এর মধ্যে, যেমন-
- জাভাস্ক্রিপ্ট ফ্রন্টইন্ডে রান কর যায়। কিন্তু পাইথন হচ্ছে সার্ভার-সাইড প্রোগ্রামিং ল্যাঙ্গুয়েজ।
- পাইথন হচ্ছে Procedural প্রোগ্রামিং। কিন্তু জাভাস্ক্রিপ্টে এই মডেলটি নেই।
- পাইথন এর ডিজাইন অনেক সুন্দর যা ম্যানেজ করা যায় খুব সহজে। কিন্তু জাভাস্ক্রিট পাইথনের মত এত সহজে ম্যানেজ করা যায় না।
- পাইথন জাভাস্ক্রিপ্টের তুলনায় অনেক স্লো।
- পাইথনের রয়েছে অনেক সমৃদ্ধ লাইব্রেরি। যেখানে জাভাস্ক্রিপ্টের লাইব্রেরি খুব সীমিত।
- পাইথনে সাপোর্ট করে অনেক রকম নিউমেরাল ডাটা টাইপ। যেমন- int, float, fixed-point decimal। কিন্তু জাভাস্ক্রিপ্টে শুধুমাত্র ফ্লোটিং-পয়েন্ট ভেরিয়েবল কাজ করে।
- পাইথন শেখা ব্যাক্তি খুব সহজে জব ম্যানেজ করে ফেলতে পারে জাভাস্ক্রিপ্ট পারা লোকের তুলনায়।
- পাইথনের অবজেক্ট বেইজড প্রোগ্রামটি জাভাস্ক্রিপ্টের সমমর্যাদা সম্পন্ন।
- জাভাস্ক্রিপ্ট মডার্ন প্রোগ্রামিং ল্যাঙ্গুয়েজের তুলনায় অনেক কঠিন। যেখানে পাইথন তুলনা মূলক সহজ।
পাইথন এবং জাভাস্ক্রিপ্ট (Python and JavaScript) এই দুই প্রকার প্রোগ্রামিং ল্যাঙ্গুয়েজের মধ্যে পার্থক্য আসলে খুবই সামান্য। আপনি চাইলে দুটো ল্যাঙ্গুয়েজে প্রায় একই রকম কাজ করিয়ে নিতে পারবেন। যেমন- lexically scoped, object-oriented, interpreted, functional এবং imperative প্রোগ্রামিং। যদি কোন প্রকার ফিচার মিস হয়েও থাকে, তাহলে লাইব্রেরির মাধ্যমে সব ধরণের সুবিধে ইচ্ছেমত ব্যবহার করা যায়। এই লাইব্রেরির ইক্সটেনশনের মাধ্যমে ইচ্ছেমত কাস্টমাইজেশন করে প্রয়োজনীয় সুবিধে গ্রহন করা যায়।
এই ছিলো আমাদের আজকের আয়োজন। আশা করছি আপনি জাভাস্ক্রিপ্ট এবং পাইথনের মত জনপ্রিয় দুটি প্রোগ্রামিং ল্যাঙ্গুয়েজের মধ্যে পার্থক্য গুলো বুঝতে পারবেন।