• About
  • Products
    • PI-HR Solution
      People management solution
    • PI-TMS
      Transport Management System
    • Fleet Management Solution
      Vehicle management features
    • MFS
      Mobile Financing System
    • Selfcare Solution
      Mobile Apps, VAS & Cloud Service etc.
    • M-Market
      e-Commerce Platform
    • PI-Ticketing
      Online ticket platform
    • Viva Pension
      User Management, Employer, Notice etc.
  • Services
  • Blog
  • Bootcamps
    • JavaScript
    • TypeScript
  • GET IN TOUCH
1. কোর্স পরিচিতি

1. কোর্স পরিচিতি

2
  • 1.1 কোর্স নির্দেশিকা
  • 1.2. Environment সেটআপ
2. জাভাস্ক্রিপ্ট ফান্ডামেন্টালস

2. জাভাস্ক্রিপ্ট ফান্ডামেন্টালস

2
  • 2.1 কম্পাইলার এবং ইন্টারপ্রেটার পরিচিতি
  • 2.2 জাস্ট ইন টাইম(JIT) কম্পাইলার
  • Home
  • Docs
  • Javascript Bootcamp
  • 2. জাভাস্ক্রিপ্ট ফান্ডামেন্টালস
  • 2.2 জাস্ট ইন টাইম(JIT) কম্পাইলার

2.2 জাস্ট ইন টাইম(JIT) কম্পাইলার

আমরা প্রোগ্রামার-রা যে যার প্রয়োজন অনুযায়ী বিভিন্ন ধরনের প্রোগ্রামিং ভাষা ব্যবহার করে থাকি। যে ভাষাই ব্যবহার করিনা কেন, সেটি কিন্তু কম্পিউটারের কাছে বোধগম্য নয়। অর্থাৎ প্রোগ্রামার-দের এবং কম্পিউটারের কথা বলার ভাষা সম্পূর্ন আলাদা এবং এরা কেউ কারো ভাষা বোঝেনা! বাস্তব জীবনে এই সমস্যার সমাধান আমরা কিভাবে করি? খুবই সহজ, আমরা একজন দোভাষী-কে ডেকে নিয়ে আসি যে একজনের কথা আরেকজন কে অনুবাদ করে দেয়। প্রোগ্রামিং এর জগতেও ব্যাপারটা ঠিক এভাবেই কাজ করে। প্রোগ্রামিং ল্যংগুয়েজগুলোকে মেশিন ল্যাংগুয়েজে রুপান্তর করার জন্য আমাদের প্রধানত দুই ধরনের দোভাষী প্রোগ্রাম আছে বলা যেতে পারে। একটি হলো কম্পাইলার এবং অপরটি ইন্টারপ্রেটার। দুইটির কাজ কিন্তু একই, হাই লেভেল ল্যাংগুয়েজকে মেশিন কোডে রুপান্তর করা। তাহলে এই দুটির পার্থক্য কি? জাস্ট ইন টাইম কম্পাইলেশন বুঝতে হলে এদের পার্থক্য এবং সুবিধা অসুবিধাগুলো জানা আমাদের জন্য খুব দরকারি।

ইন্টারপ্রেটারঃ

ইন্টারপ্রেটার আমাদের সোর্স কোড এর প্রথম লাইন থেকে শুরু করে লাইন বাই লাইন লো লেভেল ল্যাঙ্গুয়েজে রূপান্তর করে। এর সুবিধা হলো কোডের যেকোনো একটি লাইনে কোনো এরর পাওয়া গেলে সেটি ইন্টারপ্রেটার আমাদেরকে সাথে সাথেই জানিয়ে দিতে পারে। অর্থাৎ ডিবাগিং করা অনেক সহজ হয়। এখন এই প্রক্রিয়ার অসুবিধা যেটি সেটি হলো যেহেতু প্রতিটি লাইন ধরে ধরে কাজ করা হচ্ছে, এখানে সময় বেশি লেগে যায়।

কম্পাইলারঃ

ইন্টারপ্রেটার যে পদ্ধতিতে কাজ করে কম্পাইলার ঠিক তার উল্টো রাস্তায় হাটে। ইন্টারপ্রেটারের মতো লাইন ধরে ধরে অনুবাদ না করে কম্পাইলার পুরো প্রোগ্রামটিকে একসাথে লো লেভেল ল্যাংগুয়েজে অনুবাদ করে। এর সুবিধা অসুবিধা দুটোই আছে। সুবিধা হলো এই প্রক্রিয়াটি বেশ ফাস্ট। আর অসুবিধা হলো কম্পাইলার ব্যবহৃত হলে সেখানে ডিবাগিং করা বেশ কষ্টকর। যেহেতু পুরো প্রগ্রামটিই একসাথে অনুবাদ হচ্ছে, মাঝের কোনো এক লাইনে এরর ধরা পড়লে সেটা কম্পাইলার আমাদেরকে ইন্টারপ্রেটারের মতো সাথে সাথে জানিয়ে দিতে পারেনা। ফলশ্রুতিতে এমন হতে পারে যে পুরোটা কম্পাইল হওয়ার পরে প্রোগ্রামটি ক্র্যাশ করে বসে আছে। কম্পাইলারের খুব ভালো একটি সুবিধা হলো যে এটি আমাদের কোডে কিছু জায়গায় পরিবর্তন করতে পারে যাতে প্রোগ্রামটির পার্ফরম্যান্স আরো ভালো হয়। অর্থাৎ সহজ কথায় বলতে গেলে কোন মেশিনে প্রোগ্রামটি রান করছে সেটির উপর ভিত্তি করে কম্পাইলার আমাদের প্রোগ্রামের অপটিমাইজেশন করে দিতে পারে।

ইন্টারপ্রেটার ও কম্পাইলার দুটোর সুবিধা অসুবিধাই আমরা জানলাম। এখন আপনাদের কাছে আমার একটি প্রশ্ন – কোনটা বেশি ভালো? ইন্টারপ্রেটার নাকি কম্পাইলার? এই প্রশ্নের উত্তর আসলে এত সহজে দেয়া সম্ভব না। কারণ দুটির ব্যবহার ও সুযোগ সুবিধা ভিন্ন। সবচেয়ে ভালো হতো যদি আমরা কম্পাইলার এবং ইন্টারপ্রেটার এই দুইটিরই ভালো দিকগুলো একসাথে পেতাম। এই চিন্তা থেকেই ‘জাস্ট ইন টাইম (JIT)’ এর আবির্ভাব। 

JIT কম্পাইলার এর ‘জাস্ট ইন টাইম’ পার্ট টা দিয়ে আসলে ইন্টারপ্রেটার বোঝায়। অর্থাৎ জাস্ট ইন টাইম কম্পাইলেশন একইসাথে ইন্টারপ্রেটার এবং কম্পাইলার এর কাজ করে। জাভাস্ক্রিপ্ট-কে আমরা সবাই একটি ইন্টারপ্রেটার ল্যংগুয়েজ হিসেবেই চিনি। জাভাস্ক্রিপ্ট ইঞ্জিনের শুরুর দিকে শুধুমাত্র ইন্টারপ্রেটার ব্যবহৃত হলেও এখন কিন্তু জাভাস্ক্রিপ্ট ইঞ্জিনও JIT ব্যবহার করে। JIT বোঝার জন্য আজকের এই লেখায় আমরা জাভাস্ক্রিপ্ট ইঞ্জিনের প্রেক্ষাপটে JIT কিভাবে কাজ করছে সেটি নিয়ে আলোচনা করবো। 

মনিটর / প্রোফাইলারঃ

জাভাস্ক্রিপ্ট কোড ইঞ্জিনের ভেতর প্রথমে একটি ইন্টারপ্রেটারের ভেতর দিয়ে যায়। ইন্টারপ্রেটার যখন লাইন ধরে ধরে কোড এক্সিকিউট করতে থাকে, প্রোফাইলার তখন কোন স্টেটমেন্ট কতবার করে রান হচ্ছে এটা হিসাব করে রাখে। কোডের একই অংশ যদি একাধিকবার এক্সিকিউট হয় প্রোফাইলার তখন এটিকে ‘ওয়ার্ম (Warm)’ হিসেবে শনাক্ত করে। এই সংখ্যা টি আরো বাড়তে থাকলে এক সময় এটিকে ‘হট কোড’ বলা হয়। অর্থাৎ আমাদের প্রোগ্রামের যে অংশগুলো সবচেয়ে বেশি সংখ্যকবার রান করছে মনিটর/প্রোফাইলার সেগুলোকে বের করে আনে। 

বেইজলাইন কম্পাইলারঃ

এখানে কোডের ওয়ার্ম সেকশনগুলোকে বাইটকোডে রুপান্তর করা হয়। এই বাইটকোড পরবর্তীতে একটি ইন্টারপ্রেটার দিয়ে রান করানো হয় যেটা এই ধরনের বাইটকোডের জন্য অপটিমাইজড।

অপটিমাইজিং কম্পাইলারঃ 

মনিটর বা প্রোফাইলার দ্বারা শনাক্ত হওয়া হট পার্ট-গুলো এই কম্পাইলারের কাছে পাঠানো হয়। এর মূল কাজ হলো হট পার্ট গুলোর আরেকটি অপটিমাইজড ভার্সন সংরক্ষণ করে রাখা যেটি আরো দ্রুত রান করবে। এই কাজ টি করার জন্য জাভাস্ক্রিপ্ট ইঞ্জিনে ‘শেইপ’ ধারনাটি ব্যবহৃত হয়। যেমন একই কন্সট্রাক্টর ফাংশন দিয়ে তৈরি করা সব অবজেক্টের একই শেইপ ধরে নেয়া হয় কারণ এদের প্রোপার্টিগুলো একই। ইনলাইন ক্যাশিং করার জন্য এটা গুরুত্বপূর্ন। বেইজলাইন কম্পাইলারে আমরা বাইটকোড নিয়ে কথা বলেছি। বাইটকোড কিন্তু মেশিন কোডের মতো ফাস্ট নয়। অনেক বেশিবার রান হওয়া কোড যদি সরাসরি মেশিন কোডে রূপান্তর করে সেটাকে বার বার ব্যবহার করা যায় তাহলে প্রোগ্রাম অনেক ভালো পারফর্ম করবে। অপটিমাইজিং কম্পাইলার আমাদের জন্য এই কাজটিই করে দেয়। 

তাহলে ব্যপারটা এমন দাড়ালো যে প্রথমে জাভাস্ক্রিপ্ট এর সোর্স কোড বাইটকোডে রূপান্তরিত হয় যেটা একটি ইন্টারপ্রেটার এক্সিকিউট করতে থাকে। এসময় মনিটর বা প্রোফাইলার কোডের ওয়ার্ম ও হট পার্ট  অপটিমাইজিং কম্পাইলারের কাছে পাঠিয়ে দেয় যেটি পরবর্তীতে অপটিমাইজড মেশিন কোডে রূপান্তরিত হয়। এখানে ইন্টারপ্রেটার ও কম্পাইলার দুইটিই ব্যবহৃত হলো প্রোগ্রামের পার্ফরম্যান্স বাড়ানোর জন্য। এটাকেই আমরা জাস্ট ইন টাইম কম্পাইলেশন এর একটি উদাহরণ হিসেবে ধরতে পারি। তবে একটি কথা মাথায় রাখা প্রয়োজন যে বিভিন্ন ব্রাউজার আলাদা ভাবে তাদের নিজস্ব JIT তৈরি করেছে। তবে মূল কাজটি কিন্তু একই।JIT নিয়ে আমাদের আজকের লেখা এ পর্যন্তই। 

 

Share This Article :
  • Facebook
  • Twitter
  • LinkedIn
  • Pinterest
Still stuck? How can we help?

How can we help?

Updated on February 18, 2022
2.1 কম্পাইলার এবং ইন্টারপ্রেটার পরিচিতি
blank
Believe us, we create stories with our partners day and night
contact@vivasoftltd.com
+88 017 134 284 32
  • Follow
  • Follow

Our Story

About us
Portfolio
How we work
Why Vivasoft

Resources

Contact us
Blog

Locations

Banani Office
Floor #16, Ahmed Tower, 28, 30, Kemal Ataturk Ave, Banani, Dhaka 1213

© Vivasoft Limited • 2022 • All rights reserved.

Office Time: Monday to Friday 10:00 AM – 7:00 PM GMT +6:00