جاوا اسکریپت از دُرون - 0 / بی مقدمه

سلام،امیدوارم حالتون خوب باشه : )بی مقدمه"جاوا اسکریپت از دُرون" عنوان مجموعه مقالاتی است که در آینده و به مرور منتشر خواهند شد. این پست جهت ارائه توضیحات مربوط به این مجموعه و همچنین بعنوان مرجعی برای دسترسی به پست های آینده، منتشر شده است.coverبریم سراغ عنوان مقاله:چرا "جاوا اسکریپت"؟اکوسیستم جاوا اسکریپتخب چند تا دلیل داره که آخرش با هم میشماریم چند تا شده:قطعاً دلیل اول این میشه که جاوا اسکریپت زبان برنامه نویسی تخصصی من در حال حاضر هست، و با روحیه ای که من در ده-دوازده سال گذشته از خودم شناختم و با توکل به سندروم ایمپاستر، اگر اینطور نبود، هیچ وقت شروع به نوشتن در مورد جاوا اسکریپت نمیکردم.دلیل دوم هم میتونه ذکر این نکته باشه که به نظرم هیچ کس نمیتونه منکر گستردگی و کاربردپذیری این زبان بشه. درسته که جاوا اسکریپت در ابتدا فقط برای داینامیک کردن رفتار صفحات وب استفاده میشده، اما الان هم در سمت سرور، هم محاسبات ابری (!) و هم در توسعه نرم افزار بر بستر سیستم عامل های مختلف (دسکتاپ و موبایل) کاربرد داره.دلیل سوم؟ دلیل سوم شاید اونقدر مستقل از دلیل دوم نباشه تا بتونه ماهیت یک دلیل رو پیدا بکنه، ولی در هر صورت مهم هست و قابل ذکر. خیلی ساده بگیم میشه بوجود آمدن زبان های دیگه، بر مبنا و نزدیک به جاوا اسکریپت، مثل Dart یا Solidity و همچنین کتاب خانه ها، فریم ورک ها و سوپرسِت های متعدد که اونقدر شناخته شده هستند که حتی نیازی به اسم آوردن ازشون نیست. با یادگیری جاوا اسکریپت شما پتانسیل یادگیری یک زبان جدید (نزدیک به جاوا اسکریپت) و همچنین بزرگ کردن استک تخصص خودتون در هر بستری رو دارید.دلیل چهارم هم میشه "نان". قطعآ سفره ی هر خونه ای به "نان" نیاز داره. شما اگر یک توسعه دهنده متوسط (به بالا) جاوا اسکریپت باشید، میتونید با استفاده از این زبان، دغدغه "نان" رو حل کنید. حل کردن مابقی متعلقات به "نان" اما، از جمله "پنیر" و "سبزی"؛ نه برای شما، نه برای من و نه برای هیچ کس دیگه ای در شرایط فعلی اقتصادی جامعه آسون نیست. ولی بالاخره "نان" مسئله بسیار مهمیست که باید راجع بهش صحبت کرد.نان بومی در دوران کرونا (و صد البته با تشکر از دلبر)حالا اینکه چرا انقدر مارکت (بستر توزیع و جمع آوری "نان") ما توسعه دهنده ها پر شده از درخواست های توسعه دهنده جاوا اسکریپت (و متعلقات) در حال حاضر به من مربوط نیست و به نظرم از حوصله ی این پست هم خارج هست، اما در نظر گرفتن یکی از دو نکته زیر در این باب، خالی از لطف نیست:یک، توطئه کپیتالیسم جهانی [یا] دو، پاک سرشتی جامعه نرم افزار آزاد.و البته که من خیلی دوست دارم نظرم به نظر جناب "دو" نزدیک تر باشد، ولی حقیقاً قانع نمیشوم.و با ذکر چهار دلیل پرونده چرایی انتخاب "جاوا اسکریپت" رو میبندیم.اما چرا جاوا اسکریپت از “دُرون”، چرا مثلاً از پشت نه؟خب در این مرحله از نوشتار، ذهن مرتبی دارم و میدونم که سه تا دلیل داریم: توضیح لِس از "پشت" استفاده نشد، به دلیل اینکه نمیخوام در این سری مقالات درباره چرایی یا چگونگی استفاده از جاوا اسکریپت در سمت سرور حرفی بزنم. از "پشت" استفاده نشد، چون عده ای از دوستان بک اند کار و توسعه دهندگان نرم افزار در زمینه های هوش مصنوعی و علوم داده (ترجمه است آخه؟) رو میشناسم که نمیدونم چرا، ولی هیچ دل خوشی از جاوا اسکریپت ندارند و نخواستم با فراهم کردن زمینه ی سوء استفاده از ایهام بالفطره ای که در کلمه "پشت" وجود داره، مایه مسرت این عزیزان رو فراهم کنم.از "دُرون" استفاده شد، به دلیل اینکه من در این سری مقالات تصمیم ندارم فقط به سینتکس زبان جاوا اسکریپت و یا بصورت کلی ابزارهایی که این زبان برای تعامل با لایه های داخلی ساختار (خودش) در اختیار توسعه دهنده قرار میده حرفی بزنم. هر آن چیزی که قرار هست راجع بهشون صحبت بشه (غالباً) مربوط به درک لایه های پایین تری نسبت به اینترفیس این زبان هست. پس نتیجتاً به کلمه ی "دُرون" بسنده میکنیم.حالا اینکه چرا از "بُرون"، "جلو"، "پایین" و امثالهم استفاده نشد هم در این مُقال نمیگنجد.در ضمن خواننده ی ایده آل این سری مقالات، توسعه دهنده های سطح میانی یا میان رده (ایضاً ترجمه است وجداناً؟) (mid-level) هستند. در رابطه با توسعه دهنده های مبتدی هم باید بگم که اگر تازه این زبان رو شروع کردید، قطعاً اطلاعات خیلی خوبی دستگیرتون میشه که میتونید ازشون بعنوان مرجعی برای رفع ابهاماتی که در آینده مسیر یادگیریتون باهاشون روبرو میشید ازش استفاده کنید. و در مورد دوستان سینیور هم که بنده جسارت نمیکنم و حرفی ندارم، فقط اگر لطف کنند و در صورت مشاهده هر گونه خطای مفهومی بهم اطلاع بدن تا برطرفشون کنم، ممنون میشم.موضوعات مورد بحث در این سری مقالات:Execution Contexts (global, function)HoistingScopesLexical EnvironmentClosuresThis keywordCall, Apply, BindEvent LoopHigher Order & Callbacks functionsCallbacksPromisesAsyncAwaitObjectsPrototypePrivate and Public Class FieldsInheritancePrototype ChainCompositionInheritanceModules (CommonJS, AMD, RequireJS, ES6 Modules)Declarative, Imperative paradigmsArray (and array methods)Event: Bubbling/ Delegation/ CapturingPrimitive and Reference VariablesExpression vs Statementجدای از اطلاع رسانی، موضوعات بالا بعنوان مرجعی برای خودم هم نوشته شده، تا اگر تصمیم گرفتم موضوع جدیدی رو در پست های آتی اضافه کنم، "آن" موضوع جدید رو به این لیست اضافه کنم که یادم بمونه. در ضمن اگر شما هم موضوعی به نظرتون میرسه که میتونه این لیست رو کامل تر کنه و به مخاطب نوشته ها کمک کنه تا درک درست تری از جاوا اسکریپت داشته باشه، لطفاً در کامنت ها اطلاع بدید.و اما چند تا نکته مهم:منابع مقالات آتی میتونه از هر جایی باشه، از جمله تجربه من، پست های دیگران، ویدئوهای آموزشی و کتاب هایی که مطالعه کردم، و از اونجایی که من در همه ی موارد فوق هم میتونم دچار اشتباه و یا سوء برداشت های مستقیم و یا غیرمستقیم شده باشم؛ پس قطعاً ممکنه اشتباهاتی در نوشته های من در این مجموعه هم وجود داشته باشه، که خواهش میکنم لطف کنید و در کامنت ها بهشون اشاره کنید.در حال حاضر ترتیب خاصی برای پروسه ی نوشتن وجود نداره، به همین دلیل ممکن هست که ترتیب پست های آینده، بر مبنای فهم موارد زمینه ای تری در رابطه با همان پست ها، بهم بخوره. (که در صورت بروز چنین رویدادی حتماً در همین پست، یا در قسمت کامنت ها اطلاع رسانی میکنم.)در ضمن، پریود زمانی خاصی هم برای انتشار پست ها وجود نداره، ترجیح خودم بر اینه که حداقل هفته ای یک پست منتشر بشه، ولی اگر نشد، دلیلش همین هست که در حال حاضر زمانبندی خاصی رو به این موضوع اختصاص ندادم.و نکته ی آخر هم اینکه، ذکر تمامی نکات فوق دلیل بر "ناز" بودن اینجانب نمیباشد و صرفاً در جهت سلب مسئولیت است : )نازدار محجوبسلامت، شاد و موفق باشید : )