برو به محتوای اصلی

چرا از جاوااسکریپت میترسید؟

۲

من کجام؟ اینجا کجاست؟

در جواب‌کو می‌تونید در مورد هر موضوعی سوال کنید، به سوالای بقیه جواب بدید و تجربتون رو به اشتراک بگذارید!

فرزاد یوسف زاده
فرزاد یوسف زاده، مهندس نرم افزار

علاوه بر مواردی که اشاره شد، چند نکته تکمیلی هم بگم:

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

۲. در زمان ساخت جاوااسکریپت به سازنده‌اش آقای Brendan Eich فقط حدود ۱۰ روز زمان داده شد تا زبانی رو برای برنامه‌نویسی سمت کاربر بسازه که شبیه به جاوا باشه. چون زبان جاوا در اون سالها بسیار معروف بود و استفاده از اسم اون در نام زبان جدید و ساختاری تا حدودی مشابه بهش میتونست در معروف شدن زبان جدید کمک شایانی کنه. برای همین کلمات خاصی مثل this ,new به این زبان اضافه شد درحالیکه این کلمات برای زبان‌های کاملا شی‌گرا هستند اما جاوااسکریپت یه زبان شی‌گرا محسوب نمیشه (نوع خاصی از شی‌گرایی داره به نام  Prototypal Inheritance).

۳. جاوااسکریپت نوع برنامه‌نویسی خاصی رو دنبال نمی‌کنه و توسعه‌دهنده رو مجبور به برنامه‌نویسی توی اون ساختار نمی‌کنه. من به شخصه این ساختار منعطف رو میپسندم اما با هر انعطاف، مشکلات و گمراهی و ابهام‌های اون هم همراه میشه.
With great power comes great responsibilities.

۴. جاوااسکریپت روی یه Thread کار میکنه. اما برای اینکه یه کد شما این Thread رو بلاک نکنه و ترتیب درست اجرای برنامه‌ها قابل کنترل باشه، درون موتور اصلی زبان ابزاری به نام  Event Loop ساخته شد که درک صحیح از نحوه کار کردنش و همینطور نحوه ارتباطی با  Web APIها خودش یه مبحث بسیار گسترده‌اس که برای تازه‌ واردها بسیار گمرا‌ه‌کننده و تا حد زیادی غیرقابل پیش‌بینیه.

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

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

۸
پیمان گلدسته
پیمان گلدسته، PHP & MERN stack Developer

به شخصه در حال دست و پنجه نرم کردن با جاوااسکریپت هستم.

ولی شاید دلیل اصلی این باشه که خیلی روی اصول و منطق به نظر نمیرسه. این رو از یکسری برنامه‌نویس‌های دیگه‌ای هم که مدل ذهنیشون بیشتر منطق‌گرا هست بسیار شنیدم.

همچنین سینکتسش هنوز به بلوغ  کامل نرسیده و از اونجایی که داره با سرعت زیادی پیشرفت میکنه معمولاْ برنامه‌نویس‌ها ازش جا میمونن.

این سرعت رشد در چندسال اخیر بوده و قبلاْ چون اکثریت با جی کوئری کار میکردن که نهایتاْ هم هر چند ماه می‌خواست ۱ ورژن پیشرفت کنه، این سرعت تغییرات به دور از تجربه قبلی برنامه‌نویس‌ها هست و یکی از دلایل ترس.

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

۷
مهدی راش
مهدی راش، عنواین رو باید دور ریخت!

انسان از دیرباز از چیزهای ناشناخته میترسیده.
جاوا اسکریپت زبان برنامه‌نویسی‌ای بوده که یه جورایی براساس یه سری اتفاق‌ها، پراستفاده‌ترین شده.
حالا دلایل اینکه (شاید) ازش میترسیم یا بدمون میاد:

  • جاوا‌اسکریپت در شی‌گرایی نسبت به زبان‌های دیگه متفاوته.
  • بابت قابلیت non-blocking (که البته این جزو جی‌اس نیست اما مربوط بهش هست) که پیچیده‌ است، از لحاظ ذهنی هرچند پرقدرته.
  • قابلیت‌های این زبان از لحاظ سینتکس هنوز در حال تکمیل و بهتر شدنه.
  • ندونستن درست اصول برنامه‌نویسی (این به جی اس تنها مربوط نمیشه).
  • جاوااسکریپت تنها در مرورگر بکار نمیره (همین یعنی کلی ابزار و روش و داستان درمحیط‌های دیگه مثلا سرور، که واقعا میتونه ترسناک باشه).

نتیجه: با یاد گرفتن این زبان بهش علاقه‌مند میشید و ترس کاملا بی‌معنی میشه، به همین سادگی.

۷
میثم پورگنجی
میثم پورگنجی، برنامه‌نویس در تیم یسنا
  • جاوااسکریپت از پارادایم‌های متعددی استفاده میکنه که کار باهاش رو کمی چالشی میکنه.
  • آشنا نبودن به منطق بکار رفته در طراحی جاوااسکریپت (با چندتا از تصریح‌های ذکر شده در این لینک۴ آشنا بودین؟)
  • شی‌گرایی در جاوااسکریپت شباهت زیادی به زبان‌های معمول نداره، در حالیکه از نمادهای معمول در طراحی زبان استفاده شده (مثلا کاربرد `this`).
  • آشنا نبودن به الگوی Prototype.
۷

سوالات مرتبط

آمار سوال

👁️ ۱۳۳ نمایش
👤 ۲ دنبال‌کننده
۲ بار پرسیده شده
🗓 ۱۰ ماه پیش پرسیده شده
🗓 آخرین بار ۱۰ ماه پیش پرسیده شده
📈 آمار بازدید در این ماه

سوال رو به اشتراک بگذار