آشنایی با جاوا اسکریپت یک مقوله اجباری

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

 آشنایی با جاوا اسکریپت یک مقوله اجباری

من کتاب هایی را درباره زبان برنامه نویسی جاوا اسکریپت نوشته ام که نام این سری " شما جاوا اسکریپت را نمی شناسید" است، این مجموعه امروزه در گیت هاب به صورت رایگان در دسترس شما است، این کتاب همینطور توسط O’Reilly ویرایش و چاپ شده است، 5 عنوان برای این سری وجود دارد که دو تا از آنها امروزه به چاپ رسیده اند و سومی نیز در دست چاپ می باشد، عنوان چهارم کامل شده است و عنوان پنجم نیز در آینده ای نزدیک به چاپ خواهد رسید. در این مطلب به بررسی این کتاب خواهیم پرداخت.


سه عنوان اول این کتاب


Scope & Closures در جاوا اسکریپت :

در درجه اول این عنوان Closures را پوشش می دهد که یکی از مهمترین موضوعات پایه ای می باشد چرا که تقریبا همه برنامه های Js از آن استفاده می کنند اما اکثر توسعه دهندگان جاوا اسکریپت نمی دانند که از آن استفاده می کنند و یا اینکه اصلا نام این عمل چیست و یا حتی دقیقا چگونه کار می کند.


This & Object Prototypes:

این عنوان درباره این موضوع است که کلمه کلیدی و رمزآلود this دقیقا چگونه کار می کند و بعد از آن یک اشتباه اساسی درباره کلاس Js را برای شما تصحیح می کند. در عوض جاوا اسکریپت دارای یک نمونه Prototype می باشد که ما باید به آن توجه کنیم.


Types & Grammar در جاوا اسکریپت :

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

دو عنوان پایانی کتاب

Async & Performance:

این بخش که در حال چاپ است توضیح می دهد که فراخوانی ها برای برنامه نویسی همزمانی کافی نیست و بعد از آن درباره Promises و generator ها دقیقا به همان اندازه الگوهای همزمانی صحبت خواهیم کرد. علاوه بر این بهینه سازی و benchmarking در جاوا اسکریپت را نیز بررسی خواهیم کرد.


Es6 & Beyond:

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


مزایا و معایب یکی از بهترین کتاب های جاوا اسکریپت

برای درک روح این کتاب می توانید آن را با کتاب The Good Parts by Douglas Crockford که یکی از بهترین کتاب ها در زمینه Js می باشد مقایسه کنید. این کتاب برای جامعه برنامه نویسان و توسعه دهندگان هم فواید و هم ضررهایی داشت، این کتاب به تنهایی مسئول ورود بسیاری از افراد به جمع توسعه دهندگان بود، این کتاب به توسعه دهندگان Js یاد داد که تنها بخش کوچکی از این زبان مورد نیاز آنها می باشد و چون شما باید بخش کوچکی از آن را یاد بگیرید به همین علت افراد بسیار زیادی وارد این حیطه شدند. حتی توسعه دهنده هایی با 5 یا 10 سال تجربه نیز چیزهای بسیار کمی از این زبان می دانند.


درک روح کتاب من

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

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

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


سوالی مهم درباره جاوا اسکریپت

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


مشکل افرادی که قصد یادگیری جاوا اسکریپت را دارند

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

من شما را با این موضوع تنها می گذارم: من به شدت اعتقاد دارم که مهمترین چیزهایی که می توانید در دانشگاه بیاموزید این است که چگونه از یادگیری لذت ببرید، البته شما چیزهای مختلفی را در دانشگاه می آموزید ولی تا وقتی که یاد نگیرید از آموختن لذت ببرید نمی توانید موفق شوید. صنعت در سال های آینده تغییر پیدا خواهد کرد و ممکن است دانسته های شما دیگر فایده ای نداشته باشد، اما این لذت بردن از یادگیری است که باعث می شود تا در آینده بتوانید هر مبحثی را بیاموزید و مهارت های جدیدی را به مهارت های خود اضافه کنید.


آیا 5 عنوان نام برده شده را باید به ترتیب خاصی مطالعه کرد؟

عنوان Scope and Closures بیشترین تقاضا را در میان این عناوین دارا می باشد و در زمان مناسبی نیز منتشر می شود، 3 مورد اول از این عناوین جزو هسته های جاوا اسکریپت هستند، 4 یا 5 روز برای مطالعه آنها کافی می باشد، در نسخه های بعدی شما می توانید چیزهای جدیدی که در نسخه ES6 در حال گسترش می باشید را مطالعه کنید.


نرم افزارهای متن باز و رایگان چقدر در کار شما اهمیت دارند؟

در حرفه من همه چیز به صورت متن باز می باشد، من به شدت علاقه مند به قدرت متن باز بودن نرم افزارها و موقعیت آنها در آینده صنعت می باشم. اگر شما تاریخ تکنولوژی را مطالعه کنید تکنولوژی ها شروع به انحصاری شدن کردند ولی بعد از گذشت مدتی دوباره این نرم افزارها رایگان شدند. در نهایت این تکنولوژی های رایگان هستند که پیروز خواهند شد و به نظر من حالت پیش فرض تمامی برنامه ها باید متن باز و رایگان باشد. بسیاری از مردم اعتقاد دارند که من نمی توانم زمانم را صرف کنم و کدی بنویسم که سایر افراد به راحتی و بدون پرداخت هزینه از آن استفاده کنند و وقتی من چنین کدهایی می نویسم مردم می گویند که تو تنها اعتماد به نفس بیشتری داری.

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


از کجا باید شروع کنیم؟

دیدگاه من( که البته نظرات مختلفی در این زمینه وجود دارد) این است که به دنبال پروژه های دیگران باشیم، مشارکت های FOSS بسیار زیادی وجود دارد که درباره کد نیستند، داکیومنتیشن ها معمولا در پایان پروژه قرار می گیرند و خیلی مورد بازدید قرار نمی گیرند ولی این نکته بسیار مهم است که آنها به روزرسانی شوند. اگر شما این توانایی را دارید که کدهای دیگران را بخوانید و جزئیات و یا تست هایی را به آنها اضافه کنید این کار یک نقش بسیار مهم است که شما می توانید آن را ایفا کنید. در واقع یک نقطه عالی برای شروع این است که شما می توانید کدهای دیگران را مطالعه کنید و ایرادات آنها را پیدا کنید. حتی ارائه گزارشات مربوط به ایرادات و ارورها نیز می تواند برای شما بسیار مفید باشد، شاید پیدا کردن یک خط ایراد از یک کد بسیار با ارزش تر از نوشتن یک پروژه کامل باشد.


کدام سایت؟

گیت هاب یک سایت استاندارد برای انجام این کار می باشد، هر گروهی می تواند برای انجام این کار خوب باشد، البته توجه کنید که باید پروژه ای را برای انجام این کار انتخاب کنید که به آن علاقه داشته باشید، اگر علاقه مند به بصری سازی داده ها هستید به شما توصیه می کنیم از D3 دیدن کنید. شما با انجام دادن این کار می توانید به سرعت اعتماد به نفس خود را افزایش دهید و به موفقیت های بسیار زیادی در زمینه Js دست پیدا کنید.


آیا سایر زبان ها به جز Js مانند Dart نیز در آینده موفق خواهند بود؟

این یک سوال بسیار بزرگ و اساسی می باشد، در واقع Dart نمی خواهند جایگزین Js شود، نه به این دلیل که به صورت بدی طراحی و ساخته شده باشد بلکه به دلیل تاثیری است که گوگل بر روی آن می گذارد. آنها در وب سایت خود بیان کرده اند که به جای اینکه به دنبال آزمایش زبانی باشند که آینده جاوا اسکریپت را تحت تاثیر خود قرار دهد به دنبال جایگزینی هستند که بتواند با این زبان برنامه نویسی رقابت کند. در واقع زبان برنامه نویسی Dart به دنبال این است که بتواند استفاده از جاوا اسکریپت را کاهش دهد. من به جرات به شما می گویم که مرورگر موزیلا به هیچ وجه دارت را اجرا نخواهد کرد، بنابراین من نمی توانم تصور کنم که زبان برنامه نویسی dart بتواند جایگزین Js شود.

امروزه صدها زبان وجود دارد که شما می توانید آنها را در Js اجرا کنید، اگر شما می خواهید کد خود را در وب اجرا کنید می توانید آن را به Js انتقال دهید و به این طریق کد خود را بر روی وب اجرا کنید. من این زبان های برنامه نویسی را دوست ندارم اما همه آنها فوق العاده هستند، سورس کد آنها فقط برای یک کامپیوتر نیست، در واقع کد اصلی برای توسعه دهنده است و شما باید زبان مورد نظر را با فکر کردن پیدا کنید. ما به آزمایش های بیشتر و همینطور به زبان های برنامه نویسی Compile-to-JS بیشتری مانند CoffeeScript که تاثیر بسیار زیادی بر روی Js می گذارد نیاز داریم که تمامی این موارد در Es6 در جاوا اسکریپت اضافه شده اند. به نظر من کافکا اسکریپت آینده درخشانی نخواهد داشت. نکته بسیار مهم این است که ما بتوانید Js را رو به جلو حرکت دهیم.


سخن پایانی

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