Discover
کدکست

5 Episodes
Reverse
در قسمت پایانی فصل اول «کدکست»، سفر خود را در تاریخ جاوااسکریپت به پایان میرسانیم و به دنیای شگفتانگیز و پیچیدهی امروز آن قدم میگذاریم. دیگر داستان فقط دربارهی خود «زبان» نیست، بلکه دربارهی یک «اکوسیستم» غولپیکر است.
در این قسمت، به سراغ «جنگ فریمورکها» میرویم و سه غول اصلی این میدان را بررسی میکنیم:
انگولار (Angular): محصول گوگل، یک «جعبه ابزار کامل و همهکاره» و ساختاریافته که برای پروژههای عظیم سازمانی طراحی شده است.
ریاکت (React): محصول فیسبوک، یک «کتابخانه» سبک و منعطف که با فلسفهی «کامپوننت» (مانند لگو) و نوآوری «Virtual DOM»، ساخت رابطهای کاربری را متحول کرد.
ویو (Vue): محصول جامعه متنباز و ساختهی اِوِن یو، یک فریمورک «پیشرونده» که بهترین ویژگیهای انگولار و ریاکت را با سادگی و یادگیری آسان ترکیب میکند.
سپس به پشت صحنه میرویم و با «ابزارهای ساخت» (Build Tools) آشنا میشویم؛ ماشینآلات حیاتی که کدهای مدرن ما (تایپاسکریپت، JSX) را برای مرورگرها قابل فهم میکنند. از پادشاه قدیمی یعنی Webpack و پیچیدگیهایش میگوییم تا به نسل جدید و سریع آن یعنی Vite برسیم.
در ادامه، چالشهای «اپلیکیشنهای تکصفحهای» (SPA) مانند کندی اولیه و مشکلات SEO را بررسی کرده و راهحل مدرن آن، یعنی «رندرینگ سمت سرور» (SSR) را تشریح میکنیم. میبینیم که چطور «متا-فریمورکهایی» مانند Next.js و Nuxt.js این فرآیند پیچیده را مدیریت کرده و مرز بین فرانتاند و بکاند را کمرنگ میکنند.
در نهایت، نگاهی به آینده و مرز بعدی توسعه وب میاندازیم: WebAssembly (Wasm). توضیح میدهیم که چرا Wasm رقیب جاوااسکریپت نیست، بلکه یک «همکار» فوقسریع برای انجام کارهای محاسباتی سنگین است و چگونه این دو با هم آیندهی اپلیکیشنهای تحت وب را شکل میدهند. این قسمت، روایتی از تکامل جاوااسکریپت از یک زبان ساده به یک کهکشان پر از ابزار و نوآوری است.
در قسمت قبل، شاهد رنسانس جاوااسکریپت بودیم. زبانی که به لطف jQuery و Node.js از دوران تاریک خود خارج شد و با استاندارد ES6 به یک ابزار برنامهنویسی تمامعیار تبدیل شد. جاوااسکریپت حالا همهجا بود: از مرورگر تا سرور و اپلیکیشنهای موبایل. اما این موفقیت و رشد، چالشهای جدیدی را به همراه آورد.
شرکتهای غولپیکری مانند گوگل، فیسبوک و مایکروسافت شروع به ساختن اپلیکیشنهای عظیم و پیچیده با جاوااسکریپت کردند و اینجا بود که یکی از نقاط قوت اصلی این زبان، یعنی ماهیت «پویای» آن، کمکم به یک پاشنه آشیل تبدیل شد. این انعطافپذیری که در پروژههای کوچک یک مزیت بود، در مقیاس بزرگ به هرجومرج و خطاهای زمان اجرا (Runtime Errors) منجر میشد. خطای معروف Cannot read property ‘x’ of undefined به کابوس برنامهنویسان تبدیل شده بود.
در این قسمت از «کُدکست»، به بررسی این «دردهای رشد» جاوااسکریپت میپردازیم و داستان ظهور یک ناجی غیرمنتظره را روایت میکنیم: تایپاسکریپت (TypeScript).
خواهیم دید که چطور مایکروسافت، با رهبری اسطورهای به نام آندرس هایلسبرگ (Anders Hejlsberg)، خالق زبان #C، با یک ایده درخشان وارد میدان شد. آنها تایپاسکریپت را نه به عنوان یک زبان جدید، بلکه به عنوان یک «ابرمجموعه» (Superset) از جاوااسکریپت معرفی کردند؛ یک لایه اختیاری از «سیستم انواع استاتیک» که به برنامهنویسان اجازه میداد خطاها را قبل از اجرای کد شناسایی کنند.
در این گفتگو، مفاهیم کلیدی تایپاسکریپت را با مثالهای ساده توضیح میدهیم:
چرا ماهیت «داینامیک» جاوااسکریپت در پروژههای بزرگ به مشکل تبدیل میشود؟
تایپاسکریپت چیست و مفهوم «ابرمجموعه» به چه معناست؟
چگونه تایپاسکریپت با افزودن «انواع داده» (Types) به کد، از بروز خطاهای رایج جلوگیری میکند؟
مزایای اصلی استفاده از تایپاسکریپت: بهبود ابزارهای توسعه (Autocomplete)، مستندسازی خودکار کد، و سادهسازی نگهداری و بازسازی (Refactoring) پروژههای بزرگ.
فرآیند «ترادیسی» (Transpilation) چیست و چگونه کدهای تایپاسکریپت به جاوااسکریپت خالص تبدیل میشوند تا برای مرورگرها قابل فهم باشند؟
این قسمت، داستان بلوغ یک زبان است؛ داستانی که نشان میدهد چگونه یک جامعه میتواند با ساخت ابزارهای جدید، بر محدودیتهای خود غلبه کند و چگونه یک شرکت میتواند از یک رقیب به یک توانمندساز بزرگ در دنیای متنباز تبدیل شود. با ما همراه باشید تا ببینید جاوااسکریپت چگونه به کمک برادر بزرگتر و منظمتر خود، برای ساخت پیچیدهترین اپلیکیشنهای دنیا آماده شد.
در قسمت قبل، جاوااسکریپت را در یکی از تاریکترین دورانهایش رها کردیم؛ دورانی که سلطهی اینترنت اکسپلورر نوآوری را متوقف کرده بود و تلاش برای مدرنسازی زبان با شکست تلخ استاندارد ES4 مواجه شده بود. اما تاریخ به ما یاد داده که هر زمستانی، بهاری هم دارد.
در این قسمت از «کُدکست»، داستان «رنسانس جاوااسکریپت» را روایت میکنیم. سفری که با دو جرقهی بزرگ آغاز شد:
۱. jQuery: ناجی در مرورگر: در سال ۲۰۰۶، جان رزیگ با کتابخانهی جیکوئری، کابوس تفاوتهای بین مرورگرها را پایان داد. با شعار «کمتر بنویس، بیشتر کار کن»، جیکوئری مفاهیم پیچیدهای مثل دستکاری DOM و AJAX را به شدت ساده کرد و به توسعهدهندگان اعتماد به نفس لازم برای ساخت وباپلیکیشنهای پویا و مدرن را بازگرداند.
۲. Node.js: شکستن قفس: با وجود محبوبیت دوباره، جاوااسکریپت هنوز در قفس مرورگر زندانی بود. رایان دال با یک ایدهی انقلابی، موتور فوق سریع V8 گوگل را از دل مرورگر کروم بیرون کشید و با افزودن قابلیتهای سروری، Node.js را خلق کرد. برای اولین بار، جاوااسکریپت از مرورگر فرار کرد و قدم به دنیای سرورها گذاشت. این اتفاق، تولد توسعهدهندهی «فول-استک جاوااسکریپت» و اکوسیستم عظیم NPM را رقم زد.
اما این رنسانس، زمینه را برای یک انقلاب بزرگتر آماده کرد. خود زبان، با استانداردهای قدیمی، برای این دنیای جدید کافی نبود. در بخش دوم این قسمت، به انقلاب ES6 (ECMAScript 2015) میپردازیم؛ بزرگترین و مهمترین بهروزرسانی در تاریخ جاوااسکریپت که با معرفی ویژگیهایی مثل let/const، توابع پیکانی، کلاسها، ماژولها و پرامیسها (Promises)، زبان را برای همیشه متحول کرد و به «جهنم کالبکها» (Callback Hell) پایان داد.
همچنین خواهیم دید که کمیتهی استانداردسازی چطور با درس گرفتن از گذشته، فرآیند انتشار سالانه را پایهگذاری کرد تا قطار نوآوری دیگر هرگز متوقف نشود.
با ما همراه باشید تا ببینید جاوااسکریپت چطور از یک زبان منفور و کند، به پادشاه بلامنازع دنیای وب تبدیل شد.
در قسمت دوم پادکست «کُدکست»، داستان جاوااسکریپت از یک داستان تولد، به یک داستان رقابت و بقا تبدیل میشود. پس از خلق شگفتانگیز این زبان، غول خفته، مایکروسافت، با مهندسی معکوس جاوااسکریپت و ساخت نسخه اختصاصی خود به نام «جیاسکریپت» (JScript)، وارد میدان میشود.
این حرکت، وب را برای سالها وارد دوران هرجومرجی میکند که به «غرب وحشی وب» معروف شد. توسعهدهندگان مجبور میشدند برای هر مرورگر، کدی جداگانه بنویسند و کابوس «بو کشیدن مرورگر» (Browser Sniffing) به یک واقعیت روزمره تبدیل شد.
در این قسمت، روایت میکنیم که چطور نتاسکیپ در یک حرکت استراتژیک و هوشمندانه، برای نجات مخلوق خود، کنترل جاوااسکریپت را به یک سازمان استانداردسازی بیطرف به نام ECMA واگذار کرد. این تصمیم، منجر به تولد استاندارد رسمی «اِکمااسکریپت» (ECMAScript) شد؛ نامی اداری برای کتابچه قوانینی که قرار بود به این آشفتگی پایان دهد.
اما داستان به همینجا ختم نمیشود. با پیروزی قاطع اینترنت اکسپلورر ۶ در جنگ مرورگرها، وب وارد «دوران تاریک» رکود و توقف نوآوری شد. تلاشها برای یک جهش بزرگ با استاندارد بلندپروازانه ES4 به دلیل اختلافات داخلی با شکست مواجه شد و به نظر میرسید آینده جاوااسکریپت تاریکتر از همیشه است.
در این میان، ظهور ناجیانی از دل جامعه توسعهدهندگان مانند کتابخانه jQuery، و شعلهور شدن دوباره جنگ مرورگرها با ظهور فایرفاکس و گوگل کروم (و موتور قدرتمند V8)، جرقههای امید را روشن کرد. در نهایت، با توافق همه اعضا، استاندارد ES5 در سال ۲۰۰۹ منتشر شد و رسماً به یک دهه رکود پایان داد تا رنسانس جاوااسکریپت آغاز شود.
تصور کنید یک زبان برنامهنویسی که امروز روی تقریبا تمام دستگاههای متصل به اینترنت اجرا میشود، فقط در ده روز خلق شده باشد. در این قسمت از «کدکست»، به اواسط دهه نود میلادی و اوج «جنگ مرورگرها» بین نتاسکیپ و مایکروسافت سفر میکنیم. میشنویم که چطور نتاسکیپ برای بقا در این رقابت، به یک زبان اسکریپتی ساده برای جان بخشیدن به صفحات وب ایستا نیاز پیدا کرد. این قسمت، داستان باورنکردنی «برندان آیک» است؛ برنامهنویسی که در یک ماراتن دهروزه و پرفشار، اولین نسخه از این زبان را با الهام از زبانهای مختلف خلق کرد. ماجرای تغییر نامهای متعدد این زبان از «موکا» به «لایواسکریپت» و در نهایت، تصمیم بازاریابی جنجالی که به نام «جاوااسکریپت» منجر شد را روایت میکنیم. همچنین، به «نقصهای مادرزادی» و ویژگیهای عجیبی میپردازیم که به دلیل این تولد عجولانه در زبان باقی ماندند و چطور با مهندسی معکوس این زبان توسط مایکروسافت و تولد «جیاسکریپت»، وب وارد دوران آشفتگی و «غرب وحشی» شد. این داستان، روایت تولد یک غول و اولین قدمها برای استانداردسازی آن از طریق «اکمااسکریپت» است.