آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

استدلال در مورد یک مقدار

دسته بندی :اخبار سایت 28 مارس 2023 علیرضا بابامرادی 141
استدلال در مورد یک مقدار

استدلال در مورد یک مقدار

وقتی کدی را برای استدلال در مورد یک مقدار می نویسید،

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

var x, y = 2;
console.log( x + y ); // NaN <– because `x` isn’t set yet

عملیات x + y فرض می کند که هر دو x و y از قبل تنظیم شده اند. در شرایطی که به زودی توضیح خواهیم داد، فرض می کنیم که مقادیر x و y قبلا حل شده اند.

بیهوده است که انتظار داشته باشیم که اپراتور + به خودی خود به نحوی جادویی قادر به شناسایی و منتظر ماندن تا زمانی که هر دو x و y حل و فصل شوند (معروف به آماده)، تنها پس از آن عملیات را انجام دهد. اگر عبارات مختلف اکنون تمام شوند و برخی دیگر بعداً تمام شوند، باعث هرج و مرج در برنامه می شود، درست است؟

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

اگر این نوع چیزها از فصل 1 آشنا به نظر می رسد، خوب است!

بیایید به عملیات ریاضی x + y خود برگردیم. تصور کنید راهی برای گفتن “x و y را اضافه کنید” وجود داشت، اما اگر یکی از آنها هنوز آماده نیست، فقط منتظر بمانید تا آماده شوند. در اسرع وقت آنها را اضافه کنید.

ممکن است مغز شما به سمت تماس‌های برگشتی رفته باشد. باشه پس…

function add(getX,getY,cb) {
var x, y;
getX( function(xVal){

x = xVal;
// both are ready?
if (y != undefined) {
cb( x + y ); // send along sum
}
} );
getY( function(yVal){
y = yVal;
// both are ready?
if (x != undefined) {
cb( x + y ); // send along sum
}
} );
}

// `fetchX()` and `fetchY()` are sync or async
// functions
add( fetchX, fetchY, function(sum){
console.log( sum ); // that was easy, huh?
} );

فقط یک لحظه وقت بگذارید

تا زیبایی (یا فقدان آن) آن قطعه در آن غرق شود (با حوصله سوت می زند).

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

در آن قطعه، x و y را به‌عنوان مقادیر آینده در نظر می‌گیریم، و یک عملیات add(..) را بیان می‌کنیم که (از بیرون) اهمیتی ندارد که x یا y یا هر دو فوراً در دسترس هستند یا خیر. به عبارت دیگر، حال و بعد را عادی می کند، به طوری که می توانیم به یک نتیجه قابل پیش بینی از عملیات add(..) تکیه کنیم.

با استفاده از یک  add(..) که از لحاظ زمانی سازگار است – در زمان‌های کنونی و در زمان‌های بعدی یکسان رفتار می‌کند – استدلال کد async بسیار آسان‌تر است.

به بیان ساده تر: برای رسیدگی به هر دو حالت اکنون و بعد، ما هر دو را بعداً انجام می دهیم: همه عملیات ناهمگام می شوند.

البته، این رویکرد مبتنی بر تماس‌های خشن چیزهای زیادی را برای دلخواه باقی می‌گذارد. این فقط اولین قدم کوچک به سوی درک مزایای استدلال در مورد ارزش های آینده بدون نگرانی در مورد جنبه زمانی در دسترس بودن یا نبودن آن است.

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0