জাভাস্ক্রিপ্ট টিউটোরিয়াল-শিখুন গল্পে গল্পে সাথে 1100+ Exercise

  • জাভাস্ক্রিপ্ট পরিচিতি-Introduction to JavaScript
  • প্রোগ্রামিং শুরু করতে কতটুকু গণিত লাগে?
  • প্রোগ্রামিং শুরু করতে কতটুকু ইংরেজি জানা লাগে?
  • ভালো প্রোগ্রামার কিভাবে হবো? [+৭টি গুরুত্বপূর্ণ টিপস]
  • V8, করে না লেইট
  • দেবু কাকার Dev টুল
  • Web API ব্রাউজার API
  • hug দ্য বাগ to ডিবাগ

V8, করে না লেইট


শুধু বাইক থাকলে থাকবে চলবে না। বাইকার লাগবে। বাইকার না থাকলে বাইক চালাবে কে? আবার বাইক আর বাইকার দুইজনই আছে। কিন্তু বাইক চালানোর রাস্তা নাই, মাঠ নাই। তাহলে বাইক চলবে কোথায়? 


জাভাস্ক্রিপ্ট হচ্ছে একটা বাইক। এইটার চালাবে ওয়েবসাইট। সেখানে বিভিন্ন কারণে চলবে। কিন্তু কোথায় চলবে? চলবে ব্রাউজারে। 


ব্রাউজার একটা বিশাল দুনিয়া। এর ভিতরে কত কি যে ঘটে বলে শেষ করা যাবে না। এবং অনেক অনেক কাজ করে তার মধ্যে একটা বিশেষ জিনিস হচ্ছে জাভাস্ক্রিপ্ট ইঞ্জিন। যে জাভাস্ক্রিপ্ট কোডকে ইন্টারপ্রেট এবং এক্সিকিউট করে। আউটপুট দেখায়।


আরেকটু সহজ করে বললে JavaScript Engine হলো ব্রাউজারের ভিতর একটা সফটওয়্যার, যেটা জাভাস্ক্রিপ্ট কোডকে পড়ে, বুঝে, আর সেটা রান করায়। বর্তমান দুনিয়ায় সবচেয়ে জনপ্রিয় ইঞ্জিন হলো Google V8, যেটা ক্রোম এবং Node.js-এ ব্যবহার হয়।


জাভাস্ক্রিপ্ট ইঞ্জিন যেমন V8 ইঞ্জিন যখন কোন জাভাস্ক্রিপ্ট কোড পায় তখন সে তিনটা ধাপে কাজ করে। 


১. পার্সিং (Parsing):

জাভাস্ক্রিপ্ট কোডকে টোকেন এ ব্রেক ডাউন করে এবং Abstract Syntax Tree (AST) তৈরি করে। একটু সহজ করে বললে কোড যেভাবে লেখা হইছে সেটাকে সে একটু ট্রি স্ট্রাকচার (অনেকটা গাছের মতো করে দেখতে) সেই স্টাইলে গুছিয়ে নেয়। 


২. কম্পাইলেশন (Compilation):

AST-কে দেখে ইঞ্জিন বুঝে নেয়, কীভাবে এই কোডকে মেশিন ল্যাঙ্গুয়েজে কনভার্ট করবে। তারপর বাইটকোড বা মেশিন কোডে কনভার্ট করে। 

মেশিন কোড বলতে বুঝায় যে কোড মেশিন (মানে কম্পিউটার বুঝতে পারে) । কারণ আমরা যে সব কোড লিখি এইটা কম্পিউটার সরাসরি বুঝে না। সে বুঝে শুধু Binary (0 এবং 1)। তাই আমাদের সব কোডকে আল্টিমেটলি Binary ফরম্যাটে (0 এবং 1) কনভার্ট করে নিতে হয়। 


আমরা যেভাবে কোড লিখি সেটাকে বলে হাই লেভেল প্রোগ্রামিং ল্যাংগুয়েজ। কারণ এইগুলা মেশিন যেটা বুঝতে পারে সেটার চাইতে অনেক উপরে বা অনেক দূরে। আবার কিছু প্রোগ্রামিং ল্যাংগুয়েজ আছে যেগুলা মেশিন এর খুব কাছে। তাদেরকে লো লেভেল প্রোগ্রামিং ল্যাংগুয়েজ বলে।  


আমরা যে কোড লিখি সেটাকে বলে source code আর আমাদের কোড কে মেশিন বুঝার জন্য এইটাকে প্রথমে মাঝামাঝি ধাপের একটা byteCode এ কনভার্ট করা হয়। তারপর সেটাকে আল্টিমেটলি মেশিন কোড বা বাইনারি কোড এ নিয়ে যেতে হয়।


JIT Compiler:

JIT (Just-In-Time) Compiler হলো একটা মেকানিজম, যেটা Source Code-কে Machine Code-এ রূপান্তর করার কাজ করে, Runtime-এ।এখানে Runtime বলতে বুঝায়: প্রোগ্রাম যখন চলছে, ঠিক তখনই Source Code-কে Compile করে Machine Code বানায়।যাতে কোড খুব দ্রুত এক্সিকিউট হয়।


আরো কয়েকটা বিষয় আছে। সেটা হচ্ছে compile শব্দটা কি? compile বলতে বুঝায় পুরা কোড একবারে মেশিন কোডে কনভার্ট করে তারপর রান হবে। এইটার অপোজিট সিস্টেম হচ্ছে Interpret করা। এইটা করলে কি হয়? এইটা করলে কোড এক লাইন এক লাইন করে এবং সাথে সাথে আউটপুট দিবে। এই প্রসেস একটু স্লো। এবং জাভাস্ক্রিপ্ট প্রথম দিকে Interpreted প্রোগ্রামিং ল্যাংগুয়েজ ছিল। তবে আস্তে আস্তে জাভাস্ক্রিপ্ট আরো পাওয়ারফুল হতে হতে এখন JIT (Just-In-Time) Compiler ইউজ করে। যাতে বাবার চলা কোডকে অপ্টিমাইজ করতে পারে। দ্রুত রান করতে পারে। সেজন্য V8 ইঞ্জিন JIT compiler পদ্ধতি ব্যবহার করে।

 

৩. এক্সিকিউশন (Execution):

এই ধাপে কম্পাইল করা কোডকে এক্সিকিউট করে এবং রেজাল্ট রিটার্ন করে। আর রান করার সময় ইঞ্জিন দেখবে, যদি কোনো কোড বারবার ইউজ হয় (যেমন লুপ), তখন সেটা Optimization করে।


Practice: 

  1. জাভাস্ক্রিপ্ট এর কোড কিভাবে চলে?
  2. V8 ইঞ্জিন এর কাজ কি?
  3. JIT compiler কিভাবে কাজ করে?


Previous ChapterNext Page