Payamvdn/NorthPersian_fa_wiki huggingface dataset:
ند" (برخلاف زبان های پرانتزی فرفری)، اما تورفتگی اینطور نیست. در BASIC و Fortran ، بلوک ها با نام بلوک شروع می شوند (مانند codice_13 ) و با نام بلوک با codice_14 (مثلاً codice_15 ) پایان می یابند. در فرترن ، هر بلوک همچنین می تواند نام بلاک منحصربه فرد خود را داشته باشد که سطح دیگری از صراحت را به کد طولانی اضافه می کند. ALGOL 68 و پوسته Bourne (sh و bash ) مشابه هستند، اما انتهای بلوک معمولاً با نام بلوکی که به عقب نوشته می شود داده می شود (مثلاً codice_16 یک دستور switch را شروع می کند و تا زمانی که codice_17 منطبق می شود، به طور مشابه مشروط می شود codice_1 ... codice_19 ...[ codice_20 ...[ codice_21 ...]] codice_22 یا حلقه های "for" codice_23 ... codice_24 ... codice_25 در ALGOL68 یا codice_23 ... codice_24 ... در bash codice_28 ). یک نوع جالب از این در Modula-2 رخ می دهد، یک زبان پاسکال مانند که تفاوت بین بلوک های یک و چند خطی را حذف می کند. این اجازه می دهد تا بلوک بازکننده ( codice_5 یا codice_30 ) برای همه به جز بلوک سطح عملکرد، صرفاً به یک نشانه پایان دهنده بلوک ( codice_6 یا codice_14 ) رد شود. همچنی
ن آویزان های دیگر را رفع می کند. سفارشی برای این است که نشانه codice_12 در همان سطح تورفتگی بقیه بلوک قرار می گیرد و ساختار بلوکی بسیار خوانا می دهد. یکی از مزیت های رویکرد فرترن این است که خوانایی کدهای طولانی، تودرتو یا پیچیده را بهبود می بخشد. گروهی از خروجی ها یا براکت های بسته به تنهایی هیچ نشانه زمینه ای در مورد بسته شدن بلوک ها ارائه نمی دهد، که نیاز به عقب نشینی و بررسی دقیق تر در حین اشکال زدایی دارد. علاوه بر این، زبان هایی که پسوندی برای کلیدواژه های END مانند اجازه می دهند، این نشانه ها را بیشتر بهبود می بخشند، مانند codice_34 در مقابل codice_35 ، و نشانگر حلقه پایانی که متغیر شاخص codice_36 در مقابل codice_37 را مشخص می کند، و حلقه هایی با نام منحصر به فرد codice_38 در مقابل codice_39 . با این حال، ویرایشگرهای کد منبع مدرن اغلب نشانگرهای بصری، مانند برجسته کردن نحو ، و ویژگی هایی مانند تا کردن کد را برای کمک به این اشکالات ارائه می دهند. بهره وری. در زبان اسکالا ، نسخه های اولیه فقط بریس های مجعد را مجاز می دانستند. Scala 3 گزینه ای برای استفاده از فرورفتگی در ساختار بلوک ها اضافه کرد. طراح مارتی
ن اودرسکی گفت که این مهم ترین راهی بود که اسکالا 3 بهره وری خود را بهبود بخشید، این که برنامه ها را بیش از 10 درصد کوتاه تر می کند و برنامه نویسان را در جریان نگه می دارد و استفاده از آن را توصیه می کند. زبان های برنامه نویسی قابل توجه. زبان های برنامه نویسی قابل توجه با قانون آف ساید: سایر فرمت های فایل. زبان غیر برنامه نویسی قابل توجه، فرمت های فایل متنی با تورفتگی قابل توجه:
ویکتوریا کنت (؛ – ) سیاستمدار جمهوری هواه، وکیل و حقوق دان اهل اسپانیا بود. او نویسنده کتابی به نام «"چهار سال در پاریس (۱۹۴۰–۱۹۴۴)"» بود که در سال ۱۹۷۸ منتشر شد. زندگی نامه. ویکتوریا کنت سیانو در مالاگای، اسپانیا به دنیا آمد و به حزب جمهوری خواه سوسیالیست تندرو وابسته بود. او در سال ۱۹۳۰ به شهرت رسید؛ زمانی که در یک دادگاه نظامی از آلوارو د آلبورنوس دفاع کرد که بعدها وزیر دادگستری اسپانیا و سپس رئیس جمهور آینده دولت جمهوری خواه در تبعید (از ۱۹۴۷ تا ۱۹۴۹ و ۱۹۴۹ تا ۱۹۵۱) شد. ویکتوریا کنت عضو نخستین پارلمان جمهوری دوم اسپانیا در سال ۱۹۳۱ شد. همان سال، رئیس جمهور جمهوری، نیکتو آلکالا زامورا او را به عنوان مدیرکل زندان ها منصوب کرد، سمتی که تا سال ۱۹۳۴ بر عهده داشت و فعالانه به ادامه اصلاحات در خدمات زندان ها که توسط کنسپسیون آرنال آغاز شده بود، پرداخت. کنت مخالف اعطای فوری حق رأی به زنان بود و استدلال می کرد که چون زنان اسپانیایی در آن زمان آموزش اجتماعی و سیاسی کافی برای رای دادن به طور مسئولانه نداشتند، تحت تأثیر کشیش های کاتولیک قرار می گیرند و این به ضرر احزاب چپ خواهد بود. او با یکی دیگر از فمینیست ها در پا
رلمان، کلارا کامپوامور بر سر این موضوع وارد جنجال بیشتری شد. این باعث شد که او تا حدی محبوبیت خود را از دست بدهد و زمانی که زنان حق رای پیدا کردند، همان طور که پیش بینی کرده بود، کرسی خود را در سال ۱۹۳۳ به ضرر اکثریت محافظه کار از دست داد. پس از جنگ داخلی اسپانیا کنت به مکزیک تبعید شد، اما دیری نپائید که به ایالات متحده آمریکا نقل مکان کرد. در نیویورک، او مجله «"ایبریکا"» را از ۱۹۵۴ تا ۱۹۷۴ منتشر کرد که اخبار مربوط به اسپانیایی های تبعیدی در ایالات متحده آمریکا را پوشش می داد. او در سال ۱۹۸۷ در نیویورک درگذشت و در کنار شریک زندگی اش لوئیس کرین در قبرستان اُمپاواک، ریدینگ واقع در شهرستان فیرفیلد، کنتیکت دفن شد. نام چندین مدرسه در مالاگا، فوئنلابرادا، ماربیا، و تورخون د آردوس (مدرسه آموزش متوسطه ویکتوریا کنت) و همچنین ایستگاه راه آهنی در زادگاهش مالاگا به نام او نامگذاری شده اند. تاریخ نگاران به طور کافی به موضوع همجنس گرایی او نپرداخته اند. زندگی سیاسی. بلافاصله پس از رسیدن به مادرید، ویکتوریا کنت به «"انجمن ملی زنان اسپانیایی و جوانان دانشگاهی زن"» پیوست، که یک سازمان حقوق زنان بود و توسط ماریا اسپینوسا د لوس
مونتروس اداره می شد. او نماینده این نهاد در کنفرانسی در پراگ در سال ۱۹۲۱ بود. پس از پیوستن به حزب جمهوری خواه سوسیالیست رادیکال، او به عنوان عضو پارلمان از ترکیب جمهوری خواه-سوسیالیست در دادگاه جمهوری در سال ۱۹۳۱ انتخاب شد. در انتخابات ۱۶ فوریه ۱۹۳۶، کنت به عنوان نماینده پارلمان از منطقه خائن برای «چپ جمهوری خواه» که بخشی از جبهه مردمی بود، انتخاب شد. او همچنین از سال ۱۹۲۶ نائب رئیس باشگاه لیسیوم بود. مخالفت با حق رای زنان. یکی از برجسته ترین و بحث برانگیزترین لحظات در زندگی شخصی و سیاسی ویکتوریا کنت، مخالفت او با حق رای زنان در پارلمان اسپانیا در سال ۱۹۳۱ بود، زمانی که او در مقابل فمینیست دیگری، کلارا کامپوامور قرار گرفت و در یک نبرد دیالکتیکی و مهم دربارهٔ موضوعی که تأثیر زیادی بر حقوق زنان داشت، به بحث پرداخت. او اظهار کرد که زنان اسپانیایی از نظر اجتماعی و سیاسی آماده رای دادن نیستند. به گفته او، زنان اسپانیایی به شدت تحت تأثیر کلیسا قرار دارند و رای آنها محافظه کارانه خواهد بود و به جمهوری آسیب خواهد زد. در مقابل، کامپوامور دفاع کرد که زنان حق رای دارند، زیرا او بر برابری تمام انسان ها تأکید داشت. پس از
این مناظره، کنت محبوبیت خود را از دست داد و بنابراین در انتخابات ۱۹۳۳ در پارلمان شرکت نکرد. کامپوامور در نهایت در مناظره علیه کنت پیروز شد و این به زنان اجازه داد که از حق رای عمومی برخوردار شوند. در انتخابات ۱۹۳۳، جناح راست پیروز شد زیرا متحد بودند. جنگ داخلی اسپانیا. به دلیل بروز جنگ داخلی اسپانیا، ویکتوریا کنت مجبور شد مانند بسیاری دیگر از جمهوری خواهان به تبعید برود. در هنگام ترک وطن، او به کودکانی که پدرانشان سربازانی بودند که قرار بود اخراج شوند، کمک کرد. او به پاریس پناه برد و به عنوان دبیر اول سفارت اسپانیا در پایتخت منصوب شد تا بتواند به مراقبت از کودکان پناهنده ادامه دهد. همچنین او مسئول ایجاد پناهگاه ها و مهدکودک ها برای همین هدف بود.
ایوان اس. تورنتون (؛ زادهٔ ) یک متخصص زنان و زایمان، موسیقیدان و نویسنده آمریکایی است که بیشتر به خاطر خاطرات خود با عنوان «دختران خندق» شناخته می شود. پیشینه، تحصیلات و حرفه. تورنتون در شهر نیویورک به دنیا آمد و در لانگ برنچ، نیوجرسی، به عنوان سومین فرزند از پنج دختر خانواده دانلد (۱۹۲۵–۱۹۸۳) و ایتاسکر تورنتون (۱۹۱۵–۱۹۷۷) بزرگ شد و از دبیرستان لانگ برنچ فارغ التحصیل شد. پدرش، یک حفار فاضلاب و کهنه سرباز جنگ جهانی دوم، آرزو داشت که هر شش دختر آفریقایی آمریکاییاش پزشک شوند. مبارزه و داستان این مسیر، علی رغم موانع اقتصادی، نژادی و جنسیتی، بعدها موضوع اصلی کتاب «دختران خندق» شد. او تجربیات دوران کودکی اش را به عنوان تأثیر عمیقی بر تصمیم خود برای رفتن به دانشکده پزشکی ذکر کرده است. تورنتون از دانشگاه مانموث فارغ التحصیل شد و به دانشکده پزشکی دانشگاه کلمبیا راه یافت. در طول آن تابستان، او نخستین شرکت کننده رنگین پوست در نسخه اصلی برنامه «جئوپاردی!» با اجرای آرت فلمینگ بود. در سال ۱۹۷۹، تورنتون و همسرش داوطلب خدمت در نیروی دریایی ایالات متحده شدند. او درجه فرمانده را در شاخه پزشکی دریافت کرد و به مرکز ملی پزشکی نیر
وی دریایی در بتزدا، مریلند، اعزام شد. در سال ۱۹۸۱، تورنتون نخستین زن سیاه پوست در ایالات متحده شد که در رشته طب مادر و جنین دارای بورد تخصصی شد. او در طول دو دهه بعد، در بیمارستان نیویورک - مرکز پزشکی کرنل، بیمارستان موریس تاون در نیوجرسی، و مرکز بیمارستان سنت لوک - روزولت در نیویورک فعالیت داشت. تخصص او در نمونه برداری از پرزهای جفتی توجه اپرا وینفری را جلب کرد و او نخستین بار در سال ۱۹۹۳ به برنامه اش دعوت شد. در سال ۱۹۹۵، تورنتون کتاب «دختران خندق» را دربارهٔ آرزوی والدینش برای تبدیل فرزندانشان به پزشک نوشت؛ موفقیت این کتاب مجدداً توجه شوی اپرا وینفری را جلب کرد و موجب شد بار دیگر در برنامه اش حضور یابد. «دختران خندق» تحسین منتقدان را برانگیخت، به ۱۹ زبان ترجمه شد و در سال ۱۹۹۷ به یک فیلم تلویزیونی توسط شبکه فمیلی چنل تبدیل شد؛ در این فیلم، کارل لامبلی نقش پدرش (دانلد تورنتون) را بازی کرد و کیمبرلی الیز برای این نقش جایزه بهترین بازیگر نقش مکمل زن در مراسم جایزه کیبل ای سی ئی سال ۱۹۹۷ را از آن خود کرد. در سال ۱۹۹۶، تورنتون مدرک کارشناسی ارشد خود را در رشته سلامت عمومی با گرایش سیاست و مدیریت سلامت از دانشکد
ه بهداشت عمومی دانشگاه کلمبیا دریافت کرد و در سال ۱۹۹۷ کتاب دوم خود با عنوان «زنان برای زنان» را منتشر کرد. او در نهایت به مرتبه استاد تمام رسید و در سال ۲۰۰۳ به عنوان استاد بالینی زنان و زایمان در کالج پزشکی ویل کرنل منصوب شد. او هم اکنون دارای عنوان استاد بازنشسته زنان و زایمان در کالج پزشکی نیویورک است. زندگی شخصی. تورنتون در سال ۱۹۷۴ با همکلاسی خود در دانشکده پزشکی، شیرود جی. مک کللند ازدواج کرد؛ او به مدت ۲۵ سال مدیر بخش جراحی ارتوپدی در بیمارستان هارلم در نیویورک بود و در سال ۲۰۲۳ درگذشت. آنها دو فرزند دارند که هر دو پزشک هستند: شیرود مک کللند سوم و کیمبرلی آی. مک کللند. تورنتون ساکن تینی ک، نیوجرسی بوده است.
در محاسبات، زبان های اولیه ساده ترین عناصر موجود در یک زبان برنامه نویسی هستند. یک اولیه کوچکترین "واحد پردازش" موجود برای برنامه نویس یک ماشین معین است، یا می تواند عنصر اتمی یک عبارت در یک زبان باشد. بدوی واحدهایی هستند که دارای یک معنی، یعنی یک ارزش معنایی در زبان هستند. بنابراین آنها با نشانه های یک تجزیه کننده که حداقل عناصر نحو هستند متفاوت هستند. انواع بدوی. اولیه های سطح ماشین. یک دستورالعمل ماشین ، معمولاً توسط یک برنامه اسمبلر تولید می شود، اغلب کوچکترین واحد پردازش در نظر گرفته می شود، اگرچه همیشه اینطور نیست. معمولاً عملیاتی را انجام می دهد که تصور می شود یک عملیات است، مانند کپی کردن یک بایت یا رشته ای از بایت ها از یک مکان حافظه رایانه به مکان دیگر یا افزودن یک ثبت پردازنده به دیگری. میکروکدهای اولیه. با این حال، بسیاری از رایانه های امروزی در واقع واحد پردازشی پایین تری به نام میکروکد را در خود جای می دهند که "کد ماشین را" تفسیر می کند و در آن زمان است که دستورالعمل های میکروکد، ابتدایی های "اصلی" خواهند بود. این دستورالعمل ها معمولاً فقط توسط برنامه نویس های فروشنده سخت افزار برای اصلاح در دست
رس هستند. زبان های ابتدایی سطح بالا. یک برنامه زبان برنامه نویسی سطح بالا (HLL) از عبارات گسسته و انواع داده های اولیه تشکیل شده است که ممکن است برای انجام یک عملیات واحد یا نمایش یک آیتم داده واحد، اما در سطح معنایی بالاتر از آنچه توسط ماشین ارائه می شود، "درک شوند" . کپی کردن یک آیتم داده از یک مکان به مکان دیگر ممکن است در واقع شامل بسیاری از دستورالعمل های ماشین باشد که برای مثال، برخی از دستورات HLL، به ویژه آنهایی که شامل حلقه ها می شوند، می توانند هزاران یا حتی میلیون ها اولیه را در یک زبان برنامه نویسی سطح پایین (LLL) ایجاد کنند، که شامل طول مسیر دستورالعمل واقعی است که پردازنده باید در پایین ترین سطح اجرا کند. از این تصور به عنوان "مجازات انتزاعی" یاد شده است. تفسیر زبان های ابتدایی. یک دستور زبان تفسیر شده شباهت هایی به HLL اولیه دارد، اما با یک "لایه" اضافه شده بیشتر. قبل از اینکه دستور به روشی بسیار شبیه به دستور HLL اجرا شود: ابتدا باید توسط یک مفسر پردازش شود، فرآیندی که ممکن است شامل بسیاری از موارد اولیه در زبان ماشین مقصد باشد. زبان های اولیه نسل چهارم و پنجم. زبان های برنامه نویسی نسل چهارم
(4GL) و زبان های برنامه نویسی نسل پنجم (5GL) یک تناظر ساده یک به چند از زبان های ابتدایی سطح بالا به پایین ندارند. برخی از عناصر اولیه زبان تفسیر شده در مشخصات 4GL و 5GL وجود دارد، اما رویکرد به مسئله اصلی کمتر یک ساختار زبان رویه ای است و بیشتر به سمت حل مسئله و مهندسی سیستم ها گرایش دارد.
جولی میشل پالایس (متولد ۲ سپتامبر ۱۹۵۶ در ماساچوست) یک یخ شناس قطبی آمریکایی است که کمک های قابل توجهی به تحقیقات تغییرات اقلیمی از طریق مطالعه رسوبات آتشفشانی در هسته های یخی گرینلند و قطب جنوب داشته است. او از سال ۱۹۹۰ به عنوان مدیر برنامه یخ شناسی قطب جنوب در بنیاد ملی علوم (NSF) نقش مهمی ایفا کرد و سفرهای متعددی به مناطق شمال و جنوب قطب انجام داد. به افتخار او، یخچال پالایس و پالایس بلاف در قطب جنوب نام گذاری شده اند و جوایز متعددی برای کارنامه برجسته اش دریافت کرده است. اوایل زندگی و تحصیلات. پالایس در دبیرستان نیوتون نورث در ماساچوست تحصیل کرد و در سال ۱۹۷۴ فارغ التحصیل شد. در سال ۱۹۷۸، مدرک لیسانس هنر (BA) خود را با رتبه با افتخار در زمین شناسی/علوم زمین از دانشگاه نیوهمپشایر دریافت کرد. او بین سال های ۱۹۷۸ تا ۱۹۸۵ در دانشگاه ایالتی اوهایو تحصیل کرد و موفق به اخذ مدرک کارشناسی ارشد علوم (MS) و دکترای فلسفه (PhD) در علوم زمین شناسی و ژئوساینس شد. تحقیقات تحصیلات تکمیلی او بر مطالعه رسوبات آتشفشانی در برف و هسته های یخی قطبی گرینلند و نمونه های گرفته شده از هسته یخی بیرد و هسته های کم عمق نزدیک کوه اربوس
در جزیره راس قطب جنوب متمرکز بود. حرفه و تأثیر. پالایس بیش از ۲۶ سال به عنوان مدیر برنامه یخ شناسی قطب جنوب در بخش برنامه های قطبی بنیاد ملی علوم (NSF) فعالیت کرد. برای درک تاریخ و پویایی ورقه های یخی قطب جنوب و گرینلند، برنامه های تحقیقاتی NSF بر جنبه های مختلف یخ شناسی، از جمله استفاده از هسته های یخی به عنوان شاخص های اقلیم شناسی دیرینه جهانی، تمرکز دارد. پالایس بیش از ۲۷ سفر به قطب جنوب و ۳ سفر به گرینلند انجام داده است. پالایس عضو انجمن های حرفه ای متعددی از جمله اتحادیه ژئوفیزیک آمریکا، انجمن بین المللی یخ شناسی، انجمن قطبی آمریکا، باشگاه کاوشگران و مؤسسه حیوانات و جامعه است. حرفهٔ دوم. پس از بازنشستگی از بنیاد ملی علوم در سال ۲۰۱۶، او کار جدیدی را در حوزه رفاه حیوانات آغاز کرد. وی در سال ۲۰۱۷ یک گواهینامه تحصیلات تکمیلی از دانشگاه ادینبورگ (دانشکده سلطنتی دامپزشکی دیک) در حوزه رفاه بین المللی حیوانات، اخلاق و قانون (IAWEL) دریافت کرد و پس از آن مدرک کارشناسی ارشد در زمینه انسان شناسی حیوانات (مطالعات انسان و حیوان) را از کالج کانیزیوس در بوفالو، نیویورک، در بهار سال ۲۰۱۹ به پایان رساند. در طول تحصیلات
تکمیلی خود در رشته انسان شناسی حیوانات، وی در مؤسسه رفاه حیوانات (AWI) در واشینگتن دی سی کارآموزی کرد و بررسی داده های گردآوری شده توسط اف بی آی از سال ۲۰۱۶ دربارهٔ خشونت علیه حیوانات در ایالات متحده را آغاز کرد. پس از فارغ التحصیلی، او کار خود را با بررسی داده های مربوط به خشونت علیه حیوانات در سیستم گزارش دهی مبتنی بر رویداد ملی (NIBRS) اف بی آی ادامه داد. تحلیل های وی شامل بررسی تفاوت های میان ایالت ها در تعداد گزارش های ثبت شده، مشخصات جمعیت شناختی متخلفان و دیگر جرایم مرتبط با خشونت علیه حیوانات بود. علاوه بر این، او محل وقوع، زمان و تغییرات ماهانه این موارد را نیز بررسی کرد. او یافته های خود را در چهار مقاله مجله در سال ۲۰۲۰ منتشر کرد، از جمله مقاله ای در مدیریت عمومی (انجمن بین المللی مدیریت شهر/شهرستان)، مقاله ای در مراقبت و کنترل حیوانات امروز (انجمن ملی مراقبت و کنترل حیوانات)، مقاله ای در مجله کلانتر و معاون (انجمن ملی کلانترها)، و مقاله ای دیگر در رئیس پلیس (انجمن بین المللی روسای پلیس). پالیس همچنان به پژوهش های علمی خود ادامه می دهد و مقاله ای را در مجله علوم اجتماعی دربارهٔ روندهای خشونت علیه
حیوانات از سوی سازمان های اجرای قانون و ارتباط آن با سایر جرایم احتمالی منتشر کرده است. در ماه اوت ۲۰۲۱، پالیس (با نام قلمی خود، جولو) کتاب کودک دوزبانه (انگلیسی-نپالی) با عنوان «ساتهی: سگ خیابانی کاتماندو، نپال» را منتشر کرد (انتشارات واجرا، کاتماندو، نپال).
در زبان های برنامه نویسی ، چندشکلی ad hoc نوعی چندشکلی است که در آن توابع چند شکلی را می توان به آرگومان هایی با انواع مختلف اعمال کرد، زیرا یک تابع چندشکلی می تواند بسته به نوع آرگومان(هایی) که برای آن اعمال می شود، تعدادی پیاده سازی متمایز و بالقوه ناهمگن را نشان دهد. هنگامی که به مفاهیم شی گرا یا رویه ای اعمال می شود، به عنوان اضافه بار تابع یا بارگذاری بیش از حد اپراتور نیز شناخته می شود. اصطلاح اد هوک در این زمینه به معنای توهین آمیز نیست. صرفاً به این واقعیت اشاره دارد که این نوع چندشکلی یک ویژگی اساسی سیستم نوع نیست. این برخلاف چندشکلی پارامتریک است که در آن توابع چند شکلی بدون ذکر نوع خاصی نوشته می شوند و بنابراین می توانند یک پیاده سازی انتزاعی را برای هر تعداد نوع به روش شفاف اعمال کنند. این طبقه بندی توسط کریستوفر استراچی در سال 1967 معرفی شد. اتصال اولیه. چند شکلی موقت یک مکانیسم توزیع است: کنترلی که از طریق یک تابع نامگذاری شده حرکت می کند، بدون نیاز به تعیین دقیق تابع فراخوانی شده، به توابع مختلف دیگر ارسال می شود. اضافه بار اجازه می دهد تا چندین تابع که انواع مختلف دارند با یک نام تعریف شوند. ک
امپایلر یا مفسر به طور خودکار از فراخوانی تابع مناسب اطمینان حاصل می کند. به این ترتیب، توابعی که لیست های اعداد صحیح ، لیست رشته ها ، فهرست های اعداد واقعی و غیره را اضافه می کنند، می توانند نوشته شوند، و همه آنها را "ضمیمه" می نامند — و تابع "پیوست" سمت راست بر اساس نوع لیست هایی که الحاق می شوند فراخوانی می شود. این با چند شکلی پارامتریک متفاوت است، که در آن تابع باید "به طور کلی" نوشته شود تا با هر نوع لیستی کار کند. با استفاده از اضافه بار، ممکن است یک تابع بر اساس نوع ورودی که به آن ارسال می شود، دو کار کاملاً متفاوت را انجام دهد. این با چند شکلی پارامتریک امکان پذیر نیست (اما باید با روشن کردن نوع در داخل تابع عمومی به دست آید). روش دیگر برای نگاه کردن به بارگذاری بیش از حد این است که یک روال به طور منحصر به فرد نه با نام خود، بلکه با ترکیب نام و تعداد، ترتیب و انواع پارامترهای آن شناسایی می شود. این نوع چندشکلی در زبان های برنامه نویسی شی گرا رایج است، که بسیاری از آنها به عملگرها اجازه می دهند تا به روشی مشابه توابع بارگذاری شوند (به بارگذاری بیش از حد اپراتور مراجعه کنید). برخی از زبان هایی که به صو
رت پویا تایپ نشده اند و فاقد چندشکلی خاص (از جمله کلاس های نوع) هستند، نام های تابع طولانی تری دارند مانند codice_1 ، codice_2 ، و غیره. مزیتی که گاهی از بارگذاری بیش از حد به دست می آید، ظاهر تخصصی است، به عنوان مثال، یک تابع با نام یکسان را می توان به روش های مختلف پیاده سازی کرد، که هر کدام برای انواع داده های خاصی که روی آنها کار می کند بهینه شده است. این می تواند یک رابط کاربری مناسب برای کدهایی که به دلایل عملکرد باید در موقعیت های مختلف تخصصی شوند، فراهم کند. نکته منفی این است که نوع سیستم نمی تواند سازگاری پیاده سازی های مختلف را تضمین کند. از آنجایی که بارگذاری بیش از حد در زمان کامپایل انجام می شود، جایگزینی برای اتصال دیرهنگام همانطور که در چند شکلی زیرگروهی یافت می شود، نیست. دیر صحافی. با وجود بخش قبلی، راه های دیگری وجود دارد که چندشکلی "موقتی" می تواند کار کند. به عنوان مثال زبان Smalltalk را در نظر بگیرید. در Smalltalk ، بارگذاری بیش از حد در زمان اجرا انجام می شود، زیرا روش ها ("اجرای تابع") برای هر پیام بارگذاری شده ("عملکرد بیش از حد") زمانی که در شرف اجرا هستند حل می شوند. این در زمان اجرا
و پس از کامپایل شدن برنامه اتفاق می افتد. بنابراین، پلی مورفیسم با چندشکلی زیرمجموعه مانند سایر زبان ها ارائه می شود، و همچنین در زمان اجرا با چندشکلی "ad hoc" ، عملکرد آن گسترش می یابد. نگاه دقیق تر همچنین نشان می دهد که Smalltalk تنوع کمی متفاوت از چند شکلی "ad hoc" را ارائه می دهد. از آنجایی که Smalltalk دارای یک مدل اجرای باند دیرهنگام است، و از آنجایی که اشیایی را برای مدیریت پیام هایی که درک نمی شوند، فراهم می کند، امکان پیاده سازی عملکرد با استفاده از چند شکلی بدون بارگذاری صریح یک پیام خاص وجود دارد. این ممکن است به طور کلی برای برنامه نویسی روزمره توصیه نشود، اما می تواند هنگام اجرای پروکسی ها بسیار مفید باشد. همچنین، در حالی که به طور کلی روش کلاس رایج و اضافه بار سازنده چند شکلی در نظر گرفته نمی شود، زبان های یکنواخت تری وجود دارند که در آن کلاس ها اشیاء منظم هستند. به عنوان مثال، در Smalltalk، کلاس ها اشیاء منظم هستند. به نوبه خود، این بدان معناست که پیام های ارسال شده به کلاس ها می توانند بیش از حد بارگذاری شوند، و همچنین می توان اشیایی را ایجاد کرد که مانند کلاس ها رفتار کنند بدون اینکه کلاس ها
ی آنها از سلسله مراتب کلاس ها به ارث ببرند. اینها تکنیک های مؤثری هستند که می توان از آنها برای بهره گیری از قابلیت های بازتابی قدرتمند اسمال تاک استفاده کرد. ترتیبات مشابه در زبانهایی مانند Self و Newspeak نیز امکان پذیر است. مثال. یک عملگر codice_3 را تصور کنید که ممکن است به روش های زیر استفاده شود: برای رسیدگی به این شش فراخوانی تابع، به چهار قطعه کد مختلف نیاز است (یا سه قطعه، اگر رشته ها به عنوان لیستی از کاراکترها در نظر گرفته شوند): بنابراین، نام codice_3 در واقع به سه یا چهار عملکرد کاملا متفاوت اشاره دارد. این نمونه ای از "اضافه بار" یا به طور خاص تر، "بارگذاری بیش از حد اپراتور" است. به ابهام در انواع رشته های مورد استفاده در مورد آخر توجه کنید. codice_11 را در نظر بگیرید که در آن برنامه نویس "به طور طبیعی" ممکن است به جای الحاق، جمع را فرض کند. آنها ممکن است انتظار codice_12 را به جای codice_13 داشته باشند. بنابراین بارگذاری بیش از حد می تواند معانی یا معنایی متفاوتی برای یک عملیات و همچنین پیاده سازی های متفاوت ارائه دهد.
در علوم کامپیوتر ، ترکیب تابع یک عمل یا مکانیزم برای ترکیب توابع ساده برای ساخت توابع پیچیده تر است. مانند ترکیب معمول توابع در ریاضیات ، نتیجه هر تابع به عنوان آرگومان تابع بعدی و حاصل آخرین تابع نتیجه کل است. برنامه نویسان اغلب توابعی را برای نتایج سایر توابع اعمال می کنند و تقریباً همه زبان های برنامه نویسی این امکان را دارند. در برخی موارد، ترکیب توابع به عنوان یک تابع در نوع خود جالب است که بعدا مورد استفاده قرار می گیرد. چنین تابعی همیشه قابل تعریف است، اما زبان هایی با توابع درجه یک آن را آسان تر می کنند. توانایی نوشتن آسان توابع، توابع فاکتورگیری (تجزیه) را برای نگهداری و استفاده مجدد از کد تشویق می کند. به طور کلی، سیستم های بزرگ ممکن است با نوشتن برنامه های کامل ساخته شوند. به بیان محدود، ترکیب تابع برای توابعی اعمال می شود که بر روی مقدار محدودی از داده ها کار می کنند، هر مرحله قبل از تحویل به مرحله بعدی، آن را به صورت متوالی پردازش می کند. توابعی که بر روی داده های بالقوه بی نهایت کار می کنند (یک جریان یا دیگر داده های کد ) به عنوان فیلتر شناخته می شوند و در عوض در یک خط لوله متصل می شوند که مشابه
ترکیب تابع است و می تواند همزمان اجرا شود. تنظیم فراخوانی تابع. برای مثال، فرض کنید دو تابع ' و ' داریم، مانند و . نوشتن آنها به این معنی است که ابتدا را محاسبه می کنیم, و سپس "" برای محاسبه استفاده می کنیم . این مثال در زبان C است:foo←f∘gاگر به نتیجه میانی نامی ندهیم، مراحل را می توان ترکیب کرد: z = f(g(x)); با وجود تفاوت در طول، این دو پیاده سازی نتیجه یکسانی را محاسبه می کنند. اجرای دوم تنها به یک خط کد نیاز دارد و به صورت محاوره ای به عنوان فرم "خیلی ترکیب شده" نامیده می شود. خوانایی و در نتیجه قابلیت نگهداری یکی از مزیت های فرم های بسیار ترکیبی است، زیرا به خطوط کد کمتری نیاز دارند و «مساحت سطح» برنامه را به حداقل می رسانند. DeMarco و Lister به طور تجربی رابطه معکوس بین سطح و قابلیت نگهداری را تأیید می کنند. از سوی دیگر، ممکن است استفاده بیش از حد از فرم های با ترکیب بالا امکان پذیر باشد. تودرتویی از توابع بیش از حد ممکن است اثر معکوس داشته باشد و کد را کمتر قابل نگهداری کند. در یک زبان مبتنی بر پشته ، ترکیب عملکردی حتی طبیعی تر است: این ترکیب توسط الحاق انجام می شود و معمولاً روش اصلی طراحی برنامه است.
مثال بالا در Forth : g f که هر آنچه قبلاً روی پشته بود را می گیرد، g و سپس f را اعمال کرده و نتیجه را روی پشته بگذارید. برای نماد ریاضی مربوطه، نماد ترکیب پسوند را ببینید. نامگذاری ترکیب توابع. حال فرض کنید ترکیب فراخوانی f() بر روی نتیجه g() اغلب مفید است و می خواهیم آن را foo() نامگذاری کنیم تا به تنهایی به عنوان یک تابع استفاده شود. در اکثر زبان ها، ما می توانیم یک تابع جدید را تعریف کنیم که توسط ترکیب پیاده سازی شده است. مثال در C : float foo(float x) { return f(g(x)); (شکل طولانی با واسطه ها نیز کار می کند.) مثال در Forth : در زبان هایی مانند C ، تنها راه برای ایجاد یک تابع جدید، تعریف آن در منبع برنامه است، به این معنی که توابع را نمی توان در زمان اجرا ترکیب کرد. با این حال، ارزیابی یک ترکیب دلخواه از توابع "از پیش تعریف شده" ممکن است: typedef int FXN(int); int eval(FXN *fs[], int size, int x) for (int i=0; i&lt;size; i++) x = (*fs[i])(x); return x; int main() // ((6+1)*2)-3 = 11 FXN *arr[] = {f,g,h}; printf("%d ", eval(arr, 3, 6)); // ((6-3)*2)+1 = 7 arr[2] = f; arr[0] = h; printf("%d ", eval(arr, 3,
6)); ترکیب بندی درجه یک. در زبان های برنامه نویسی تابعی ، ترکیب تابع را می توان به طور طبیعی به عنوان یک تابع یا عملگر درجه بالاتر بیان کرد. در سایر زبان های برنامه نویسی می توانید مکانیسم های خود را برای انجام ترکیب تابع بنویسید. هاسکل. در Haskell ، مثال داده شده در بالا تبدیل می شود: foo = f . g با استفاده از عملگر ترکیب داخلی (.) که می تواند به صورت "f بعد از g" یا "g تشکیل شده با f" خوانده شود. عملگر ترکیب خود را می توان در Haskell با استفاده از عبارت lambda تعریف کرد: (.) :: (b -&gt; c) -&gt; (a -&gt; b) -&gt; a -&gt; c f . g = x -&gt; f (g x) خط اول نوع (.) را توصیف می کند - یک جفت تابع را می گیرد و یک تابع را برمی گرداند (عبارت لامبدا در خط دوم). توجه داشته باشید که Haskell نیازی به مشخصات دقیق انواع ورودی و خروجی f و g ندارد. a، b، c و x جایگاه بان ها هستند. فقط رابطه بین مهم است (f باید آنچه را که g برمی گرداند بپذیرد). این باعث می شود (.) یک عملگر چند شکلی باشد . لیسپ. انواع Lisp ، به ویژه Scheme ، قابلیت تعویض کد و داده به همراه پردازش توابع، خود را بسیار مناسب برای تعریف بازگشتی از یک عملگر ترکیبی