JavaScript Key Features and Concepts
🧠 সংজ্ঞা
জাভাস্ক্রিপ্ট একটি লাইটওয়েট ইন্টারপ্রেটেড ( অথবা যথা সময়ে কম্পাইলড) প্রথম ক্লাস ফাংশন সম্বলিত প্রোগামিং ভাষা । যদি ও এটি ওয়েব ও অনেক নন-ব্রাউজার ইনভায়রনমেন্ট (যেমন: Node js, Apache CouchDB and Adobe Acrobat) এর জন্য স্ক্রিপ্টিং ভাষা হিসেবে বেশি পরিচিত. জাভাস্ক্রিপ্ট একটি প্রোটোটাইপ ভিত্তি সম্পন্ন, এক থ্রেডেড, ডাইনামিক ভাষা যা কিনা ওভযেক্ট ভিত্তিক, ইমপেরেটিভ ও ডিক্লেরেটিভ ( ফাংশনাল প্রোগামিং) কোডের ধরণ সাপোর্ট করে/
⚙️ বৈশিষ্ট্যসমূহ
🔹 লাইটওয়েট ইন্টারপ্রেটেড :
লো লেভেলের ভাষাগুলো হচ্ছে কম্পাইলড ভাষা অর্থাৎ যখনই আমরা কোনো ভেরিএভল/ফাংশন ডিক্লেয়ার করি প্রথমে তার হেডারগুলো চেক করা হবে ( যেমন : আমাদের ব্যবহার ইম্পোর্ট, আউটপুটগুলো) এর ধারাবাহিকতায় এগুলো প্রথমে আসবে তারপর গিয়ে এদের ডেফিনিশন সেট হবে, এরপর প্রিপ্রসেসিং, এসেভ্লিং , ভাইনারিতে কনভার্ট, এসেভ্লিং হওয়া জিনিসগুলো লিংকড হওয়ার পর সবশেষে পুরোপরি একএিত হওয়ার পর গিয়ে আমরা রেজাল্ট দেখতে পাই। এককথায় রেজাল্টের জন্য অনেকগুলো প্রসেসের মধ্য দিয় যেতে হচ্ছে। কিন্তু জাভাস্ক্রিপ্টের, পাইথনের মতো হাই লেভেল ভাষায় কোড লেখার পরই অলরেডি একটা ইন্টারপ্রেটর আছে যে কিনা এসকল প্রসেসিং করে তবে লাইন বাই লাইন ইন্টাপ্রেট করে
-
কম্পাইলড ভাষা : আমরা মেশিনকোড/রেজাল্ট দেখতে পাই পুরো ফাইল কম্পাইলড/ইন্টারপ্রেট হওয়ার পর
-
ইন্টাপ্রেটেড ভাষা : কোড লাইন বাই লাইন ইন্টারপ্রেট হয়
যথাসময়ে কম্পাইলড :
কোড কম্পাইলড করার সময় আমাদের মেমরি বলতে আমাদের ডিভাইস মেমোরি হট মেমোরি হিসেবে ব্যবহৃত হয়। এই হট মেমোরির দুইটা অংশ আবার স্টেক মেমোরি ও হিপ মেমোরি
- স্টেক মেমোরি : এটা একটা স্টেটিক মেমোরি অর্থাৎ কোড রান করার পর পর স্টোর করা মেমোরি ডিলেট করে দেয়।
- হিপ মেমোরি : অন্যদিকে এই মেমোরি কোড রান করার পর ও ডাটা/মেমোরি ডিলেট করেনা রেখে দে এবং আমরা যখন সেম ফাংশন আবার ও কল করি এটা ডাইরেক্টলি চেক করে এবং রেজাল্ট জানায়
.616ee1a2.png&w=3840&q=75)
🧾 উপসংহার:
কম্পাইলড ভাষায় পুরো কোড একসাথে মেশিন কোডে রূপান্তর হয়, পরে আউটপুট পাওয়া যায় (যেমন: C, C++)। ইন্টারপ্রেটেড ভাষায় (যেমন: Python, JavaScript) কোড লাইন বাই লাইন ইন্টারপ্রেটর পড়ে চালায়, ফলে সঙ্গে সঙ্গে আউটপুট দেখা যায়।
কম্পাইলড ভাষায় স্ট্যাক মেমোরি বেশি ব্যবহৃত হয়, যা দ্রুত কিন্তু বেশি মেমোরি খরচ করে। ইন্টারপ্রেটেড ভাষায় হিপ মেমোরি ব্যবহৃত হয়, যা মেমোরি সাশ্রয়ী ও ডাইনামিক।
💡 অন্যান্য গুরুত্বপূর্ণ বৈশিষ্ট্যসমূহ
প্রথম ক্লাস ফাংশন :
জাভাস্ক্রিপ্টে ভেরিয়েবল ডিক্লেয়ার করলে শুরুতে undefined সেট হয়। কিন্তু ফাংশন ডিক্লেয়ার করলে নামসহ পুরো ডেফিনেশন মেমোরিতে উঠে যায়, ফলে ডিক্লেয়ারের আগে কল করলেও চলে। একে Hoisting বলে।
এছাড়া ফাংশনকে ভেরিয়েবল হিসেবে সংরক্ষণ, ফাংশনে পাস করা এবং রিটার্ন করা যায়। তাই ফাংশনকে first-class citizen/function বলা হয়।
স্ক্রিপ্টিং ল্যাংগুয়েজ :
জাভাস্ক্রিপ্ট একটি স্ক্রিপ্টিং ল্যাংগুয়েজ কারণ এটি সাধারণত ইন্টাপ্রেটেড এবং অটোমেট ও ওয়েব পেইজের ফাংশনালিটি বাড়ানোর/উন্নতির জন্য ব্যবহৃত হয়।
ইনভায়রনমেন্টস :
জাভাস্ক্রিপ্ট মুলত দু’ধরনের মেইন ইনভায়রনমেন্ট এ রান হয়। যথা :
- ব্রাউজার (ক্লায়েন্ট সাইড): ক্রোম, ফায়ারফক্স
- নন-ব্রাউজার (সার্ভার সাইড): Node.js, Electron, Apache CouchDB & Adobe Acrobat.
প্রোটাটাইপ ভিত্তিক :
জাভাস্ক্রিপ্ট এ সবকিছুর প্রোটোটাইপ আগে থেকে রেডি করা থাকে। যেমন : আ্যরে, অবজেক্ট ইত্যাদি।
মাল্টিপ্যরাডাইম :
জাভাস্ক্রিপ্টের প্রসঙ্গে এর মানে বললে বোঝায় যে জাভাস্ক্রিপ্ট একাধিক প্রোগামিং ধরণ বা পন্থা সাপোর্ট করে।
এক থ্রেডেড :
জাভাস্ক্রিপ্ট ইনপুট এবং আউটপুট এক ত্রেড এর মাধ্যমেই হ্যান্ডেল করে থাকে। আসলে ইনপুট নেওয়ার পর ওই থেড়ড বাকি থ্রেড গুলোর মধ্যে দিয়ে দেয় কাজ করার জন্য এবং দ্রূত কাজ শেষে রেজাল্ট দেখাতে পারে
ডাইনামিক ভাষা :
জাভাস্ক্রিপ্ট স্ট্রংলী টাইপড ভাষা না তাই আমরা একটি ভ্যারএভল এ যেকোন টাইপ এর কনটেন্ট জমা করতে পারি। আমরা যখন কোনো ভেরিয়েভল ডিক্লেয়ার করি জাভাস্ক্রিপ্ট মেমোরিতে একটা পরিমাণ জায়গা রেখে দেয়। এ জায়গা পরবর্তীতে ভেরিএভলে আসাইন করা কন্টেন্ট টাইপ অনুযায়ী বড় ছোট হয়। যা আমাদের কোড লেখার ক্ষেত্রে ফ্লেক্সিভিলিটি দিলে ও কিছু কিছু সমস্যার দেখা দিতে পারে
ওভযেক্ট ওরিয়েন্টেড :
এটা অনেকটা মিথ হয়প গেছে বর্তমানে
ডিক্লেয়ারেটিভ ও ইম্পেরেটিভ :
কোড লেখার ধরণ অনুযায়ী ডিক্লেয়ারেটিভ ও ইম্পেরেটিভ উভয়ভাবে কাজ করতে পারে।
