متاپروگرمینگ و استفاده از ماکرو

درود خدمت دوستان و اساتید عزیز . چند وقتی بود که دوست داشتم برم سمت ماکرو و یادگیریش ولی همین که خوندم مثلا کلیتش چی هست :slight_smile:
اگر از کد های تکراری خسته شده اید و می خواهید و … که یک دفعه می گه که به هیچ عنوان ماکرو استفاده نکنید و فانکشن بزنید !!!

دقیقا ماکرو برای کجا استفاده می شود ؟
چون در بخشی از کتاب نوشته بود به احتمال زیاد ماکرو در ساخت نرم افزار نرمال به کار نمی رود و بیشتر در کتابخانه های خاص استفاده می شود

و متا پروگرمینگ چیست؟

اصلا نیاز به ماکرو نویسی داریم؟\

تشکر از دوستان

1 Likes

من در مورد Elixir نمی دونم اما تو Lisp و Clojure ماکرو ها کارشون تولید کد هست. می تونی به چشم یه تمپلیت بهشون نگاه کنی. مثلا یه فانکشن که جاهای خالی یه کد رو پر می کنه و کد حاصل رو بر می گردونه. تو Clojure ماکرو ها در زمان کامپایل مقدارشون جایگزین خودشون می شه پس تو رانتایم انگار کدی که ماکرو برگردونده رو نوشتی و تکرار کردی.

کلا از ماکرو ها برای ساخت DSL بیشتر استفاده می شه و یه نمور یا متا پروگرامینگی که تو رویی میشناسی فرق داره

3 Likes

کلا از استفاده مکرو و متا پروگرمینگ تا جایی که میشه پرهیز کن فقط در موارد خیلی خاص همون طور که @lxsameer گفتند در DSL و library ها ازش استفاده کنید
متا پروگرمینگ قدرتمند ولی درک کد و بسیار دشوار میکنه و احتمال خطا رو بالا میبره

2 Likes

تشکر از دو دوست گرامی @samdvr , @lxsameer عزیز . پس در کل متاپروگرمینگ یعنی چیزی فراتر از دستورات خود برنامه نویسی ایجاد کنیم . مثل تمپلیتی که فرمودید درسته؟

تشکر از شما

نه 100 درصد آقا شهریار. ببین مثلا در ویدیو زیر به صورت خلاصه بدون استفاده از ماکرو متاپروگرمینگ رو پیاده کرده برای کلین کد یا خلاصه نویسی و یکمی هم نظر شخصی بخوایم ماکرو ها هم تا حدودی در این زمینه می تونند کمک کنند ولی به چه هزینه ای؟

هزینه هاش می تونه:

توسعه همزمان بین چندین برنامه نویس
ساخت داکیومنت
مدیریت ارور ها
و همینطور انعطاف کد باشه

ولی خوب حالا شما می خواین یک if بسازید و قراره ملیون ها بار تو کدتون تکرار کنید چه چیزی بهتر از ماکرو

آدم لذت می بره کد های کرنل رو می خونه

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

و همینطور پست تکمیلی و دوست داشتنی

5 Likes

از کاربرد های metaprogramming میگه

1 Likes