📌 جاوا اسکریپت دقیقا چیه؟ بخش 3: Interpreted or Just-in-Time Compiled
خب حالا جاوااسکریپت یه زبان خیلی خاصه! چون:
- هم interpreted هست
- هم از تکنیکی به اسم Just-in-Time Compilation (JIT) استفاده میکنه
چرا این مهمه؟
چون این تکنیک یه جور ترکیب بین راحتی و سرعت در اختیار شما میزاره.
بخش 1، بخش 2
#JIT #javanoscript
توی دنیای برنامهنویسی، یه سری زبانها هستن که قبل از اجرا تبدیل به زبان ماشین میشن (مثل ++C). به اینا میگن compiled languages.
یه سری دیگه هم خط به خط موقع اجرا تفسیر میشن (مثل php یا خود جاوااسکریپت توی گذشته). به اینا میگن interpreted languages.
خب حالا جاوااسکریپت یه زبان خیلی خاصه! چون:
- هم interpreted هست
- هم از تکنیکی به اسم Just-in-Time Compilation (JIT) استفاده میکنه
یعنی اولش مثل یه زبان تفسیرشونده اجرا میشه، ولی بعدش اگه یه بخش از کدت زیاد استفاده بشه، موتور جاوااسکریپت (مثل V8 توی Chrome) اون قسمت رو در لحظه به زبان ماشین تبدیل میکنه تا سریعتر اجرا بشه.
و جالبتر اینکه:
موتور جاوااسکریپت پشتصحنه همون کد رو چند بار بررسی میکنه و هر بار اون رو دقیقتر و بهینهتر کامپایل میکنه تا خروجی نهایی سریعتر و سبکتر بشه.
چرا این مهمه؟
چون این تکنیک یه جور ترکیب بین راحتی و سرعت در اختیار شما میزاره.
بخش 1، بخش 2
#JIT #javanoscript
@JSKernel
❤🔥1
🔥 چین دوباره ترکوند!
یه فاجعه دیگه برای شرکتهای آمریکایی!
شرکت چینی Zhipu AI یه مدل اوپن سورس جدید به اسم GLM-4.5 رو رونمایی کرده که عملکردش خیلی خیره کنندس.
یه رغیب جدید واسه grok 4
تست:
chat.z.ai
توضیحات پروژه:
z.ai/blog/glm-4.5
یه فاجعه دیگه برای شرکتهای آمریکایی!
شرکت چینی Zhipu AI یه مدل اوپن سورس جدید به اسم GLM-4.5 رو رونمایی کرده که عملکردش خیلی خیره کنندس.
یه رغیب جدید واسه grok 4
تست:
chat.z.ai
توضیحات پروژه:
z.ai/blog/glm-4.5
📌 جاوا اسکریپت دقیقا چیه؟ بخش 4: Multi-paradigm
• توی برنامهنویسی یه چیزی داریم به اسم paradigm (پارادایم). یعنی سبک یا روش فکر کردن برای نوشتن کد.
اما جاوااسکریپت فرق داره!
جاوااسکریپت یه زبان multi-paradigm هست، یعنی:
از چند سبک مختلف برنامهنویسی پشتیبانی میکنه، و تو میتونی هر جور که راحتتری باهاش کد بزنی.
• پارادایمهایی که جاوااسکریپت پشتیبانی میکنه:
این انعطاف باعث میشه بتونی کدت رو به هر سبکی که خواستی بنویسی.
بخش 1، بخش 2، بخش 3
#javanoscript
• توی برنامهنویسی یه چیزی داریم به اسم paradigm (پارادایم). یعنی سبک یا روش فکر کردن برای نوشتن کد.
بعضی زبانها فقط از یه سبک خاص پشتیبانی میکنن. مثلاً:
زبانهایی مثل C بیشتر procedural هستن (مرحلهبهمرحله جلو میری)
زبانهایی مثل Java بیشتر object-oriented هستن (همهچی کلاس و شیء)
اما جاوااسکریپت فرق داره!
جاوااسکریپت یه زبان multi-paradigm هست، یعنی:
از چند سبک مختلف برنامهنویسی پشتیبانی میکنه، و تو میتونی هر جور که راحتتری باهاش کد بزنی.
• پارادایمهایی که جاوااسکریپت پشتیبانی میکنه:
1. Procedural programming (دستوری):
مثل اینکه کدت رو خط به خط جلو ببری، با شرط و حلقه و متغیر
2. Object-Oriented programming (OOP) (شیءگرا):
با استفاده از constructor یا کلاسها برای ساخت شیء
3. Functional programming (FP) (تابعگرا):
با استفاده از توابع، map, filter, reduce و حتی توابع pure
این انعطاف باعث میشه بتونی کدت رو به هر سبکی که خواستی بنویسی.
بخش 1، بخش 2، بخش 3
#javanoscript
@JSKernel
❤1
📌 جاوا اسکریپت دقیقا چیه؟ بخش 5: Prototype-based Object-Oriented
• توی بعضی زبانها مثل Java وقتی بخوای شیء بسازی، اول باید یه class تعریف کنی و بعد از روش object بسازی. به این زبانها میگن class-based OOP (شیءگرایی مبتنی بر کلاس).
Prototype یعنی چی؟
جاوااسکریپت Object-Oriented language هست، ولی نه مثل Java که Class-Based هستن. بلکه با یه مدل متفاوت به اسم prototype-based inheritance. یعنی به جای کلاس، وراثت رو با شیء انجام میده.
دو نوع اصلی OOP:
بخش 1، بخش 2، بخش 3، بخش 4
#javanoscript #oop
• توی بعضی زبانها مثل Java وقتی بخوای شیء بسازی، اول باید یه class تعریف کنی و بعد از روش object بسازی. به این زبانها میگن class-based OOP (شیءگرایی مبتنی بر کلاس).
اما جاوااسکریپت اینطوری نیست!
جاوااسکریپت یه زبان prototype-based هست. یعنی:
• به جای اینکه با کلاس شروع کنی، میتونی مستقیماً از یه شیء دیگه کپی یا ارثبری کنی.
Prototype یعنی چی؟
• هر شیء توی جاوااسکریپت یه ویژگی مخفی به اسم [[Prototype]] داره (که با __proto__ هم دیده میشه).
• وقتی به یه property یا method دسترسی پیدا میکنی، اگه توی خود اون شیء نباشه، جاوااسکریپت میره از prototypeش دنبال اون ویژگی میگرده.
از ES6 به بعد چیزی به اسم class هم داریم، ولی در واقع پشت صحنه اون هم با prototype پیادهسازی میشه. یعنی class فقط یه syntax شیکتره برای همون مدل prototype-based.
جاوااسکریپت Object-Oriented language هست، ولی نه مثل Java که Class-Based هستن. بلکه با یه مدل متفاوت به اسم prototype-based inheritance. یعنی به جای کلاس، وراثت رو با شیء انجام میده.
دو نوع اصلی OOP:
• Class-based OOP: همهچیز با تعریف class شروع میشه. با new از کلاس object میسازی. مثل Java, Python
• Prototype-based OOP: از یه شیء موجود (prototype) شیء جدید میسازی. مثل JavaScript
بخش 1، بخش 2، بخش 3، بخش 4
#javanoscript #oop
@JSKernel
This media is not supported in your browser
VIEW IN TELEGRAM
چراغ خاموش مسیر و ادامه بده
📌 جاوا اسکریپت دقیقا چیه؟ بخش 6: First-class functions
• توی بعضی زبانها، تابع فقط یه بلاک کده که صداش میزنی تا کاری انجام بده.
• ولی توی JS، تابع خودش یه value حساب میشه، درست مثل عدد یا رشته.
کاربرد:
First-class بودن تابعها، پایهی خیلی از چیزهای مدرن توی جاوااسکریپت مثل functional programming، react hooks، middleware و حتی event system هست.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5
#first_class #javanoscript
• توی بعضی زبانها، تابع فقط یه بلاک کده که صداش میزنی تا کاری انجام بده.
• ولی توی JS، تابع خودش یه value حساب میشه، درست مثل عدد یا رشته.
کاربرد:
• میتونی تابعهای callback تعریف کنی (مثل توی addEventListener یا setTimeout)
• تابعهای higher-order بسازه (توابعی که توابع دیگه رو میگیرن یا برمیگردونن)
• میتونی خیلی راحت با تابعهای ناشناس (anonymous) یا arrow functions کار کنی
First-class بودن تابعها، پایهی خیلی از چیزهای مدرن توی جاوااسکریپت مثل functional programming، react hooks، middleware و حتی event system هست.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5
#first_class #javanoscript
@JSKernel
یادگیری با chatGPT اینطوره که تا یه جایی خوب پیش میره از یه جا به بعد پرامپت خوب بهش ندی کاری میکنه چیزایی که یادگرفتی هم یادت بره :)
سر همین اخیرا یه ویژگی براش اومده به اسم Study and learn. چیزی که میخواین یادبگیرین رو مرحله به مرحله جلو میبره و اینطور نیست که یه توده عظیم از اطلاعات کلی بهتون بده. فقط کافیه بهش بگین فهمیدم برو بعدی.
سر همین اخیرا یه ویژگی براش اومده به اسم Study and learn. چیزی که میخواین یادبگیرین رو مرحله به مرحله جلو میبره و اینطور نیست که یه توده عظیم از اطلاعات کلی بهتون بده. فقط کافیه بهش بگین فهمیدم برو بعدی.
@JSKernel
😁3❤🔥1
📌 جاوا اسکریپت دقیقا چیه؟ بخش 7: Dynamic
• تو زبانی مثل ++C، وقتی یه متغیر تعریف میکنی، باید از قبل مشخص کنی چه نوعی داره (مثلاً عدد، رشته، بولین و...).
به این زبانها میگن: Statically Typed
• از مزیت و معایبش هم بگم که، یکی از کاربرداش اینه که تایپ متغیرها به صورت dynamic یا دستی میتونه تغییر پیدا کنه. ایرادشم مثلا اینکه تو یه سری موارد باگ های عجیب غریبی میده
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6
#javanoscript
• تو زبانی مثل ++C، وقتی یه متغیر تعریف میکنی، باید از قبل مشخص کنی چه نوعی داره (مثلاً عدد، رشته، بولین و...).
به این زبانها میگن: Statically Typed
ولی توی جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Dynamically Typed هست. یعنی لازم نیست نوع متغیر رو از قبل مشخص کنی — خودش موقع runtime تشخیص میده که اون متغیر چه نوعی داره.
• از مزیت و معایبش هم بگم که، یکی از کاربرداش اینه که تایپ متغیرها به صورت dynamic یا دستی میتونه تغییر پیدا کنه. ایرادشم مثلا اینکه تو یه سری موارد باگ های عجیب غریبی میده
اما اگه دوست داری که JS رو با type ها استفاده کنی میتونی از TypeScript استفاده کنی. این مشکل با اضافه کردن "static types" حل میشه، ولی توی خود JS همیشه با dynamic typing کار میکنی.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6
#javanoscript
@JSKernel
❤🔥1
📌 جاوا اسکریپت دقیقا چیه؟ بخش 8: Single-threaded
• بعضی زبانها یا محیطها چند تا thread دارن و میتونن همزمان چند کار رو با هم انجام بدن (multi-threaded).
اما جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Single-Threaded هست، یعنی در هر لحظه فقط میتونه یک کار رو انجام بده.
یعنی چی؟
پس engine جاوااسکریپت چطور کارهای مختلف رو به صورت همزمان انجام میده؟
📌 خلاصه:
• جاوااسکریپت با اینکه single-threaded هست ولی با کمک Event Loop میتونه چند تا کار مختلف رو بهصورت همزمان مدیریت کنه.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7
• بعضی زبانها یا محیطها چند تا thread دارن و میتونن همزمان چند کار رو با هم انجام بدن (multi-threaded).
اما جاوااسکریپت اینطوری نیست.
• جاوااسکریپت یه زبان Single-Threaded هست، یعنی در هر لحظه فقط میتونه یک کار رو انجام بده.
یعنی چی؟
• توی JavaScript همهچیز به ترتیب اجرا میشه (خطبهخط)
• فقط یه دونه thread اصلی داره که بهش میگن main thread
• وقتی یه تابع اجرا میشه، بقیه باید صبر کنن تا اون تموم شه
پس engine جاوااسکریپت چطور کارهای مختلف رو به صورت همزمان انجام میده؟
• اینجاست که موتور جاوااسکریپت از یه چیزی به اسم Event Loop استفاده میکنه (در بخش آخر در موردش حرف میزنیم).
• جاوااسکریپت با کمک Event Loop و محیط اجرا (مرورگر یا Node.js)، میتونه کارهای زمانبر رو به صورت غیرهمزمان (async) مدیریت کنه، بدون اینکه thread اصلی بلاک بشه.
📌 خلاصه:
• جاوااسکریپت با اینکه single-threaded هست ولی با کمک Event Loop میتونه چند تا کار مختلف رو بهصورت همزمان مدیریت کنه.
اگه سوالی دارین تو بخش کامنتا بپرسید.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7
@JSKernel
Chakra UI یه کتابخونهی رابط کاربری برای React، که کلی کامپوننت آماده داره.
#chakra_ui #chakra
• اگه با React کار میکنی و دنبال یه راه ساده و سریع برای ساخت UI هستی، Chakra یکی از انتخابهای خوبه.
• بهجای اینکه از صفر دکمه و فرم و مودال بسازی، همهچی رو حاضر و آماده بهت میده!
#chakra_ui #chakra
@JSKernel
❤1
📌 جاوا اسکریپت دقیقا چیه؟ بخش اخر 9: Non-blocking event loop concurrency model
Concurrency Mode
• یعنی روسی که engine جاوااسکریپت میتونه کارهای مختلف رو به صورت همزمان (بدون توقف برنامه) انجام بده
اما چرا به Concurrency model نیاز داریم؟
پس ما به یه رفتار غیرمسدودکننده نیاز داریم به اسم Non-blocking
حالا به کمک Event loop میتونیم تسکهای طولانی رو پشت صحنه انجام بدیم و اجازه نمیده کد اصلی ما بلاک بشه
• async یه مفهومه یعنی چطور جاوااسکریپت با کارهای زمانبر رفتار میکنه
• event loop یه مکانیزمه یعنی چطور اون کارهای async رو مدیریت و اجرا میکنه
به این سبک اجرای همزمان تو جاوااسکریپت میگن:
Non-blocking Event Loop Concurrency Model
📌خلاصه:
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7، بخش 8
#javanoscript #async
Concurrency Mode
• یعنی روسی که engine جاوااسکریپت میتونه کارهای مختلف رو به صورت همزمان (بدون توقف برنامه) انجام بده
اما چرا به Concurrency model نیاز داریم؟
چون خود جاوااسکریپت Single-threaded هست. و صرفا میتونه یه کار رو به صورت همزمان برای ما انجام بده پس ما نیاز به روشی داریم که بتونیم کارهای محتلف و به صورت همزمان انجام بدیم.
حالا اگه ما یه تسک طولانی داشته باشیم چون جاوااسکریپت Single-threaded هست ادامه کد ما تا زمانی که اون تسک طولانی تموم بشه متوقف میشه.
پس ما به یه رفتار غیرمسدودکننده نیاز داریم به اسم Non-blocking
Non-blocking
• blocking یعنی همه چیز صبر کنه تا یه کار تموم بشه
• non-blocking یعنی اون کار زمانبر میره توی پسزمینه، و بقیهی کد اجرا میشه
حالا به کمک Event loop میتونیم تسکهای طولانی رو پشت صحنه انجام بدیم و اجازه نمیده کد اصلی ما بلاک بشه
Event Loop چیه؟
• یه مکانیزم توی JS که مدیریت میکنه کی کدهای async (زمانبر) اجرا بشن.
- پشت صحنه میشینه
- صف کارهایی که باید اجرا بشن رو بررسی میکنه
- وقتی نوبت رسید، اون کار رو میزاره توی thread اصلی و اجراش میکنه
• async یه مفهومه یعنی چطور جاوااسکریپت با کارهای زمانبر رفتار میکنه
• event loop یه مکانیزمه یعنی چطور اون کارهای async رو مدیریت و اجرا میکنه
به این سبک اجرای همزمان تو جاوااسکریپت میگن:
Non-blocking Event Loop Concurrency Model
📌خلاصه:
جاوااسکریپت با وجود اینکه فقط یه thread برای اجرا داره، ولی با استفاده از یه سیستم به اسم Event Loop، میتونه چندتا کار async رو بهصورت غیرهمزمان و بدون بلاک شدن برنامه مدیریت کنه.
اگه سوالی دارین تو بخش کامنتا بپرسین.
بخش 1، بخش 2، بخش 3، بخش 4، بخش 5، بخش 6، بخش 7، بخش 8
#javanoscript #async
@JSKernel
❤🔥1
Supabase یه سرویس بکانده که بهت کمک میکنه بدون دردسر، یه پشتصحنهی کامل برای اپلیکیشنات بسازی.
قابلیتها:
📌 وقتی به کارت میاد که بخوای سریع یه بکاند کامل و حرفهای بسازی، بدون اینکه از اول همهچی رو کدنویسی کنی.
#supabase
قابلیتها:
• دیتابیس داره (PostgreSQL)انگار یه Firebase اوپنسورسه که کنترل بیشتری هم بهت میده.
• احراز هویت داره (مثل لاکین، ثبتنام و...)
• استوریج برای آپلود فایلهات داره
• API خودکار برای دیتاها میسازه
• حتی قابلیت ریلتایم هم داره!
📌 وقتی به کارت میاد که بخوای سریع یه بکاند کامل و حرفهای بسازی، بدون اینکه از اول همهچی رو کدنویسی کنی.
#supabase
@JSKernel
Remix یه فریمورک برای ساخت وباپلیکیشن با React .
فرقش با بقیه؟ تمرکز روی سرعت، سئو و تجربهی کاربر.
حالا میتونی هم سمت کلاینت رو کنترل کنی، هم سمت سرور رو.
از لودینگ دیتا بگیر تا ارسال فرم و روتینگ و کلی چیزو مدیریت میکنه.
اگه میخواین پروژههاتون هم سریع باشه، هم با browser engine رفیق، Remix رو حتماً یه نگاه بنداز.
#remix #react
فرقش با بقیه؟ تمرکز روی سرعت، سئو و تجربهی کاربر.
حالا میتونی هم سمت کلاینت رو کنترل کنی، هم سمت سرور رو.
از لودینگ دیتا بگیر تا ارسال فرم و روتینگ و کلی چیزو مدیریت میکنه.
اگه میخواین پروژههاتون هم سریع باشه، هم با browser engine رفیق، Remix رو حتماً یه نگاه بنداز.
#remix #react
@JSKernel
❤1
