چرا جاوا اسکریپت ؟

گردآوری و تالیف : ارسطو عباسی
تاریخ انتشار : 02 تیر 1396
دسته بندی ها : جاوا اسکریپت

؛ هر اپلیکیشنی که توانایی نوشتن با جاوا اسکریپت را داشته باشد، در نهایت با جاوا اسکریپت نوشته می شود. Jeff Atwood ؛

به صورت واضح

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

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

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

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

خب بزارید از بالا به پایین شروع کنم.

جاوا اسکریپت چقدر آزاد و قابل دسترس است؟

جاوا اسکریپت یکی از زبان های برنامه نویسی متن باز است. جاوا اسکریپت دارای استاندارد بالایی است که توسط یکسری افراد تولیدکننده و یا توسعه دهنده دنبال می شود. «ECMA-262 یک استاندارد ISO است» جدای از این موضوع پیشرفت و تکامل این زبان در دستان گروه TC39 (https://www.ecma-international.org/memento/TC39.htm) و گیتهاب (https://github.com/tc39) است. در اینجا شورای یا بهتر بگویم انجمنی وجود دارد «به صورت عادی در شرایط رقابتی» که کمپانی های مختلفی از جمله سازندگان اکثر مرورگرها در آن وجود دارند و هر کدام تلاش می کنند که جاوا اسکریپت را به یکی از بهترین زبان های ممکن تبدیل سازند. همین شرایط باعث می شود که جاوا اسکریپت آزاد باشد و هیچوقت توسط یک شرکت خاص به انحصار در نیاید.  

کدنویسی در جاوا اسکریپت شبیه به چیست؟

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

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

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

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

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

جاوا اسکریپت واقعا چقدر مفید است؟

جواب دادن به این سوال واقعا آسان است.

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

ایده ها و استانداردهای تازه ای پدید آمدند. انگولار (https://angularjs.org/) صحنه را در هم شکست و ما را قادر ساخت تا بجای ساختن وبسایت با یک ذره از ادویه جاوا اسکریپت، شروع به ساختن وب اپلیکیشن ها کنیم.

همچنین چیزهای مهم دیگری مانند NodeJS که براساس موتور وی ۸ گوگل ساخته شده بود و یا مدیریت پاکت NPM تمام این ها عواملی بودند که خلقیات توسعه دهنده بودن ساده را تغییر داد و از این به بعد توسعه دهندگان قادر بودند تا هر کاری را انجام دهند.

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

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

در مورد فریمورک های توسعه بک-اند چه می گویید؟ بله آنها نیز وجود دارندNode و فریمورک Express Js این توانایی را می دهد که بتوانید برنامه های بک اند بنویسید.

اپلیکیشن های تحت دسکتاپ؟ مشکلی نیست کافیه که Electron رو دانلود کنی و از اون استفاده کنی.

اما من می خوام که برای اسمارت فون ها برنامه بنویسم! شما این رو می گید؟ خب کاری نداره، سری به Nativescript و یا فریمورک React Native بزن، شروع به کدنویسی بکن و در نهایت یک اپلیکیشن محلی بساز.

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

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

این سوال موضوع مهمیه و بستگی داره که چه کسی داره این سوال رو می پرسه!منظره ابزارهای جاوا اسکریپت یا خیلی فوق العاده هستند و یا اینکه خیلی وحشتناک. به شخصه من بعد از نوشتن این موضوع در مورد این قضیه پی بردم. بخاطر اینکه مهم نیست که مهارت جاوا اسکریپتی شما چقدر است، شما مجبور خواهید بود که برای انجام کارها دست به یکسری از ابزارهای جاوا اسکریپت بزنید. برای افراد تازه کار شاید خیلی ساده نباشد، چرا که آنها با یکسری از نام های مختلف مورد هجوم قرار می گیرند. gulp, grunt, bower, browserify, webpack, rollup, coffeescript, typescript, VS Code, github Atom, webstorm و این لیست کماکان می تواند بیشتر و بیشتر شود. 

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

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

جامعه جاوا اسکریپت شبیه به چیست؟

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

این حرکت حتی ممکن است در پی گذر زمان بهتر و بهتر نیز بشود. انجمن و زبان در حال پیشرفت و بالغ شدن هستند، و حرفه ای های جاوا اسکریپت هر روز بیشتر و بیشتر در حال گسترش باکیفیت دانش و … در جاوا اسکریپت هستند، و در حال دوری گرفتن از آموزش های منقضی شده و بی کیفیت هستند.

آیا جاوا اسکریپت آینده ای دارد؟

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

دنیای وب و پلتفرم های مختلف به سرعت در حال رشد کردن و تغییر اند در این دنیا جاوا اسکریپت به قسمت بسیار مهمی از آن بدل شده است! جاوا اسکریپت یک اصل مهم و حیاتی چه برای شرکت های مبتنی بر تکنولوژی و چه برای شرکت های غیر فنی (non-tech) به حساب می آید.

نتیجه گیری

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

منبع

دوره های آموزشی راکت در حیطه جاوا اسکریپت

آموزش جاوا اسکریپت

آموزش جاوااسکریپت ES۶

آموزش TypeScript

آموزش ۱ Vue.js

آموزش ReactJs

آموزش کامل ۴ Angular

مقالات پیشنهادی

چرا Async؟ جاوااسکریپت و دنیای واقعی

در واقع، ممکن است که قبلا عبارت «callback hell» را شنیده باشید. این عبارت بی دلیل ساخته نشده بود: کدی که بر پایه callback باشد، به ناچار در جایی ختم م...

چرا همگان از فرسودگی جاوااسکریپت صحبت می‌کنند ؟

برای جواب این سوال بگذارید در ابتدا بگوییم که منظورمان از فرسودگی جاوااسکریپت چیست. فرسودگی جاوااسکریپت بهترین تعریف برای وضعیت موجود جاوااسکریپت است،...

چگونه با استفاده از جاوااسکریپت پیش‌نمایش‌های چندگانه ایجاد کنیم؟

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

چگونه فایل‌های جاوااسکریپتی را ساختاربندی کنیم؟

افرادی وجود دارند که از من می‌پرسند که چگونه فایل‌های جاوااسکریپتی‌ام را می‌نویسم - خب این موضوع یک دروغ بود، کسی از من این سوال را نپرسیده است اما اگ...