Module ০ · JavaScript জিনিসটা কী, কোথায় চলে, আর engine এটা চালায় কীভাবে
JavaScript জিনিসটা কী (আর এটা Java না কেন)
এই lesson-এ যা শিখবে
- এক বাক্যে বলতে পারবে JavaScript কী, আর ECMAScript নামটা এর সঙ্গে কী যোগ করে।
- 1995 থেকে ES2023 পর্যন্ত একটা সময়রেখায় JavaScript-কে বসাতে পারবে। ES2023 হলো এই track-এর level।
- Code দেখে যাচাই করা যায় এমন তিনটা পার্থক্য দিয়ে Java আর JavaScript আলাদা করতে পারবে।
Maria ঠিক করল JavaScript শিখবে। Search box-এ লিখল "JavaScript course"। যা এল তার অর্ধেকই Java শেখায়। একটা course শুরুই হলো public static void main দিয়ে। Maria ভাবল, সে কি শুরুতেই পিছিয়ে পড়ল?
না, পিছিয়ে পড়েনি। ও শুধু programming-এর সবচেয়ে পুরনো নামের গোলমালটায় পড়েছে। Java আর JavaScript-এর মিল চারটা অক্ষরে, বাকি প্রায় কিছুতেই না। ব্যাপারটা আম আর আমড়ার মতো: নাম শুনলে আত্মীয় মনে হয়, খেলে বোঝা যায় একদম আলাদা।
এই lesson আগে এই গোলমালটা মেটাবে, কারণ পরের প্রতিটা lesson ধরে নেয় তুমি ঠিক ভাষাটা নিয়েই পড়ছ। তারপর JavaScript-কে একটা জন্মতারিখ, একটা standard আর একটা version নম্বর দেবে, যেগুলো আঙুল দিয়ে দেখানো যায়।
এক বাক্যে JavaScript
এই বাক্যটা মনে রেখো।
JavaScript হলো সেই programming language যেটা প্রতিটা web browser চালায়, যার standard-এর নাম ECMAScript, আর যেটা এখন server, phone আর desktop-এও চলে।
বাক্যটার তিনটা অংশ জরুরি। Programming language হলো computer-কে নির্দেশ দেওয়ার লিখিত নিয়মের একটা সেট। Web browser হলো সেই program যেটা দিয়ে তুমি website খোলো, যেমন Chrome, Firefox, Safari বা Edge। এদের প্রতিটার ভেতরে JavaScript আগে থেকেই বসানো থাকে। তাই এটা ব্যবহার করতে তোমাকে কিছু install করতে হয় না।
তিন নম্বর অংশ হলো "standard"। মানে একটা লিখিত নিয়মের বই আছে। ওই বই মেনে চললে যে কেউ JavaScript পড়তে পারে এমন program বানাতে পারে। এজন্যই চারটা আলাদা company-র বানানো চারটা browser-এ একই code চলে।
তাহলে JavaScript হলো একটা ভাষা, একটা নিয়মের বই, আর সেটা চালানোর অনেকগুলো program।
Java আর JavaScript: দুইটা ভাষা, একটা marketing-এর সিদ্ধান্ত
1995 সালে Brendan Eich নামের একজন programmer Netscape-এ JavaScript-এর প্রথম version বানান। Netscape তখন সবচেয়ে জনপ্রিয় browser-এর company। হাতে সময় ছিল মোটামুটি দশ দিন। ভাষাটার নাম প্রথমে ছিল Mocha, তারপর LiveScript।
একই বছর Sun Microsystems বের করল Java। তখন পুরো industry-তে সবচেয়ে বেশি আলোচনা Java নিয়েই। Netscape আর Sun একটা চুক্তি করল, আর 1995-এর ডিসেম্বরে LiveScript-এর নাম বদলে হলো JavaScript। নামটা ছিল পুরোপুরি marketing। ভাষা দুইটা তখনই আলাদা ছিল, আর তারপর থেকে প্রতি বছর আরও দূরে সরেছে।
| Java | JavaScript | |
|---|---|---|
| কে বানিয়েছে | Sun Microsystems (James Gosling-এর team), 1995 | Netscape (Brendan Eich), 1995 |
| কীভাবে চলে | আগে javac দিয়ে bytecode-এ compile হয়, তারপর Java Virtual Machine চালায় | সাধারণ text হিসেবে পাঠানো হয়, browser বা Node.js-এর ভেতরের একটা engine চালায় |
| Type | প্রতিটা variable তার type লিখে দেয়: int count = 3; | কোনো type লেখা হয় না: let count = 3; |
| সবচেয়ে ছোট program | চিরচেনা রূপে main method সহ একটা class, পাঁচ লাইন; Java 25 (2025) ছোট program-এ class-এর লাইনটা বাদ দিতে দেয়, তবে বেশিরভাগ course এখনো ওটা দিয়েই শুরু করে | এক লাইন |
| কোথায় দেখা পাবে | Android app, ব্যাংক আর বড় প্রতিষ্ঠানের back office | প্রতিটা web page-এ, আর Node.js দিয়ে server, phone আর desktop-এ |
Table-টার শুধু তিনটা লাইন মনে রাখলে এই তিনটা রাখো। Java আগে থেকেই bytecode-এ compile হয়; JavaScript text হিসেবে যায় আর একটা engine সেটা চালায়। Java-তে প্রতিটা variable-এর type লিখতে হয়; JavaScript-এ লাগে না। Java-র program থাকে একটা class-এর ভেতরে; JavaScript-এর program এক লাইনেরও হতে পারে।
Java-তে একই greeting-টা দেখো। এখানে এটা চালানোর চেষ্টা কোরো না। শুধু খেয়াল করো, এক লাইনের কাজের চারপাশে কত বাড়তি সাজসজ্জা।
public class Hello {
public static void main(String[] args) {
String name = "Maria";
System.out.println("Hello, " + name + "!");
}
}
JavaScript-এ এটা দুই লাইন, Example 2-এ দেখবে। তাই কোনো tutorial-এ System.out.println বা public static void দেখলে বুঝবে, তুমি Java পড়ছ, JavaScript না।
1995 থেকে আজ পর্যন্ত একটা সময়রেখা
ত্রিশ বছরে JavaScript অনেক বদলেছে। সব তারিখ জানার দরকার নেই। তবে পাঁচটা তারিখ জানলে online যা পড়বে তার বেশিরভাগটা বুঝে যাবে।
1999 থেকে 2009 পর্যন্ত ভাষাটা প্রায় নড়েনি। চতুর্থ edition নামে একটা বড় update-এর পরিকল্পনা ছিল, 2008-এ সেটা বাতিল হয়। তার বদলে 2009-এ এল ES5, সাবধানে নেওয়া একটা ধাপ। তারপর ES2015 একসঙ্গে এত কিছু নিয়ে এল যে লোকে এখনো এর পরের সবকিছুকে "modern JavaScript" বলে।
2016 থেকে প্রতি বছর একটা নতুন edition আসে, প্রতিটাই ছোট। তাই ES2022 আর ES2023-এর পার্থক্য হাতে গোনা কয়েকটা feature। আর ES5 আর ES2015-এর পার্থক্য হলো code লেখার পুরো ধরনটাই।
ECMAScript, ES2015 আর ES2023: নামগুলোর মানে কী
নিয়মের বইটা কোনো একটা browser company লেখে না। লেখে TC39 নামের একটা কমিটি, যেটা Ecma International নামের একটা standards সংস্থার ভেতরে। বইটার আনুষ্ঠানিক নাম ECMA-262, আর এটা যে ভাষার বর্ণনা দেয় তার নাম ECMAScript।
দ্বিতীয় একটা নাম কেন? "JavaScript" শব্দটা একটা trademark। আজ এর মালিক Oracle, যে Sun-কে কিনে নিয়েছিল। তাই standard এমন একটা নাম ব্যবহার করে যার মালিক কেউ না। বাস্তবে লোকে মুখে বলে "JavaScript", আর নিয়মের বইয়ে লেখা থাকে "ECMAScript"। দুইটা একই ভাষা।
আগে edition-গুলোর নাম ছিল নম্বরে: ES3, ES5, ES6। 2015 থেকে নাম হয় বছর দিয়ে। ES6 আর ES2015 একই edition-এর দুইটা নাম, online দুইটাই দেখবে।
একটা edition-এর নাম পড়া
ES2023
ESহলো ECMAScript-এর ছোট রূপ, JavaScript-এর standard-এর দেওয়া নাম।2023হলো যে বছর নিয়মের বইয়ের ওই edition অনুমোদন পেয়েছে।ES5আরES6-এর মতো পুরনো নামগুলো edition নম্বর;ES6আরES2015একই জিনিস।
এই track ES2023-এর JavaScript লেখে। এর একটা কাজের কারণ আছে। একটা engine (যে program JavaScript চালায়) শুধু সেই edition-গুলোর feature বোঝে, যেগুলোর জন্য তাকে বানানো হয়েছে। Playground-এ তোমার code চালায় Node.js 22, আর সে ES2023-এর সবটাই বোঝে। তাই এই track কখনো Playground-এর কাছে এমন feature চাইবে না যেটা ওর নেই।
পরের কোনো lesson যদি আরও নতুন কিছু ব্যবহার করে, যেমন ES2024-এর Object.groupBy, সেটা আলাদা করে বলে দেবে আর "ES2024" চিহ্ন দেবে। মানে edition-এর নামটা আসলে একটা কথা দেয়: কোন code চলবে।
JavaScript code-এর সঙ্গে প্রথম দেখা
ঠিকঠাক code চালানো শুরু করবে lesson 05-এ। আপাতত এই তিনটা program আর ওদের output পড়ো। প্রতিটাই সম্পূর্ণ program। console.log(...) লাইনটার মানে "এটা ছাপো", পুরোটা lesson 05 বুঝিয়ে দেবে।
চালানোর মতো সবচেয়ে ছোট JavaScript program। কোনো class নেই, কোনো main নেই, কিছু সাজাতেও হয় না।
console.log("Hello, Maria!");
Hello, Maria!
Quote-এর ভেতরের লেখাটা হুবহু ছাপা হয়। Quote চিহ্নগুলো নিজে ছাপা হয় না।
Compiler-এ চালাওউপরের Java program-টার JavaScript যমজ এটা। নামটা একবার রাখা হয়, তারপর message-এ ব্যবহার হয়।
const name = "Maria";
console.log("Hello, " + name + "!");
console.log("Welcome to JavaScript.");
Hello, Maria!
Welcome to JavaScript.
const name = "Maria"; লেখাটাকে একটা নাম দেয়। + লেখার টুকরোগুলো জোড়া দেয়। "Maria"-র জায়গায় নিজের নাম বসাও, প্রথম লাইনটাও সঙ্গে সঙ্গে বদলে যাবে।
একজন নতুন শিক্ষার্থী সত্যিই এমন program লেখে: কয়েকটা তথ্য সংখ্যা হিসেবে রাখা, আর একটা ছোট হিসাব।
const born = 1995;
const firstStandard = 1997;
const modern = 2015;
console.log("JavaScript was born in " + born + ".");
console.log("Its first standard came " + (firstStandard - born) + " years later.");
console.log("Modern JavaScript began in " + modern + ".");
JavaScript was born in 1995.
Its first standard came 2 years later.
Modern JavaScript began in 2015.
firstStandard - born-এর চারপাশের bracket JavaScript-কে আগে বিয়োগটা করতে বলে। Bracket বাদ দিলে লাইনটা কেন একদম অন্যরকম আসে, সেটা Module 2 বুঝিয়ে দেবে।
C track করে থাকলে
এই হলো C-তে Example 2। আকারটা একই, কিন্তু কিছু চলার আগে C-র লাগে একটা header, একটা main function আর একটা compile ধাপ। JavaScript-এর তিনটার একটাও লাগে না।
#include <stdio.h>
int main(void)
{
const char *name = "Maria";
printf("Hello, %s!\n", name);
printf("Welcome to JavaScript.\n");
return 0;
}
এই track ধরে নেয় না যে তুমি C জানো। C-র সঙ্গে প্রতিটা তুলনা এরকম একটা box-এ থাকে, আর চাইলে সবগুলোই বাদ দিতে পারো।
এটা কোথায় কাজে লাগছে
- এই site। তুমি যে Progsity page-গুলো পড়ছ সেগুলো React আর Next.js দিয়ে বানানো। লেখা হয়েছে TypeScript-এ, মানে type সহ JavaScript-এ, আর তোমার browser-এ পৌঁছানোর আগে সাধারণ JavaScript-এ বদলে নেওয়া হয়।
- Gmail। 2004 থেকে inbox-টা page-এর ভেতরে JavaScript হিসেবে চলে। পুরো page reload না করেই নতুন mail আনে আর তালিকাটা নতুন করে আঁকে।
- Figma। Menu, panel আর comment browser-এ JavaScript হিসেবে চলে। আঁকার canvas-টা নিজে একটা C++ engine, WebAssembly-তে compile করা, পাশাপাশি চলে। JavaScript অন্য একটা ভাষার সঙ্গে মিলে কাজ করছে, এটা তার একটা সৎ উদাহরণ।
- VS Code। Microsoft-এর এই code editor TypeScript-এ লেখা, আর চলে Electron-এ। Electron হলো JavaScript app-এর জন্য একটা desktop খোলস, lesson 02 এটা বুঝিয়ে দেবে।
- Browser-এ Netflix। Web player-টা JavaScript। তোমার connection দ্রুত হলে বা ধীর হলে, পরের অংশটা কোন quality-র video চাইবে সেটা এই player-ই ঠিক করে।
যে ভুলগুলো সবাই করে
১. JavaScript file-এ Java লিখে ফেলা।
String name = "Maria";
console.log(name);
Node.js 22 এর একটা লাইনও চালায় না: SyntaxError: Unexpected identifier 'name'। JavaScript-এ variable-এর সামনে কোনো type শব্দ বসে না, তাই String-এর পরে আরেকটা শব্দ ওর কাছে অর্থহীন। সমাধান হলো const name = "Maria";। তোমার প্রথম tutorial যদি গোপনে Java-র tutorial হয়, এই ভুলটা তুমি করবেই।
২. ভুল করে একটা Java course ধরে ফেলা।
কোনো error message তোমাকে সাবধান করবে না; তুমি শুধু এক সপ্তাহ ধরে গুলিয়ে থাকবে। যেকোনো course-এর প্রথম program-টা দেখো। ওতে class, public static void main বা System.out.println থাকলে সেটা Java। JavaScript-এর course শুরু হয় console.log বা একটা web page দিয়ে।
৩. JavaScript-কে button নাচানোর খেলনা ভাবা।
1997 সালে কথাটা প্রায় সত্যি ছিল। আজ VS Code, Discord-এর desktop app আর অনেক বড় website-এর পেছনের server JavaScript-এ চলে। খেলনা ভেবে শিখলে আসল কাজের সময় তৈরি থাকবে না।
৪. "ES2023 install" করার চেষ্টা।
Edition হলো একটা নিয়মের বই, download করার জিনিস না। তুমি install করো একটা engine, আর কোন edition বুঝবে সেটা engine-ই ঠিক করে। Node.js 22 আগে থেকেই ES2023 বোঝে, তাই আর কিছু আনতে হবে না।
Example 2-এর "Compiler-এ চালাও" link দিয়ে program-টা খোলো। "Maria"-র জায়গায় নিজের নাম লেখো, quote দুইটা রেখেই, তারপর Run চাপো।
নিজে যাচাই করো। Output-এর প্রথম লাইনে থাকবে Hello, , তারপর তোমার নাম আর একটা আশ্চর্যবোধক চিহ্ন। তার বদলে error দেখলে দেখো quote দুইটা এখনো আছে কি না।
নিচের আটটা কথাকে তিন ভাগে সাজাও: শুধু Java-র বেলায় সত্যি, শুধু JavaScript-এর বেলায় সত্যি, আর দুইটার বেলাতেই সত্যি।
- কিছু install না করেই প্রতিটা browser এটা চালাতে পারে।
- এর চিরচেনা প্রথম program একটা class-এর ভেতরে বসে।
- এটা প্রথম বের হয় 1995-এ।
- Variable লেখা হয়
letবাconstদিয়ে। - চলার আগে
javacএকে bytecode-এ compile করে। - এর standard-এর নাম ECMAScript।
- প্রতিটা variable তার type লিখে দেয়, যেমন
int। - এর নামটা Oracle-এর trademark।
নিজে যাচাই করো। শেষে দুইটা "শুধু" ভাগে তিনটা করে থাকবে, আর "দুইটাতেই" ভাগে দুইটা। 8 নম্বরটাই চালাক প্রশ্ন: এটা নাম নিয়ে, code নিয়ে না। তাই ECMAScript-এর অংশটা আরেকবার পড়ো।
একটা feature কোন edition-এ এসেছে, খুঁজে বের করো। MDN-এ (developer.mozilla.org) Array.prototype.at search করো, আর ওর "Specifications" আর "Browser compatibility" অংশ দুইটা পড়ো।
নিয়ম। কোন edition এটা যোগ করেছে লিখে রাখো। তারপর এক বাক্যে বলো, এই track-এর level, মানে ES2023, এটাকে ধরে কি না। শেষে compatibility table থেকে বের করো, Node.js-এর কোন version প্রথম এটা চালায়।
নিজে যাচাই করো। Edition-টা ES2023-এর চেয়ে পুরনো, তাই track এটা ব্যবহার করতে পারে, আর Node.js 22 এটা চালায়। তোমার উত্তর যদি বলে এটা "খুব নতুন", edition-এর নামটা আবার পড়ো: ES2022 আসে ES2023-এর আগে।
যে প্রশ্নগুলো সবার মনে আসে
JavaScript-এর আগে কি Java শিখতে হবে?
না। দুইটা আলাদা ভাষা, একটা অন্যটার সিঁড়ি না। এই track একদম শূন্য থেকে শুরু করে, অন্য কোনো ভাষা জানা ধরে নেয় না।
TypeScript কি আলাদা ভাষা?
এটা JavaScript, উপরে type যোগ করা। চলার আগে একটা tool TypeScript-কে সাধারণ JavaScript-এ বদলে নেয়। এখানে যা শিখবে তার সবটাই সরাসরি কাজে লাগবে, আর এটা কতটা জনপ্রিয় হয়েছে সেটা lesson 03 দেখাবে।
কিছু website ES6 বলে, কিছু ES2015 বলে কেন?
দুইটা একই edition। 2015-এ কমিটি নম্বর ছেড়ে বছর দিয়ে নাম দিতে শুরু করে, আর পুরনো লেখাগুলো পুরনো নামই রেখে দিয়েছে। আজ বছরের নামগুলোই আনুষ্ঠানিক।
আমার কাছে JavaScript-এর কোন version আছে?
তোমার engine যা বোঝে, তোমার version সেটাই। গত এক বছরে update হওয়া একটা browser, বা Node.js 22, এই track-এর ব্যবহার করা সবকিছু বোঝে। Node.js-এর version কীভাবে দেখতে হয়, lesson 05 দেখাবে।
JavaScript-এর মালিক কে?
ভাষাটার মালিক কেউ না। TC39 সবার সামনে খোলাখুলি standard লেখে, আর যে কেউ এর জন্য engine বানাতে পারে। শুধু "JavaScript" নামটা trademark, আর সেজন্যই standard-এর নাম ECMAScript।
মূল কথা
- JavaScript হলো সেই ভাষা যেটা প্রতিটা web browser চালায়, standard-এর নাম ECMAScript, আর এখন server, phone আর desktop-এও চলে।
- Java আর JavaScript-এর মিল নামের একটা অংশে আর কিছু চিহ্নে, জরুরি আর কিছুতেই না।
- Java bytecode-এ compile হয়, type লেখে আর সাধারণত program-কে একটা class-এ মুড়ে রাখে; JavaScript text থেকে চলে, type লেখে না আর এক লাইনেরও হতে পারে।
- পাঁচটা তারিখ: 1995 জন্ম, 1997 প্রথম standard, 2009 ES5 আর Node.js, 2015 modern JavaScript, তারপর থেকে প্রতি বছর নতুন edition।
- এই track ES2023 লেখে, আর Playground-এর Node.js 22 তার সবটাই চালায়।
এরপর দেখবে JavaScript আসলে কোথায় কোথায় চলে। জায়গা চারটা, আর তার একটা তোমার পকেটে।
lesson ১ শেষ
শেষ হলে চিহ্ন দিন, অগ্রগতি আপনার সাথে থাকবে।
পরেরটা: কোথায় চলে: browser, server, phone, desktop