রহস্যময়ী জাভাস্ক্রিপ্টের আসল রূপ
দূর থেকে মানুষ চেনা যায় না। মানুষ চিনতে হয় তার পাশে থেকে, তার বন্ধু হয়ে, একসাথে অনেকটা পথ পাড়ি দিয়ে। সেই কাজটাই তুই শুরু করছস জাভাস্ক্রিপ্টের সাথে। হয়তো অনেকেই জাভাস্ক্রিপ্টকে অনেকভাবে বলবে, তুই নিজেও হয়তো কিছু একটা বলবি– দিনশেষে রহস্যময়ী জাভাস্ক্রিপ্ট তোকে আর সবাইকে মুগ্ধ করতেই থাকবে।
কেউ কেউ বলতে পারে– "Javascript uses abstraction to hide implementation details."। এতে abstraction বলতে কী বোঝায়? মানে হলো, ভিতরে ভিতরে কীভাবে কাজ করে, সেটা বাহির থেকে বুঝা যায় না। যেমন, তুই ATM মেশিন থেকে টাকা তুলছিস। তুই শুধু কার্ড দিস, পিন প্রবেশ করিস এবং টাকা তোলস। কিন্তু এর ভিতরে অনেক কাজ হচ্ছে। যেমন তোকে ভেরিফাই করা, একাউন্ট চেক করা ইত্যাদি। অথচ, তুই শুধু ফাংশনালিটি দেখছিস, বিস্তারিত জানস না।
Javascript-এর অনেক ফিচার নিজে থেকেই কাজ করে। যেমন, মেমোরি ম্যানেজমেন্ট এবং গারবেজ কালেকশন। Call Stack Management, Event Loop, Dynamic Typing, Type Conversion (Coercion), Error Propagation, আরও অনেক কিছু সামনে জানবি। Javascript নিজেই ভেজাইল্লা জিনিসগুলো সরিয়ে ফেলে। যাতে তুই গ্যাঞ্জাম পাকিয়ে না ফেলস।
Javascript এখন JIT (Just-In-Time) কম্পাইলড ল্যাঙ্গুয়েজ। একসময় interpreted লাঙ্গুয়েজ ছিল, যা লাইনে লাইনে রান হতো। JIT-এর মাধ্যমে কোড রান হওয়ার সময়ই কম্পাইল হয়ে যায়। ফলে, পারফরমেন্স অনেক বেড়ে গেছে।
Javascript হলো একটি multi-paradigm ল্যাঙ্গুয়েজ, যার অর্থ এটি procedural, Object Oriented Programming ( OOP ) এবং functional প্রোগ্রামিংয়ের জন্য ব্যবহার করা যায়। অর্থাৎ অনেকভাবে বড় বড় কোড অর্গানাইজ করা যায়।
Javascript একটি prototype-based ল্যাঙ্গুয়েজ, যেখানে object-গুলির মধ্যে ইনহেরিটেন্স ও কানেকশন থাকে। এ ছাড়া এটি dynamically typed, যার অর্থ অন্য প্রোগ্রামিং ল্যাঙ্গুয়েজের মতো ভেরিয়েবল টাইপ আগে থেকে বলে দিতে হয় না।
অনেকেই অনেকভাবে জাভাস্ক্রিপ্টকে তার মতো করে বুঝতে পারে। তবে কিছু কমন জিনিস হলো—
- High abstraction
- Dynamically typed
- Prototype-based
- Multi-paradigm
- JIT compiled
- Garbage collecting
এখন প্রশ্ন, এটি কীভাবে কাজ করে?
জাভাস্ক্রিপ্ট কোড ব্রাউজারে চালাতে গেলে ব্রাউজারের ভিতর আগে থেকেই জাভাস্ক্রিপ্টের কোড চালানোর একটা ইঞ্জিন সেট করা আছে। এইটা গাড়ির ইঞ্জিনের মতো না; বরং কোড চালানোর ইঞ্জিন। যার নাম V8 ইঞ্জিন। এইটা খুবই শক্তিশালী ইঞ্জিন। এটা Google-এর একটি ওপেন সোর্স ইঞ্জিন, যা জাভাস্ক্রিপ্ট এবং WebAssembly রান করে। এটি মূলত C++ দিয়ে তৈরি, যা দ্রুত কোড চালাতে সাহায্য করে।
V8 ইঞ্জিন প্রথমে জাভাস্ক্রিপ্ট কোডকে parse করে, অর্থাৎ কোডের স্ট্রাকচার বুঝে নেয়। তারপর প্রথমে Interpreter কোডটা পড়বে, তারপর JIT Compiler আসবে, আর কিছু অংশকে Machine Code-এ ট্রান্সফরম করে দিবে, যেটা পরবর্তীতে দ্রুত রান করবে এবং আউটপুট দেয়।
Practice:
- জাভাস্ক্রিপ্ট কীভাবে কোড রান করে?
- What is JavaScript?
- JIT compiled process বোঝানোর জন্য একটি ধাপের flowchart কোড লিখ।
- জাভাস্ক্রিপ্টে Memory management এবং garbage collection প্রসেস কীভাবে কাজ করে।
