Yasi
Yasi
خواندن ۲ دقیقه·۱ سال پیش

زبان برنامه نویسی یا کد declarative یا imperative؟؟

همون طور که میدونین ما زبانهای برنامه نویسی زیادی داریم که هرکدومشون سینتکس های مربوط به خود شون و دارن، اما بحث ما بیشتر در مورد زبان های برنامه نویسی هست که در طراحی و برنامه نویسی سایت از اونها استفاده می شه.

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

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

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

در مورد کتابخانه ها هم در ادامه راجع به react js و این که جزو کدوم دسته هست توضیح خواهم داد.

شاید مثال زیر بتونه بهتر این تفاوت رو نمایش بده که با زبان javascript نوشته شده.

اگر با حلقه for اشنایی داشته باشید متوجه میشین که کد زیر داره هر المنت ارایه ای(i) که به عنوان ورودی میدین رو در 2 ضرب میکنه و بعدش ما ازش میخوایم نتیجه رو در console نمایش بده.

//imperative code const doubleMapImperative=numbers=>{ const doubled=[ ]; for(let i =0 ; i< numbers .length ; i++){ doubled.push(numbers[i]*2) } return doubled; }; console.log( doubleMapImperative(numbers:[2 , 3 , 4])) //[ 4 , 6 , 8 ]

اما کد زیر رو اگر با map اشنایی نداشته باشید یا مثلا قبلا با زبان های imperative مثل ++c یا هر زبان دیگه ای کار نکرده باشید متوجه چگونگی انجام کد نمیشین ، این چگونگی شمارش در ارایه رو در خود کد مشاهده نمی کنید که این کارو map انجام میده در واقع در اونها از کلمات رزروشده استفاده میشه.

//declarative const doubleMapDeclarative=numbers.map(n=>n*2); console.log(doubleMapDeclarative(numbers:[2 , 3 , 4])) //[ 4 , 6 , 8 ]


اما کتابخونه react js از کدوم نوعه؟بیشتر بخش ها نوع دوم یعنی کد ها به شکل declarative هستن و در بیشتر بخش ها ما از کلمات رزرو شده برای کد زنی استفاده میکنیم.

امیدوارم مطلب مفید بوده باشه:))



برنامه نویسیreactjavascriptwebdeveloperwebdev
علاقه مند به برنامه نویسی،کتاب،سینما
شاید از این پست‌ها خوشتان بیاید