بررسی اجمالی فصل

در پایان این فصل، شما میتونید تفاوت اجرای single-threaded و multi-threaded برنامه ها رو تشخیص بدید، پروسه اجرای برنامه ها در جاوا اسکریپت رو درک کنید، نحوه برقراری ارتباط call stack و memory heap با بقیه عناصر محیط اجرایی رو بدونید، کدی بنویسید که با سیستم garbage collector جاوا اسکریپت سازگاری داشته باشه، و اشکالات مربوط به حافظه رو توی مرورگر دیباگ کنید.

توی این فصل، قراره ببینیم جاوا اسکریپت چجوری توی مرورگر اجرا میشه و منابع مهم مختلف سیستم مثل حافظه رو مدیریت میکنه.

معرفی فصل

توی دو فصل قبل شما در مورد مفاهیم اساسی جاوا اسکریپت یاد گرفتید، با event loop آشنا شدید، و دیدید که چجوری جاوا اسکریپت پروسه ی مدیریت حافظه (memory management) رو هندل میکنه. توی این فصل، به مفاهیم اشاره شده نگاه عمیق تری میندازیم و یاد میگیریم که چجوری کدی بنویسیم که با یکسری از قابلیت های زیر پوسته جاوا اسکریپت کار کنه.

این بین توسعه دهنده ها رایجه که راجع به کانسپت هایی که مربوط به زیرپوسته و اطراف جاوا اسکریپت میشن ندونن و توی شغلشون همینجوری برن جلوتر. درواقع میشه یه توسعه دهنده موفق بود که برنامه های خوب و قدرتمندی بنویسه، بدون اینکه به طور کامل چیزایی که توی این فصل یاد میدیم رو بدونه.

پس چرا باید در مورد نحوه کار اجزای داخلی جاوا اسکریپت بدونیم؟ نمیشه ما کدمون رو بنویسیم و بقیه چیزا رو به جاوا اسکریپت بسپاریم تا خیلی تروتمیز برامون حلشون کنه؟ خب، مشکلی که این راه داره اینه که بعضی وقتا همه چیز طبق برنامه پیش نمیره و ما باید بدونیم توی برناممون چه خبره و اون پشت چه اتفاقی داره میافته تا بتونیم بخشی از کدمون که باعث شده اپلیکیشنمون باگ داشته باشه و سرعتش کم بشه رو دوباره بنویسیم. فرض کنید شما یک راننده رالی هستید. شما میتونید ماشینتون رو تنها با دانش سطحی در مورد اینکه چجوری میشه یه ماشین رو روند توی مسیر برونید. این سطح از مهارت میتونه شما رو به خط پایان برسونه، اما باعث نمیشه که شما برنده مسابقه باشید.
برای اینکه خودتون رو از دیگران متمایز کنید، باید سطح مهارت و تجربه خودتون رو ببرید بالا. درسته که صرفا تمرین کردن خود اون مهارت به شما کمک میکنه تا به مرور زمان پیشرفت کنید و بدونید که پشت صحنه چه اتفاقایی داره میافته، این مورد برای روندن یه ماشین و برنامه نویسی در جاوا اسکریپت صدق میکنه، اما داشتن درک عمیق تر از خود پروسه های واقعی در حال اجرا به شما اجازه میده تا با اعتماد به نفس بالاتری تصمیمات مختلف بگیرید و برنامه بریزید و بدونید دقیقا کدوم قسمت های سیستم رو میخواید کنترل کنید.
بیاید یه مثال واضح تر از خود برنامه نویسی براتون بزنیم. فرض کنید در حال تست کردن کد یه کارمند هستید و نمیدونید چرا یه صفحه مدت زیادی طول میکشه تا لود بشه، چرا موقع انجام یه عملیات خاص صفحه پاسخگو نیست، یا چرا منابع زیادی از سیستم رو درگیر میکنه. این مسائل مربوط به عملکرد همیشه یه اپلیکیشن رو خراب نمیکنه، و حتی ممکنه اصلا توسط بعضی از کاربر ها موردتوجه قرار نگیره؛ اما روی قابلیت استفاده از برنامه و تجربه کاربر تاثیر میذاره، که خود اینها هم دوباره روی چیزایی مثل رتبه بندی سایت در SEO و محبوبیت سایت بین کاربرا تاثیر میذارن.
فهمیدن اینکه در زیر پوسته برنامه چه اتفاقایی داره میافته میتونه به شما کمک کنه تا کد های بهتری بنویسید و اونها رو سریعتر دیباگ کنید، که باعث میشه کار شما به عنوان توسعه دهنده راحت تر بشه و همچنین منجر به ساخته شدن اپلیکیشن های موفق تر و رابط کاربری روون تر توی اونها میشه.
دونستن چیزایی که توی این فصل به شما یاد داده میشه باعث میشه کدی که مینویسید بهترین استفاده رو از زبان برنامه نویسی جاوا اسکریپت و محیط های اجرایی داشته باشه.