title: استخوان مصنوعی

text: است که منجر به کاهش 𝜙 هدف روش دیفرانسیلی غلبه بر محدودیت ۱کاربرد روش تخمین رقیق شده‌است. ایده اصلی این روش اضافه کردن تدریجی و مرحله به مرحله تخلخل به ماده سازنده تا زمان دستیابی به درصد تخلخل نهایی است. در هر مرحله نیز از روش تخمین رقیق برای بهدست آوردن خواص مکانیکی مؤثر ماده به دست آمده استفاده می‌شود. بدین منظور ابتدا درصد بسیار کوچکی از تخلخل به ماده سازنده اعمال و خواص مؤثر ماده حاصل با استفاده از روابط) ۱۹٬۱۸ (محاسبه می‌شود. در ادامه بخش بسیار کوچکی از ماده حاصل (شامل تخلخل) جدا شده و به جای آن به همان اندازه تخلخل جایگزین می‌شود و دوباره از روش تخمین رقیق برای به دست آوردن خواص مکانیکی ماده جدید که حاوی تخلخل بیشتری است نسبت به ماده پیشین استفاده می‌شود. تکرار پروسه جداسازی ماده و اضافه کردن تخلخل منجر به دستیابی به دو معادله دیفرانسیل کوپل شده برای محاسبه مدولهای حجمی و برشی مؤثر ماده متخلخل می‌شود.


title: استخوان مصنوعی

text: روش تخمین رقیق در اصل برای مواد کامپوزیتی با درصد حجمی بسیار ناچیز ذرات پیشنهاد شده‌است. همان‌طور که پیشتر نیز بدان اشاره شد، مواد متخلخل را می‌توان حالت خاصی از مواد کامپوزیتی در نظر گرفت که یک فاز از آن دارای سفتی صفر است. به همین دلیل از روش تخمین رقیق نیز می‌توان برای به دست آوردن خواص مکانیکی مواد متخلخل با درصد استفاده کرد. باید توجه شود که برای استفاده از این 𝜙 (تخلخل پایین) ۱روش درصد تخلخل باید به اندازه‌های کوچک باشد که بتوان از برهمکنش مکانیکی میان حفره‌ها صرف نظر کرد. با فرض شکل کروی برای حفره‌ها، مدول‌های حجمی و برشی یک ماده متخلخل با استفاده از روش تخمین رقیق به دست می‌آیند.


title: استخوان مصنوعی

text: روش‌های همگن سازی میکرومکانیکی نیز مانند روش تخمین رقیق در اصل برای مواد کامپوزیتی پیشنهاد شده‌اند، اما می‌توان از آنها برای محاسبه خواص مکانیکی مواد متخلخل نیز استفاده کرد. نکته‌ای که در مورد این روش‌ها باید بدان توجه شود آن است که در اینجا، برخلاف روشهای یپیشین، تنها خواص مکانیکی مؤثر ماده متخلخل بهدست نمی‌آید، بلکه این روش‌ها امکان محاسبه کامل ماتریس سفتی ماده را فراهم می‌آورند. برخلاف اکثر روش‌های مورد بررسی قرار گرفته، در اینجا تأثیر شکل ذرات (حفره‌ها) نیز در بهدست آوردن خواص به خوبی لحاظ می‌شود. روش‌های خودسازگاری و موری- تاناکا از جمله مهمترین روش‌های همگنسازی میکرومکانیکی است.


title: استخوان مصنوعی

text: در حالت کلی داربستهای استخوانی به صورت تک جنسه یا چند جنسه(کامپوزیتی) ساخته می‌شوند که مدل‌سازی آن‌ها به ترتیب به صورت تک مقیاسه و چند مقیاسه انجام می‌گیرد. در این بخش ضمن توضیح این روش‌ها به معرفی داربست‌های استخوانی تک جنسه و دو جنسه و نحوه مدلسازی آن‌ها پرداخته خواهد شد. همان‌طور که پیش تر بدان اشاره شد برای شبیه‌سازی داربست‌های تک جنسه از روش تک مقیاسه استفاده می‌شود. در این روش خواص مکانیکی داربست‌ها استخراج می‌شود. در این بخش به منظور بررسی ومقایسه عملکرد مدلهای مختلف ارائه شده خواص مکانیکی داربستهای تک جنسه ساخته شده از مواد گوناگون سرامیکی درتخلخل‌های مختلف با استفاده از این مدلها و به کمک روش تک مقیاسه در نظر گرفته شده انده، به دست آمدهاند. در مدلسازی داربستهای مختلف شکل حفره‌ها کروی و شکل ذرات و بغدادیت، به ترتیب سوزنی CEL هیدروکسی آپاتیت، سرامیک شیشه، دیسکی شکل و در نظر گرفته شده‌است. علاوه بر داربستهای تک جنسه از روابط میکرومکانیکی ارائه شده برای شبیه‌سازی داربست‌های استخوانی کامپوزیتی متخلخل نیز می‌توان استفاده‌کرد. این داربست‌ها از ماتریسی از جنس کلاژن که حاوی نسبتهای حجمی مختلف از ذرات کروی شکل هیدروکسی آپاتیت است، ساخته شده و مدول یانگ آنها در تخلخلهای مختلف بااستفاده از روش اجزای محدود بهدست آمده‌است. برای به دست آوردن خواص مکانیکی این داربست‌ها به صورت تئوری باید از روش مدل‌سازی چند مقیاسه استفاده کرد. در این روش از اطلاعات مقیاس پایین‌تر برای محاسبه خواص مقیاس بالاتر استفاده می‌شود. بدین معنی که خروجی هرمقیاس به عنوان ورودی برای مقیاس بالاتر مورد استفاده قرار می‌گیرد. محاسبه خواص مکانیکی داربستهای استخوانی سرامیکی (مدلسازی تک مقیاسه) از میان دو روش همگن سازی میکرو مکانیکی ارائه شده تنها از روش خود سازگاری برای به دست آوردن مدول یانگ این داربست‌ها استفاده شده واز روش موری- تاناکا صرف نظر شده‌است. دلیل این امر آن است که ساختاراین داربست‌ها به گونه ای است که در آنها امکان مشخص کردن دقیق یک فاز به عنوان فاز ماتریس وجود ندارد و بنابراین روش خود سازگاری تخمین بهتری از خواص مکانیکی آنها فراهم می‌آورد. به منظور مقایسه بهتر مقادیر آزمایشگاهی مربوط نیز در هر مورد بیان شده‌اند. ۶ مدل دیوی برای تخلخلهای کمتر از - شکلهای ۲۳۰٪ بسیار مناسب است، اما با افزایش تخلخل دقت آن کاهش می‌یابد. خصوصاً که دارای تخلخل‌های به نسبت بالایی است، این مدل کارایی لازم را ندارد. این مدل برای تخلخل‌های بالای % ۵۰ توانایی محاسبه مدول یانگ را ندارد. این مدل در حقیقت برای تخمین مدول یانگ در حالت رقیق (برای تخلخلهای پایین) پیشنهاد شده‌است. عملکرد روش تخمین رقیق تا حدود زیادی مشابه روش دیوی است واختلاف نتایج بهدست آمده از این روشها در تخلخل‌های مختلف کمتر از % ۲ است. دقت این روش نیز با افزایش تخلخل به شدت کاهش می‌یابد و مشابه مدل دیوی برای تخلخل‌های بالای % ۵۰ امکان استفاده از این روش برای محاسبه مدول یانگ وجود ندارد. مقادیر بهدست آمده از این دو مدل تا حدود زیادی مشابه هم است و از مدل تخمین رقیق نیز می‌توان مانند روش دیوی برای محاسبه مدول یانگ مواد متخلخل با تخلخل زیر % ۳۰ استفاده کرد. برخلاف روشهای دیوی و تخمین رقیق عملکرد روشهای رایس و دیفرانسیلی با افزایش درصد تخلخل بهبود می‌یابند. روش رایس در میان روش‌های مورد بررسی دارای بدترین عملکرد است (به ویژه برای تخلخل‌های پایین) و مقادیر به دست آمده از این روش اختلاف زیادی با یافته‌های آزمایشگاهی دارند. روش دیفرانسیلی حتی در تخلخل‌های پایین نیز عملکرد قابل قبولی دارد. باید توجه شود که روش دیفرانسیلی برای برطرف کردن محدودیت‌های روش تخمین رقیق در پیش‌بینی خواص مکانیکی مواد با تخلخل بالا ارائه شده‌است و از فرمول بندی این روش برای محاسبات استفاده می‌نماید. به همین دلیل در تخلخلهای پایین (زیر % ۱۰)مقادیر به دست آمده از روش‌های تخمین رقیق و دیفرانسیلی بسیار مشابه است، اما برای تخلخلهای بالا (به ویژه بالای % ۵۰)، روش دیفرانسیلی قادر به پیشبینی مناسب مدول یانگ داربست هاست. برای داربستهای استخوانی حداکثر میزان خطای میان CEL ساخته شده از جنس سرامیک شیشه به دست آمده با این روش با یافته‌های آزمایشگاهی برابر % ۲۰ است. عملکرد مدله ای گیبسون، رابرتس و گربوزی و وانگ و تیسنگ در پیشبینی مدول یانگ تقریباً یکسان است. این مدلها معمولاً در تخلخلهای پایین مقادیری با % ۲۰ خطا نسبت به یافته‌های آزمایشگاهی برای مدول یانگ ارائه می‌دهند. برای تخلخلهای بالای % ۲۰ روش هراکوویچ و بکستر نیز مقادیری تقریباً مشابه این روشها برای مدول یانگ به دست می‌دهد. روش خود سازگاری یکی از بهترین مدل‌های بررسی شده‌است که کارایی مناسبی در محاسبه مقادیر مدول یانگ داربست‌های استخوانی سرامیکی از خود نشان می‌دهد. در تخلخلهای پایین (زیر % ۲۰) مقدار حداکثر میزان اختلاف مقادیر به دست آمده با این روش و نتایج آزمایشگاهی در حدود % ۸ است. با افزایش تخلخل داربستها دقت این مدل تا حدودی کاهش می‌یابد، اما با این وجود استفاده از این روش برای تخلخل‌های بالا نیز منجر به دستیابی به مقادیر قابل قبولی برای مدول یانگ می‌شود که دارای دقتی نزدیک به روش دیفرانسیلی است. مقادیر به دستآمده برای ضریب پواسون داربست استخوانی ساخته شده از جنس هیدروکسی آپاتیت با استفاده از روشهای رابرتس و گربوزی، وانگ و تیسنگ، تخمین رقیق، دیفرانسیلی و خودسازگاری در تخلخلهای مختلف رسم شده‌اند. تنها مقادیر آزمایشگاهی در دسترس برای ضریب پواسون که توسط دویس و همکاران برای داربستهای از از میان مدلهای مورد بررسی بهترین عملکرد در محاسبه ضریب پواسون برای تخلخل‌های کمتر از % ۱۰درصد متعلق به روش رابرتس و گربوزی (با حداکثر % ۲٫۶ خطا) و برای‌تخلخلهای بالاتر از % ۱۰ متعلق به روش خودسازگاری (با حداکثر % ۲٫۵ خطا) است. اختلاف مقادیر به دست آمده از مدلهای مختلف برای ضریب پواسون بسیار ناچیز است.


title: استخوان مصنوعی

text: نسبتهای حجمی مختلف از ذرات هیدروکسی آپاتیت نشان داده شده‌است. تحلیل در این مرحله با استفاده از روش همگنسازی میکرومکانیکی موری- تاناکا انجام گرفته‌است. دلیل انتخاب روش موری- تاناکا آن است که ساختار این داربستها به گونه‌های است که در آنها امکان مشخص کردن دقیق یک فاز (کلاژن) به عنوان فاز ماتریس وجود دارد، بنابراین این روش تخمین مناسبی از خواص مکانیکی آنها فراهم می‌کند. در این محاسبات شکل ذرات هیدروکسی آپاتیت به صورت کروی در نظر گرفته شده‌است. به منظور مقایسه مقادیر مدول یانگ کامپوزیت‌های هیدروکسی آپاتیت و کلاژن به دست آمده توسط چان و همکارانش با استفاده از روش اجزای محدود نیز در این شکل نشان داده شده‌است. مطابقت مناسبی میان یافته‌های این تحقیق و داده‌های عددی ارائه شده در مقاله برای کامپوزیتهای سازنده داربستهای استخوانی در شکل ۸ قابل مشاهده است. حداکثر مقدار خطا در شکل ۸ مربوط به نسبت حجمی % ۷۵ هیدروکسی آپاتیت که برابر با % ۴ است. از نتایج به دستآمده در مرحله اول به عنوان ورودی (خواص مکانیکی ماده سازنده) برای یافتن مدول یانگ نهایی داربست‌های متخلخل استفاده می‌شود. تخلخلها در این محاسبات مطابق مقاله به صورت کروی شکل در نظر گرفته شده‌اند. به دلیل قابل تشخیص بودن دقیق یک فاز به عنوان فاز ماتریس از میان دو روش همگن سازی میکرو مکانیکی ارائه شده از روش موری- تاناکا برای به دست آوردن مدول یانگ این داربستها استفاده شده و از روش خودسازگاری صرف نظر شده‌است. نتایج نشان می‌دهند که استفاده از روش ارائه شده در به دست آوردن خواص مکانیکی داربست‌های کامپوزیتی نیز منجر به دستیابی به نتایج قابل قبولی می‌شود. هر چند که در این حالت به دلیل چند مقیاسه بودن تحلیل و جمع شدن خطاها در مراحل مختلف درصد خطا اندکی بالاتر از مسائل تکم قیاسه است. البته باید توجه شود که چون محدوده تخلخل‌ها کمتر از % ۳۰ است عمده خطا ناشی از افزایش درصد حجمی هیدروکسی آپاتیت است، به طوری که کمترین دقت مربوط به داربست‌هایی است که دارای % ۸۰ حجمی هیدروکسی آپاتیت است. بررسی مقادیر ارائه برای مدول یانگ نشان می‌دهد که به دلیل محدوده تخلخل‌های مورد بررسی تفاوت میان مقادیر به دست آمده از مدل‌های مختلف بسیار ناچیز است. هرچند دقت روشهای دیفرانسیلی و موری- تاناکا خصوصاً در تخلخلهای بالاتر اندکی بیش از دیگر روشهاست.


title: استخوان مصنوعی

text: با توجه به کاربرد گسترده هیدروکسی آپاتیت در ساخت داربست‌های استخوانی در این قسمت نتایج به دست آمده برای خواص مکانیکی این گونه داربست‌ها مورد تجزیه و تحلیل آماری قرار گرفته و رابطه میان درصد تخلخل و مدول یانگ و ضریب پواسون آنها استخراج خواهد شد. بدین منظور برای بهدست آوردن خواص این نوع داربست ها در محدوده‌های مختلف تخلخل شناسایی خواهند شد و سپس از مدل شناسایی شده در هر بازه، برای به دست آوردن خواص در همان بازه استفاده می‌شود. پس از به دست آوردن خواص مکانیکی داربست در تخلخل‌های مختلف با استفاده از نرم‌افزار اسپی اساس، فرمولهای رگرسیون مختلف برای خواص مکانیکی و تخلخل معین شده و ضرایب رگرسیون و تعیین برای حالات مختلف بررسی خواهند شد.


title: استخوان مصنوعی

text: بررسی مقادیر به دست آمده برای مدل یانگ داربست‌های استخوانی نشان می‌دهد که (ساخته شده از جنس هیدروکسی آپاتیت از میان روشهای مورد بررسی) دقت مدل‌های دیوی و خودسازگاری برای تخلخل‌های زیر % ۳۰ بیشتر از سایر مدل هاست. به دلیل سادگی روش دیوی و عدم وجود تفاوت چشم گیر میان نتایج به دست آمده از این دو روش، استفاده از روش دیوی در این محدوده از تخلخلها دارای ارجحیت است. دقت روش (برای تخلخل های % ۳۰ تا % ۶۰) بیش از سایر روش هاست و همچنین برای تخلخلهای بالای ۶۰٪ نیز تطابق مناسبی میان نتایج روش دیفرانسیلی و داده‌های آزمایشگاهی مشاهده می‌شود. در مورد ضریب پواسون نیز هر چند تفاوت آشکاری میان نتایج روش‌های رابرتس و گربوزی، دیفرانسیلی و خودسازگاری مشاهده نمی‌شود، اما روش خودسازگاری به دلیل دقت بالاتر برای محاسبات انتخاب می‌شود.


title: استخوان مصنوعی

text: با به دست آوردن مقادیر خواص مکانیکی داربست ها در تخلخل های مختلف با استفاده از مدل های شناسایی شده و استفاده از تحلیل رگرسیون برای پیش بینی مدل یانگ داربست های استخوانی می‌توان روابط ساخته شده از جنس هیدروکسی آپاتیت را استخراج کرد.


title: استخوان مصنوعی

text: 𝐸 = −۱۰۹٫۴۶𝜙 + ۹۰٫۱۰۱


title: استخوان مصنوعی

text: 𝐸 = ۱۴۷٫۰۷𝜙۲ − ۲۵۶٫۵۳𝜙 + ۱۱۳٫۳۹


title: استخوان مصنوعی

text: 𝐸 = −۸۸٫۷۹۹𝜙۳ + ۲۸۰٫۲۷𝜙۲ − ۳۰۸٫۵۲𝜙 + ۱۱۷٫۱۸


title: استخوان مصنوعی

text: 𝜈 = −۰٫۰۵۴۳𝜙 + ۰٫۲۶۱


title: استخوان مصنوعی

text: 𝜈 = ۰٫۰۵۷𝜙۲ − ۰٫۱۱۱۳𝜙 + ۰٫۲۷


title: استخوان مصنوعی

text: 𝜈 = −۰٫۰۸۶𝜙۳ + ۰٫۰۸۴۸𝜙۲ − ۰٫۱۲۲۱𝜙 + ۰٫۲۷۰۸


title: استخوان مصنوعی

text: بدیهی است که براساس مقادیر ارائه شده رگرسیون های درجه ۳(به دلیل بالاتر بودن مقدار ضرایب همبستگی) و تعیین آنها معادلات برازش مناسب تری برای تخمین مدل یانگ و ضریب پواسون است. از معادلات ارائه شده می‌توان برای تخمین سریع مقادیر مدل یانگ و ضریب پواسون داربست های استخوانی ساخته شده از جنس هیدروکسی آپاتیت استفاده کرد.


title: آقامالیلر

text: آقامالیلر (به ترکی آذربایجانی: Ağamalılar) یک منطقه مسکونی در جمهوری آذربایجان است که در شهرستان ایمیشلی واقع شده است. آقامالیلر ۵۴۲ نفر جمعیت دارد.


title: لاریسا ایلچنکو

text: لاریسا ایلچنکو (؛ زادهٔ ۱۸ نوامبر ۱۹۸۸) شناگر اهل روسیه است.


title: لاریسا ایلچنکو

text: وی همچنین برندهٔ جوایزی همچون نشان دوستی شده‌است.


title: لاریسا ایلچنکو

text: وی در مسابقات کشوری و بین‌المللی در مجموع برندهٔ ۹ مدال طلا، ۱ مدال نقره، ۱ مدال برنز شده‌است.


title: آقامحمدلی (ایمیشلی)

text: آقامحمدلی (به ترکی آذربایجانی: Ağaməmmədli) یک منطقه مسکونی در جمهوری آذربایجان است که در شهرستان ایمیشلی واقع شده است. آقامحمدلی ۱۰۶۰ نفر جمعیت دارد.


title: الله‌وردی باقروف

text: الله‌وردی باقروف (; – ) افسر آذربایجانی، رئیس اسبق شعبه جبهه خلق آذربایجان در آق‌دام و سرمربی باشگاه فوتبال قره‌باغ بود، که در جنگ قره‌باغ کشته شد. او قهرمان ملی این کشور است.


title: الله‌وردی باقروف

text: الله‌وردی باقروف ۲۲ آوریل سال ۱۹۴۶ در شهرستان آق‌دام در بخش قره‌باغ کوهستانی آذربایجان شوروی به دنیا آمد. او که ۷ خواهر بزرگ‌تر داشت، ته‌تغاری خانواده بود. الله‌وردی باقروف بعد از پشت سر گذاشتن آموزش متوسطه خود در مدرسه‌ای در آق‌دام، به عنوان سرمربی در باشگاه فوتبال قره‌باغ فعالیت‌های شغلی خود را آغاز نمود.


title: الله‌وردی باقروف

text: الله‌وردی باقروف از همان عنفوان کودکی‌اش علاقه شدیدی به دو و میدانی و والیبال داشت و مشفول به تمرین کردن در این دو رشته ورزشی بود. وی نقش مهمی در پیروزی باشگاه آق‌دام در مسابقات مختلف ورزشی بین‌منطقه‌ای در سال‌های دانش‌آموزی‌اش و بعد از آن از خود نشان داد. در سال ۱۹۷۰، به عنوان کاپیتان دیدار تیم‌های فوتبال آقدام و جبراییل که در چارچوب «جام سنبل طلایی» در شهرستان فضولی صورت گرفت، حضور یافت.


title: الله‌وردی باقروف

text: در سال ۱۹۷۶، به سرمربی‌گری باشگاه فوتبال قره‌باغ انتخاب شد که در همان سال تیم آذربایجان به واسطه بازی مؤثر او در «مسابقه وحدت جهان» جایگاه چهارم را ازان خود کرد. وی در سال ۱۹۹۱ در دیداری بین بازیکنان فوتبال حرفه ای تیم‌های «قره‌باغ» و نفتچی بازی کرد. در این بازی که به تساوی ۱ بر ۱ به پایان رسید، تنها گل باشگاه آق‌دام را الله‌وردی باقروف به ثمر رساند.


title: الله‌وردی باقروف

text: در سال ۱۹۸۸، همزمان با شروع ادعاهای ارضی ارمنستان نسبت به قره‌باغ کوهستانی آذربایجان، الله‌وردی باقروف برای دفاع از این منطقه به‌طور داوطلبانه اقدام به ثبت نام در ارتش آذربایجان کرد. در سال ۱۹۹۰، الله‌وردی گردان خود را دایر کرد و به هنگام تبادل گروگان‌ها، تعداد کثیری از مردم غیرنظامی خواجه‌لی را از اسارت نجات داد.


title: الله‌وردی باقروف

text: الله‌وردی باقروف به‌وسیله کمک‌های مالی مردم آق‌دام و پول‌های خودش از گروه‌های بسیج مردمی ایجاد شده در روستاهای قره‌باغ حمایت مالی می‌نمود. او در تمامی نبردهایی که در آق‌دام رخ داد، شرکت داشت. در خلال جنگ به ریاست شعبه جبهه خلق آذربایجان در آق‌دام گماشته شد. پرچم جمهوری مستقل آذربایجان را برای اولین بار الله‌وردی باقروف در آق‌دام به اهتزاز درآورد.


title: الله‌وردی باقروف

text: در سال ۱۹۸۸، هنگامی که پست‌های نگهبانی بین آسکران و آق‌دام در فقدان اطلاع دولت در حال ایجاد شدن بودند، «الدار باقروف»، برادر الله‌وردی، اولین کسی بود، که بعد از تکمیل ساخت تمامی پستها میان مناطق آذربایجانی نشین و ارمنینشین، داوطلبانه روانه آنجا شد. واحدهای نظامی نیروهای مسلح جمهوری آذربایجان در آق‌دام تحت فرماندهی الله‌وردی و برادرش در اول اکتبر ۱۹۹۱ ایجاد شدند. الدر باقروف مسئولیت پادگان نیروی بسیج مردمی منطقه آق‌دام را به عهده داشت. واحد نظامی ۷۶۰ بسیج مردمی به «پسران میهن» معروف بود. در همان سال بود، که «الدار باقروف» هنگام بازگشت از جلسه شورای عالی در باکو، به طرز مشکوکی در مقابل خانه خود به قتل رسید.


title: الله‌وردی باقروف

text: در ژانویه سال ۱۹۹۲، کلیه نیروها و جنگ‌افزارهای ارتش ارمنستان در دهکده نخجوانلی توسط یگان‌های نظامی آذربایجان که تحت امر الله‌وردی باقروف بودند، منهدم شدند. این فرمانده سپس همراه با ۱۵۰ نظامی تا دژ آسکران پیشروی کرده و تمامی ارتفاعات روستای «پیرجمال» را بازپس‌گرفته و در روستای «کتوک» مستقر شدند. آن‌ها این عملیات را فقط ظرف دو ساعت انجام دادند و پرچم ارمنستان را پایین کشیده و پرچم آذربایجان را در آن مناطق برافراشتند. در پاس همین عملیات از الله‌وردی باقروف با اعطاء نشان «ژنرال محمد اسدوف» تقدیر به عمل آمد.


title: الله‌وردی باقروف

text: الله‌وردی باقروف در سال ۱۹۹۲، هنگامی که برای یک کار فوری به آق‌دام فراخوانده شده بود، به هماره راننده اش بر اثر برخورد خودرویشان با مین ضد تانک کشته شدند. بعد از مرگش به الله‌وردی باقروف نشان قهرمان ملی جمهری آذربایجان اهدا گردید. جنازهاش در ۱۴ ژوئن ۱۹۹۲، در کنار قبر برادرش، الدار باقروف، در گورستان آق‌دام به خاک سپرده شد.


title: الله‌وردی باقروف

text: الله‌وردی باقروف متأهل و دارای دو دختر بود.


title: الله‌وردی باقروف

text: بر اساس فرمان شماره ۴۷۶ رئیس‌جمهور آذربایجان به تاریخ ۲۴ فوریه سال ۱۹۹۳، پس از مرگش به الله‌وردی باقروف فرزند تیمور نشان قهرمان ملی این کشور اعطاء گردید. متعاقباً، بنابه دستور حیدر علی‌اف، رئیس‌جمهوری وقت آذربایجان به وی مدال ستاره طلایی اهدا شد.


title: اوبود

text: اوبود شهری در جزیره بالی اندونزی است که در میان مزارع برنج و دره‌های شیب دار جیانیار واقع شده‌است؛ و به عنوان یک مرکز فرهنگی و هنری در منطقه شناخته شده‌است. این منطقه جمعیتی در حدود ۷۴۳۰۰ نفر دارد و سالانه بیش از ۳ میلیون گردشگر خارجی را به خود می‌بیند.


title: اوبود

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


title: اوبود

text: افسانه ای مربوط به قرن هشتم میلادی بازگو می‌کند که این مکان یک مکان مقدس برای هندوها است که کشیشی به نام Rsi Markendya در مکانی بین دو رودخانه به مراقبه پرداخت و همچنان این منطقه یکی از محل‌های مقدس و زائر پذیر به‌شمار می‌آید.


title: اوبود

text: اوبود در ابتدا به عنوان یک منبع برای گیاهان دریایی به‌شمار می‌رفت و نام این منطقه نیز به زبان اندونزیایی برگرفته از ubad به معنی پزشکی می‌باشد!


title: اوبود

text: در اواخر قرن نوزدهم میلادی این منطقه با توجه به پیمانی بین پادشاه جیانیار و فئودال‌ها محل اقامتی برای اربابان فئودال شد.


title: گیل نیل

text: گیل نیل (؛ زادهٔ ) شناگر اهل استرالیا بود.


title: گیل نیل

text: وی در مسابقات کشوری و بین‌المللی در مجموع برندهٔ ۱ مدال طلا، ۱ مدال نقره، ۱ مدال برنز شده‌است.


title: میشل فورد

text: میشل فورد (؛ زادهٔ ) شناگر اهل استرالیا است.


title: میشل فورد

text: وی در مسابقات کشوری و بین‌المللی در مجموع برندهٔ ۳ مدال طلا، ۳ مدال نقره، ۳ مدال برنز شده‌است.


title: گالیم استیل‌استونات

text: گالیم استیل‌استونات، یا به صورت خلاصه Ga(acac) یک کمپلکس شیمیایی با فرمول Ga(CHO) است. این کمپلکس گالیم با سه لیگاند استیل‌استونات در پژوهش‌ها مورد استفاده قرار می‌گیرد. این مولکول با تقارن D، با دیگر سه‌تایی(استیل‌استونات)های هشت‌ضلعی هم‌شکلی دارد.


title: جئونگ من

text: جئونگ من (زبان کره‌ای: 중문 색달해수욕장 , زبان انگلیسی: Jungmun Saekdal Beach) مجموعه تفریحی در جنوب جزیره چجو است ، طول پلاژ جئونگ من ۵۶۰ متر و عرض ۵۰ متر می‌باشد . از ویژگی‌های منحصر به فرد ساحل جئونگ من شن و ماسه رنگارنگ پلاژ آن هست . ساحل جئونگ من یک ساحل پاکیزه و فارق از آلودگی در کره‌جنوبی می‌باشد .


title: آقامحمدلی (تووز)

text: آقامحمدلی (به ترکی آذربایجانی: Ağaməmmədli) یک منطقه مسکونی در جمهوری آذربایجان است که در شهرستان تووز واقع شده است.


title: محمدلی، قبادلی

text: محمدلی (به ترکی آذربایجانی: Mamedli) یک منطقه مسکونی در جمهوری آرتساخ است که در استان کاشاتاق واقع شده است.


title: محمدلی (ایمیشلی)

text: محمدلی (به ترکی آذربایجانی: Mamedli) یک منطقه مسکونی در جمهوری آذربایجان است که در شهرستان ایمیشلی واقع شده است.


title: پرشیاز گات تلنت (فصل ۱)

text: فصل اول پرشیاز گات تلنت، یک مسابقه نمایش استعدادیابی ایرانی، ضبط شده در سوئد در سال ۹۹–۱۳۹۸ (۲۱–۲۰۲۰)، از ۱۱ بهمن ۱۳۹۸ (۳۱ ژانویه ۲۰۲۰) از شبکه ام‌بی‌سی پرشیا آغاز شد. داوران فصل اول پرشیاز گات تلنت ابی، مهناز افشار، آرش و نازنین نور و مجریان برنامه فرزان اطهری و تارا گرامی بودند. این فصل در ۱۱ قسمت ۶۰ تا ۱۲۰ دقیقه‌ای پخش شد.


title: پرشیاز گات تلنت (فصل ۱)

text: قهرمان این دوره نوید جایزهٔ ۱۰۰٫۰۰۰ یورو و نایب‌قهرمان یاسمین جایزهٔ ۲۵٫۰۰۰ یورو را بردند.


title: پرشیاز گات تلنت (فصل ۱)

text: با توجه به شیوع جهانی ویروس کرونا (کووید ۱۹)، و به عنوان یک اقدام پیشگیرانه، مدیریت ام‌بی‌سی پرشیا تصمیم به تعویق تولید و پخش قسمت‌های زندهٔ برنامه پرشیاز گات تلنت گرفت. این تصمیم برای جلوگیری از انتشار و شیوع این ویروس و همدردی با کسانی که تحت تأثیر این موضوع قرار گرفته‌اند گرفته شد؛ بنابراین تصمیم ادامهٔ این فصل ماه‌ها ناتمام ماند. در نهایت از ۱۷ بهمن ۱۳۹۹ پخش نیمه‌نهایی آغاز شد و ۱ اسفند ۱۳۹۹ مرحلهٔ فینال پخش شد.


title: بلوک پایه

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


title: بلوک پایه

text: در ابتدا تعریف شهودی از یک بلوک پایه را ارائه می‌کنیم و در ادامه تعریف رسمی آن را بیان می‌کنیم. تعریف شهودی بلوک پایه به این صورت است:


title: بلوک پایه

text: کدهایی که در بلوک پایه قرار میگیرند دو ویژگی زیر را دارند:


title: بلوک پایه

text: تحت این شرایط، هر زمانی که اولین دستور در بلوک پایه اجرا شود، تمام دستورها دیگر بلوک پایه نیز باید به اجبار به ترتیب اجرا شوند.


title: بلوک پایه

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


title: بلوک پایه

text: حال تعریف رسمی را بیان می‌کنیم که به این صورت است:


title: بلوک پایه

text: تربیت از دستورها تشکیل یک بلوک پایه را می دهند اگر:


title: بلوک پایه

text: این تعریف رسمی از تعریف شهودی عمومی‌تر است. برای مثال بر اساس این تعریف، امکان اینکه پرش‌های غیرشرطی مقصدهایی داشته باشند که انواع دیگر پرش به آن مقصدها پرش نمی‌کنند را فراهم می‌کند. تعریف رسمی ویژگی‌هایی را برای بلوک پایه‌ها ایجاد می‌کند که کار کردن با آن‌ها را در زمان اجرای الگوریتم‌ها آسان می‌کند.


title: بلوک پایه

text: به بلوک‌های که از آن‌ها وارد یک بلوک پایه می‌شویم، اجداد آن بلوک پایه می‌گویند. همچنین به بلوک‌هایی که وقتی از یک بلوک پایه خارج می‌شویم، به آن‌ها وارد می‌شویم، جانشینان آن بلوک پایه می‌گویند.


title: بلوک پایه

text: برای پیدا کردن بلوک های پایه یک الگوریتم ساده وجود دارد. ابتدا این الگوریتم را به صورت کلی توصیف کرده و در ادامه آن را به طور کامل تشریح می‌کنیم.  توصیف کلی الگوریتم: اجرا کننده‌ی الگوریتم در ابتدا باید یک دور کد را خوانده و مرزهای بلوک پایه را شناسایی کند (مرزهای بلوک پایه دستورها شروع و پایان بلوک می باشند) و آن‌ها را نشانه‌گذاری می‌کند. دستور شروع بلوک پایه می‌تواند مقصد یک دستور پرشی و دستور پایان بلوک می تواند یک دستور پرشی باشد. حال کد را در این نقاط "برش" می‌دهیم؛ بلوک‌های پایه تکه کدهایی هستند که باقی می‌مانند.


title: بلوک پایه

text: توجه داشته باشید که این روش همیشه بلوک پایه ماکسیمال را شناسایی نمی‌کند، ولی بنابر تعریف رسمی، بلوک های پایه پیدا شده دارای شرایط کافی می باشند ( بلوک پایه ماکسیمال بلوکی است که نمی‌توان آن را بدون نقض کردن تعریف بلوک پایه، توسط بلوک های مجاورش گسترش داد).


title: بلوک پایه

text: حال این الگوریتم را به صورت کامل شرح می‌دهیم: ورودی: یک ترتیب از دستورها ( که معمولاً کدهای سه آدرسی هستند). خروجی: یک لیست از بلوک های پایه به صورتی که هر دستور سه آدرسی در یک بلوک پایه قرار گیرد. مرحله اول: ابتدا هدرها را در کد مشخص کنید. هدرها دستورهایی هستند که در یکی از شرایط زیر صدق می کنند:


title: بلوک پایه

text: مرحله دوم: با شروع از یک هدر، تمام دستورها بعد از آن تا هدر بعدی در بلوک پایه مربوط به هدر اولیه قرار می گیرد. بنابراین هر بلوک پایه یک هدر دارد. دستورهایی که در پایان یک بلوک پایه ظاهر می شوند یکی از موارد زیر می باشند:


title: بلوک پایه

text: دستورهایی که در ابتدا یک بلوک پایه ظاهر می شوند یکی از موارد زیر می باشند:


title: بلوک پایه

text: قطعه کد زیر را برای ضرب داخلی دو بردار a و b که طول هر یک برابر 10 می باشد، در نظر بگیرید.


title: بلوک پایه

text: begin


title: بلوک پایه

text: do begin


title: بلوک پایه

text: prod :=prod+ a[i] * b[i];


title: بلوک پایه

text: i :=i+1;


title: بلوک پایه

text: end


title: بلوک پایه

text: while i <= 10


title: بلوک پایه

text: endکد سه آدرسی برای کد منبع فوق به شکل زیر است:


بلوک پایه


title: بلوک پایه

text: (1) prod := 0


title: بلوک پایه

text: (2) i := 1


title: بلوک پایه

text: (3) t1 := 4* i


title: بلوک پایه

text: (4) t2 := a[t1]


title: بلوک پایه

text: (5) t3 := 4* i


title: بلوک پایه

text: (6) t4 := b[t3]


title: بلوک پایه

text: (7) t5 := t2*t4


title: بلوک پایه

text: (8) t6 := prod+t5


title: بلوک پایه

text: (9) prod := t6


title: بلوک پایه

text: (10) t7 := i+1


title: بلوک پایه

text: (11) i := t7 بلوک پایه B1 شامل دستورها (1) تا (2) و بلوک پایه B2 شامل دستورها (3) تا (12) است. توجه کنید طبق قواعد گفته شده دستور (1) دستور شروع برنامه می باشد بنابراین یک هدر است. همچنین دستور (3) مقصد دستوری پرشی در (12) می باشد بنابراین این دستور نیز یک هدر است.


title: محمد توفیق علاوی

text: محمد توفیق علاوی (زاده ۱ ژوئیه ۱۹۵۴) سیاستمدار عراقی و نخست‌وزیر سابق عراق است. او دو دوره، از مه ۲۰۰۶ تا اوت ۲۰۰۷ و همچنین از ۲۰۱۰ تا ۲۰۱۲، وزیر ارتباطات نخست‌وزیر وقت عراق نوری مالکی عضو حزب الدعوه اسلامی کشور عراق بود که هر دو بار استعفا کرد.


title: ویل کوئرور

text: ویل کوئرور (; – ) بازیکن فوتبال اهل پادشاهی هلند بود.


title: ویل کوئرور

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


title: کالیا (اسرائیل)

text: کالیا ، یک شهرک اسرائیلی در سال ۱۹۲۹ ساخته شد و در سال ۱۹۴۸ توسط ارتش عربی اردن تخریب شد و پس از جنگ شش روزه اعراب و اسرائیل دوباره ساخته شد . این شهرک از نظر جغرافیایی در شما دریاچه مرده قرار دارد .


title: کالیا (اسرائیل)

text: کالیا به نام لاتینی عنصر پتاسیم بر می‌گردد که به وفور در منطقه یافت می‌شود . البته کالیا را هم می‌توان مخفف عبارت عبری קם לתחייה ים המוות یعنی دریای مرده به زندگی بازگشته است هم دانست .


title: کالیا (اسرائیل)

text: اقتصاد مردم بومی کالیا به کشاورزی به خصوص تولید لبنیات و خرما وابسته است . اما به دلیل در مسیر گردشگری بودن درآمدی را هم حاصل می‌کنند .


title: سه فراری: داستان‌های آرکادیا

text: سه فراری: داستان های آرکادیا یک مجموعه تلویزیونی پویانمایی آمریکایی است که توسط دریم‌ورکس انیمیشن تولید شده‌است و دومین قسمت از سه گانه داستان های آرکادیا است.


title: سه فراری: داستان‌های آرکادیا

text: ساخت این سریال در تاریخ ۱۲ دسامبر ۲۰۱۷ توسط نتفلیکس و دریم ورکس آغاز شد. در تاریخ ۵ اکتبر ۲۰۱۸، تاریخ رونمایی اعلام شد و اولین تیزر منتشر شد. فصل اول از ۲۱ دسامبر ۲۰۱۸ در ۱۳ قسمت از نتفلیکس منتشر شد. این سریال با پخش فصل دوم کنسل شد، که در تاریخ ۱۲ ژوئیه ۲۰۱۹ اجرا شد. سومین و آخرین قسمت از داستان‌های آرکادیا با عنوان جادوگران در ۷ آگوست سال ۲۰۲۰(۱۷ مرداد ۱۳۹۹) منتشر شد.


title: سه فراری: داستان‌های آرکادیا

text: دو خواهر و برادر سلطنتی فضایی، پرنسس آجا و پرنس کرِل هاوس تارون، سگ آنها مانند حیوان خانگی به نام لووگ و محافظ آنها، وارواتوس وکس، از سیاره خانه خود آکیریدیون۵ Akiridion-5 فرار کرده و به‌طور خاصی در زمین و در آرکادیا اوکس[Arcadeia Oaks] کالیفرنیا سقوط می‌کنند. در آنجا، بیگانگان با فرهنگ و پوشش انسانی تنظیم می‌شوند و سعی می‌کنند سفینه فضایی خود را تعمیر کنند (و همچنین پدر و مادر تقریباً مرده خود پادشاه فیالکوو و ملکه کوراندا را ترمیم کنند) برای بازگشت و پس گرفتن Akiridion-5، که توسط ژنرال موراندو گرفته شده‌است. ژنرال وال موراندو یک دیکتاتور شیطان صفت است، که تاکنون تیمی از مزدوران بین کهکشانی به نام برادران زیران را برای یافتن و گرفتن شاهزادگان به بیرون فرستاده‌است. پس از تحقیق در مورد راهی برای متوقف کردن وال موراندو و پیدا کردن محل مخفی شدن آژا و کرل، زادرا، یکی از محافظان نجیب اشرافی از Akiridion-5 وارد زمین می‌شود. در همین حال، پس از اطلاع از درگیری وی در کودتای موراندو، آژا و کرل تصمیم به تبعید وِکس می‌گیرند. ویکس در دوران تبعید خود به اسارت برادران زرون دستگیر می‌شود و در پاسگاه مزدوران واقع در سیاره ماه زندانی می‌شود. در فصل ۲، آژا و کرل از دستگیری او مطلع شده و یک مأموریت نجات را راه اندازی می‌کنند. به زودی پس از نجات، این باند کشف می‌کند که موراندو به سمت زمین حرکت می‌کند. پس از شکست موفقیت‌آمیز او، آژا، ویکس، زادرا، لووگ و بقیه سرانجام به خانه بازمی‌گردند و به الی پیوستند که داوطلبانه سفیر کره زمین در آکرییدون -۵ است. کرل که زمین به خانه او تبدیل شده‌است تصمیم می‌گیرد تا در کنار دوستان انسانی جدید خود در سیاره زمین بماند.در آخر توبی و استیو درحال قدم زدن در خیابان هستند که ناگهان گربه ای سخنگو به آنها میگوید که دنیای آنها در خطر نابودی است داستان درانمیشن ادامه پیدا میکند. اما قبل از آن باید سریال غول کش ها را ببینید. به این ترتیب است: غول کش ها ، سه فراری ، جادوگران آرکادیا ، غول کش ها : ظهور تایتان ها


title: حیات الحیوان

text: حیات الحیوان یا حیات الحیوان الکبری یا خواص الحیوان کتابی از کمال‌الدین دمیری است که محمدتقی تبریزی در دورهٔ صفویه آن را به فارسی برگردانده‌است.


title: جام در جام اروپا ۶۲–۱۹۶۱

text: جام در جام اروپا ۶۲–۱۹۶۱، دومین دوره از مسابقات فوتبال جام برندگان جام اروپا بود. تیم‌های اتلتیکو مادرید اسپانیا و مدافع عنوان قهرمانی، فیورنتینای ایتالیا، دیدار فینال را برگزار کردند. از این فصل بازی نهایی به صورت تک دیدار برگزار شد. بازی نخست با نتیجه مساوی به پایان رسید و براساس قوانین کار به دیدار تکراری کشیده شد. در بازی تکراری اتلتیکو مادرید با نتیجه ۳–۰ به پیروزی رسید و برای نخستین بار فاتح جام در جام اروپا شد. در این دوره یوفا برای نخستین بار سازماندهی مسابقات را بر عهده گرفت.


title: جام در جام اروپا ۶۲–۱۹۶۱

text: "فیورنتینا در مجموع ۹–۳ برنده شد."


title: جام در جام اروپا ۶۲–۱۹۶۱

text: "لیتشوئس در مجموع ۲–۱ برنده شد.""فیورنتینا در مجموع ۴–۲ برنده شد."


title: جام در جام اروپا ۶۲–۱۹۶۱

text: "اتلتیکو مادرید در مجموع ۵–۰ برنده شد."


title: جام در جام اروپا ۶۲–۱۹۶۱

text: "فیورنتینا در مجموع ۳–۰ برنده شد."


title: جایزه رینوس میشل

text: جایزه رینوس میشل () جایزه‌ای سالانه است در اتحادیه فوتبال سلطنتی هلند. این جایزه توسط اتحادیه مربیان فوتبال حمایت می‌شود.این جایزه به رینوس میشل نامیده می‌شود که در سال ۱۹۹۹ توسط فیفا به عنوان مربی قرن معرفی شد. سرمربیان زیر جایزه یک عمر دستاورد را برای کمک‌های خود در کل حرفه‌ای‌شان دریافت کرده‌اند:


title: گوش مروارید

text: گوش مروارید، با عنوان اصلی ، یک سریال انیمه ژاپنی محصول سال ۱۹۸۶ به نویسندگی "شیفوده آساکورا" و توسط "جونیشی ساتو" کارگردانی شده‌است. این سریال که توسط استودیوی توئی انیمیشن تولید شده و شامل ۵۲ قسمت نیم ساعته است، از ۱۹ ژانویه ۱۹۸۶ تا ۱۱ ژانویه ۱۹۸۷ در تی‌وی آساهی در ژاپن پخش شد.


title: گوش مروارید

text: در این اثر ماجراهای پتی خرگوش، بابی خرس و خانواده‌های آنها، در شهرستان کوچکی به نام "مَپِل" روایت می‌شود.


title: وابستگی عملگر

text: در زبان های برنامه‌نویسی وابسته بودن یک عملگر یک ویژگی است که چگونگی اولویت عملگرها را در غیاب پرانتز مشخص می‌کند. به طور کلی در اکثر زبان های برنامه نویسی عملگرها با ترتیب خاصی اعمال می‌شوند، که این قوانین تحت عنوان اولویت عملگرها و وابستگی عملگرها شناخته می‌شوند. اگر دو عملگر با سطح اولویت یکسان هم قبل و هم بعد از یک عملوند بیایند، قانون وابستگی عملگر به کامپایلر می‌گوید که آن عملگرها را از سمت راست به چپ و یا چپ به راست به ترتیب اولویت بدهد. به عنوان مثال، در عبارت formula_1 اولویت عملگرهای ضرب و تقسیم، هر دو در یک سطح قرار دارند. از آنجا که ضرب و تقسیم از سمت چپ به راست ارزیابی می‌شود، جواب این عبارت formula_2 می‌شود. و همچنین مثال دیگری از این حالت codice_1 است. عملگرها به چهار دستهٔ وابسته (یعنی عملیات می‌تواند به صورت دلخواه گروه بندی شوند)، وابستهٔ چپ (به معنای این که عملیات‌ها از سمت چپ گروه بندی می شوند) و وابستهٔ راست (به معنای این که عملیات‌ها از سمت راست گروه بندی شده اند) یا غیر وابسته (به معنای این است که عملیات به دلیل ناسازگاری با نوع ورودی نمی‌تواند گروه بندی شود) تقسیم می‌شند. تعریف نوع وابستگی عملگرها و اولویت آن ها در تعریف زبان برنامه نویسی مشخص می‌شود. در زبان‌های برنامه‌نویسی مختلف ممکن است نوع وابستگی و اولویت برای یک عملگر متفاوت باشد.


title: وابستگی عملگر

text: برای فهم تفاوت این چهار دسته عبارت formula_3 را در نظر بگیرید. اگر کامپایلر عملگر ~ را وابسته ی چپ در نظر گرفت، این عبارت را به صورت formula_4 درنظر میگیریم. اگر کامپایلر عملگر formula_5 را وابستهٔ راست در نظر گرفت، این عبارت را به صورت formula_6 در نظر می‌گیریم. و اگر عملگر غیر وابسته بود، به ارور سینتکسی بر می‌خوریم یا ممکن است که این حالت با توجه به نوع تعریف عملگر معنای خاصی داشته باشد.


title: وابستگی عملگر

text: جدول وابستگی نشان دهنده ی نوع وابستگی هر عملگر موجود در آن زبان برنامه‌نویسی است. جدول زیر یک جدول اولویت در زبان جاوا است که نشان‌دهندهٔ نوع وابستگی هر عملگر موجود در این زبان است.


title: وابستگی عملگر

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


title: وابستگی عملگر

text: همان‌طور که ذکر شد، وابستگی عملگرها وقتی مطرح می‌شود که عملگرها دارای اولویت یکسانی باشند. به طور مثال عملگرهای ضرب و تقسیم اولویت یکسانی دارند. عبارت formula_7 را در نظر بگیرید. اگر وابستگی راست را برای این عملگرها اعمال کنیم، حاصل عبارت به صورت formula_8 محاسبه می‌شود. اما اگر وابستگی چپ را در نظر بگیریم، عبارت به صورت formula_9  به دست می‌آید.


title: وابستگی عملگر

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


title: وابستگی عملگر

text: برای درک بهتر عبارت codice_2 را با وابستگی راست در نظر بگیرید. یک تجزیه‌کننده که عبارت را از چپ به راست می‌خواند، با توجه به وابستگی راست عملگر codice_3 به صورت زیر عمل می‌کند:


title: وابستگی عملگر

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


title: وابستگی عملگر

text: اگر برای عملگر توانی وابستگی چپ در نظر گرفته شود، عبارت codice_17 به دست خواهد آمد.


title: وابستگی عملگر

text: عملگر مقداردهی (=) در اکثر زبان‌های برنامه‌نویسی دستوری با وابستگی راست تعریف شده‌است. همچنین مقداردهی به صورت یک اصطلاح تعریف می‌شود. تفاوت اصطلاح با عبارت این است که اگر در انتهای یک اصطلاح codice_18 اضافه کنیم، به عبارت تبدیل می‌شود. در نتیجه امکان مقداردهی زنجیره‌ای به وجود می‌آید و مقدار یک مقداردهی به عنوان ورودی به یک مقداردهی دیگر داده می‌شود.


title: وابستگی عملگر

text: به طور مثال در زبان C ، با اجرای مقداردهی formula_10 ، مقدار متغیر b در a قرار داده می‌شود. وابستگی راست عملگر مقداردهی این امکان را ایجاد می‌کند که اصطلاحاتی نظیر formula_11 به صورت formula_12 ترجمه شود و در نتیجه مقدار متغیر c در هر دو متغیر a و b قرار گیرد. اما در زبان C++ مقداردهی a = b وابستگی چپ دارد . لذا formula_11 به صورت formula_14 در می‌آید. و معادل با عبارات formula_15 عمل می‌کند.


title: هنس ویزویلر

text: هنس وایسوایلر (؛ – ) بازیکن فوتبال اهل آلمان بود.


title: هنس ویزویلر

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


title: ابراهیم داروغه‌زاده

text: ابراهیم داروغه‌زاده (زادهٔ ۱۳۴۹ در تهران) پزشک و سینماگر ایرانی است. او دبیری سه دورهٔ جشنوارهٔ فیلم فجر را از سال ۱۳۹۶ تا ۱۳۹۸ بر عهده داشته‌است.


title: ابراهیم داروغه‌زاده

text: داروغه‌زاده مدتی مدیرعامل مؤسسه رسانه‌های تصویری و مدتی نیز مدیرعامل مؤسسهٔ تصویر شهر بود. از دیگر سوابق مدیریتیِ او می‌توان به ریاست پخش شبکه چهار سیما و مدیریت گروه اجتماعی شبکه اول سیما اشاره کرد. داروغه‌زاده از خرداد ۱۳۹۶ تا تیر ۱۳۹۸ معاون ارزشیابی و نظارت سازمان سینمایی بود.


title: تجزیه و تحلیل جریان داده

text: تجزیه و تحلیل جریان داده یکی از روش‌هایی است که با استفاده از آن می‌توان اطلاعات مربوط به داده‌هایی که در نقاط مختلف یک برنامهٔ رایانه‌ای محاسبه می‌شوند را فراهم کرد. گراف روند کنترلی برای تعیین قسمت‌های برنامه که به تعریف یک متغیر یا مقداردهی یک متغیر منجر شده‌است، استفاده می‌شود. تحلیل جریان داده اطلاعاتی را تولید می‌کند که معمولاً کامپایلرها از آن برای بهینه‌سازی برنامه استفاده می‌کنند.


title: تجزیه و تحلیل جریان داده

text: در یک گراف کنترل جریان هر گره در گراف یک بلوک پایه را نشان می‌دهد. بلوک پایه مجموعه ای از دستورالعمل‌های متوالی است به طوری که هیچ دستور پرشی به این خطوط به جز خط اول وجود نداشته باشد و به جز خط آخر هیچ‌کدام ازین دستورها پرشی نباشند؛ در واقع این مجموعه دستورالعمل پشت سر هم و به ترتیب اجرا می‌شوند.


title: تجزیه و تحلیل جریان داده

text: یک راه ساده برای پیاده‌سازی تجزیه و تحلیل جریان داده این است که معادله جریان داده را برای هر گره از گراف روند کنترلی تنظیم کنیم و سپس به صورت محلی خروجی هر گره را از ورودی‌های آن محاسبه کنیم و این کار را تا زمانی که سیستم به نقطه ثابتی برسد تکرار کنیم.


title: تجزیه و تحلیل جریان داده

text: تجزیه و تحلیل جریان داده فرایند تولید اطلاعات دربارهٔ شیوه به کار رفتن متغیرهای تعریف شده در برنامه است و تلاش می‌کند اطلاعات خاصی را در هر نقطه از اجرا به دست بیاورد. معمولاً به دست آوردن این اطلاعات در محدودهٔ بلوک‌های پایه کفایت می‌کند؛ زیرا با استفاده از آن به راحتی می‌توان اطلاعات نقاط مختلف بلوک پایه را به دست آورد. در تحلیل جریان رو به جلو، حالت خروجی یک بلوک تابعی از حالت ورودی آن بلوک است. این تابع ترکیب اثرات عبارات موجود در بلوک می‌باشد. حالت ورودی یک بلوک تابعی از حالت‌های خروجی اجداد آن بلوک می‌باشد. در نتیجه مجموعه ای از معادلات جریان داده به دست می‌آید: برای هر بلاک b:


تجزیه و تحلیل جریان داده


title: تجزیه و تحلیل جریان داده

text: در این‌جا formula_3 تابع انتقال بلوک formula_4 می‌باشد. این تابع روی حالت ورودی formula_5 کار می‌کند و حالت خروجی formula_6 را نتیجه می‌دهد و formula_7 عملگر پیوند است که حالت‌های خروجی اجداد بلوک formula_4 را ترکیب کرده و حالت ورودی formula_4 را نتیجه می‌دهد.


title: تجزیه و تحلیل جریان داده

text: بعد از حل این مجموعه از معادلات، می‌توان از حالت‌های ورودی و خروجی بلوک‌ها برای استخراج ویژگی‌های برنامه در محدوده بلوک‌های پایه استفاده کرد. با اعمال کردن تابع انتقال هر عبارت به صورت جداگانه، می‌توان اطلاعات مطلوب را در هر نقطه از بلوک پایه به دست آورد.


title: تجزیه و تحلیل جریان داده

text: هر نوع خاصی از تحلیل جریان داده، تابع انتقال و عملگر پیوند خاص خود را دارد. برخی از مسئله‌های جریان داده، به تحلیل جریان رو به عقب نیاز دارند. این تحلیل به جز تابع انتقال و عملگر پیوند تقریباً مشابه تحلیل رو به جلو می‌باشد؛ تابع انتقال در این تحلیل روی حالت خروجی بلوک اعمال می‌شود و حالت ورودی آن را نتیجه می‌دهد و عملگر پیوند روی حالت‌های ورودی بلوک‌های فرزند اعمال شده و حالت خروجی یک بلوک را نتیجه می‌دهد.


title: تجزیه و تحلیل جریان داده

text: می‌توانید شمایی ساده از گراف کنترل جربان داده را در تصویر زیر مشاهده کنید:


title: تجزیه و تحلیل جریان داده

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


title: تجزیه و تحلیل جریان داده

text: همان‌طور که پیش تر گفته شد، در روش استفاده از الگوریتم‌های تکراری، تکرار الگوریتم تا زمانی ادامه پیدا می‌کند که به نقطه ثابتی برسد؛ پس برای اینکه در عمل بتوانیم از این روش استفاده کنیم، سیستم باید همگرا باشد. همگرایی سیستم با اعمال یک سری شرط روی دامنه مقادیر حالت‌ها، تابع انتقال و عملگر پیوند تضمین خواهد شد. این شروط عبارتند از: با وجود این دو شرط نتیجه یک تابع یکنوای کراندار است و یک تابع یکنوای کراندار حتماً همگرا است.


title: تجزیه و تحلیل جریان داده

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


title: تجزیه و تحلیل جریان داده

text: ترتیب پیمایش بلوک‌ها در فرایند اجرای الگوریتم روی کارایی الگوریتم و زمان اجرای آن، تأثیر مستقیم دارد. عامل مهم دیگری که در این بحث اهمیت دارد، رو به جلو یا رو به عقب بودن تحلیل در گراف روند کنترل می‌باشد. اگر تحلیل ما رو به جلو باشد، بهتر است اجداد هر گره در گراف، قبل از آن شده باشند؛ چرا که حالت هر بلوک وابسته به حالات اجداد آن در گراف خواهد بود و اگر قبل از دیدن هر گره اجداد آن دیده شده باشند، سرعت همگرایی الگوریتم بیشتر خواهد بود. اگر در گراف حلقه نداشته باشیم، می‌توان ترتیبی از بلوک‌ها را پیدا کرد که تنها با یک بار اجرای الگوریتم روی هر بلوک، مقدار نهایی و صحیح هر بلوک به دست آید. برخی از ترتیب‌های ممکن برای پیمایش گراف در اجرای الگوریتم عبارتند از:


title: تجزیه و تحلیل جریان داده

text: الگوریتم تکرار راند-رابین یکی از الگوریتم‌هایی است که برای حل مسائل تجزیه و تحلیل جریان داده از آن استفاده می‌شود. در این الگوریتم در هر نوبت تکرار الگوریتم، همه بلاک‌ها از نو پیمایش می‌شوند و تا رسیدن به نقطه ثابت تکرار ادامه خواهد داشت. شبه کد این الگوریتم مشابه شبه کد زیر است:


title: تجزیه و تحلیل جریان داده

text: ترتیب پیمایش گره‌ها در این روش ثابت است.


title: تجزیه و تحلیل جریان داده

text: این روش، مدل بهبود یافته‌ای از الگوریتم راند-رابین است. در این روش، تکرار تنها در بخشی از گراف که در حال تغییر است انجام می‌شود. در این الگوریتم پس از مقداردهی اولیه، یک لیست به نام لیست کار ایجاد می‌شود که در ابتدای الگوریتم همهٔ گره‌ها در این لیست قرار دارند. در هر مرحله، یک گره از لیست کار حذف می‌شود و اطلاعات مربوط به جریان دادهٔ آن، مشابه آنچه پیش تر توضیح داده شد، به روزرسانی می‌شود. اگر این به روزرسانی باعث تغییر در اطلاعات گره (حالت گره) شود، همهٔ گره‌هایی که این تغییر اطلاعات روی آنها تأثیر دارد به لیست کار اضافه می‌شوند و این فرایند تا خالی شدن لیست کار ادامه خواهد داشت. شبه کد این الگوریتم مشابه زیر است:


title: نهان‌سازی درخط

text: نهان‌سازی در خط یک تکنیک بهینه سازی است که در زمان اجرا انجام می‌شود، و در ابتدا برای زبان اسمال‌تاک پیاده‌سازی شده است. هدف از نهان‌سازی در خط سرعت بخشیدن به یافتن تابع مورد نظر به وسیله ذخیره‌سازی نتایج جستجوی قبلی به طور مستقیم در نقطه فراخوانی است. نهان‌سازی در خط به طور خاص مورد استفاده زبان‌های گونه پویا است که بیشتر یا تمام جستجوی تابع‌های آن‌ها در زمان اجرا اتفاق می‌افتد. در این موارد جداول توابع مجازی معمولاً قابل استفاده نیست.


title: نهان‌سازی درخط

text: تابع اکما اسکریپت زیر یک شیء را به عنوان ورودی دریافت می‌کند، تابع toString را فراخوانی کرده و نتایج را در صفحه‌ای که اسکریپت در آن تعبیه شده است نشان می‌دهد.  function dump(obj) {


title: نهان‌سازی درخط

text: برای دستیابی به عملکرد بهتر، بسیاری از زبان‌ها در زمان اجرا از نوعی نهان‌سازی غیر در خط (none_online) استفاده می‌کنند به این صورت که نتایج تعداد محدود و مشخصی از جستجوهای پویای تابع در ساختار داده‌ای مناسب ذخیره می‌شوند. این کار می‌تواند عملکرد را مقدار خوبی بهبود ببخشد به شرطی که نهان‌سازی برای برنامه های اجرا شده به صرفه باشد (یعنی تعداد محدودی از توابع وجود داشته باشد که به طور مکرر مورد استفاده قرار بگیرد). این ساختار داده معمولاً به عنوان حافظه نهان جستجوی تابع سطح اول نامیده می‌شود.


title: نهان‌سازی درخط

text: مفهوم نهان‌سازی در خط مبتنی بر این مشاهده تجربی است که اشیاء مورد استفاده در یک نقطه فراخوانی خاص معمولاً از یک نوع هستند. در این موارد ، با ذخیره کردن نتیجه جستجوی تابع به صورت "در خط"، یعنی مستقیماً در نقطه فراخوانی، می‌توان عملکرد را مقدار خوبی بهبود بخشید. برای تسهیل این فرایند، به نقاط فراخوانی وضعیت‌های مختلفی اختصاص داده می‌شود. در ابتدا، به یک نقطه فراخوانی وضعیت "ناشناخته" نسبت داده می‌شود. هنگامی که اجرای برنامه به یک نقطه فراخوانی خاص با وضعیت ناشناخته رسید، یک جستجوی پویای تابع انجام می‌شود و نتیجه را در نقطه فراخوانی ذخیره می‌کند و وضعیت آن نقطه فراخوانی به "تک‌ریخت" تغییر پیدا می‌کند. اگر اجرای برنامه دوباره به همان نقطه فراخوانی برسد، پذیرنده اصلی (تابع مقصد، تابعی که واقعاً باید اجرا شود و ممکن است در کلاس پدر شیء مورد نظر پیاده ساری شده باشد) را از آن بازیابی می‌کند و مستقیماً بدون انجام هرگونه جستجوی بیشتر، آن را فراخوانی می‌کند. برای آن که احتمال وجود انواع مختلفی از اشیاء در یک نقطه فراخوانی وجود دارد، زبان برنامه‌نویسی در زمان اجرا باید شرایط محافظت را درون کد وارد کند (چک کند که نوع شیءای که تابع آن فراخوانی شده با نوع قبلی و مورد انتظار آن برابر باشد). به طور معمول برای پیاده‌سازی این موارد از نقطه فراخوانی استفاده نمی‌شود و در بخشی به نام مقدمه پذیرنده (بخشی که پیش از اجرای تابع مقصد، فراخوانی می‌شود) قرار می‌گیرند تا بتوان از پیش‌بینی‌کننده پرش بهتری استفاده کرد. با این کار به جای چندبار کپی کردن در نقاط فراخوانی مختلف یک بار شرایط محافظت در مقدمه پذیرنده قرار می‌گیرد در نتیجه فضای کمتری اشغال می‌شود. اگر نقطه فراخوانی در وضعیت "تک‌ریخت" با نوع دیگری شیء، غیر از آنچه انتظار دارد مواجه شود، باید مجدداً به حالت "ناشناخته" تغییر یابد و دوباره یک جستجوی پویای تابع انجام شود.


title: نهان‌سازی درخط

text: پیاده‌سازی ابتدایی با استفاده از یک ثبات و یک دستورالعمل فراخوانی است. با رسیدن به نقطه فراخوانی، مقدار ثبات با آدرس شیءای که تابع را فراخوانده است بارگذاری می‌شود (در مثال بالا آدرس obj که تابع toString را فراخوانی کرده در ثبات قرار می‌گیرد) اگر نقطه فراخوانی در وضعیت ناشناخته باشد دستورالعملی اجرا می‌شود که با استفاده از حافظه نهان جستجوی تابع سطح اول که در بالا اشاره شد، تابع مقصد (پذیرنده) را پیدا می‌کند، سپس وضعیت نقطه فراخوانی به "تک‌ریخت" تغییر پیدا می‌کند.


title: نهان‌سازی درخط

text: اگر نقطه فراخوانی در وضعیت "تک‌ریخت" باشد، در زمان اجرا دستورالعمل‌ها جای‌گذاری می‌شوند، به این صورت که فراخوانی یافتن تابع اصلی با فراخوانی مقدمه پذیرنده تعویض می‌شود (که پیش از این بوسیله جستجوی پویای تابع یافت شده بود). اکنون پیوند نقطه فراخوانی با تابع هدف (پذیرنده) ایجاده شده است. در مقدمه پذیرنده، شرایط محافظت نوشته شده است که در آن مطابقت نوع شیء فعلی (که در ثبات ذخیره شده) با نوع شیء مورد انتظار بررسی می‌شود، اگر نوع شیءها تطبیق داده شوند تابع به اجرای خود ادامه می‌دهد به عبارتی اجرای تابع هدف بلافاصله پس از اجرای مقدمه انجام می‌شود، در غیر این صورت اجرا به نقطه فراخوانی بازمی‌گردد و استراتژی های مختلفی امکان پذیر است، به عنوان مثال می‌توان وضعیت نقطه فراخوانی را به حالت "ناشناخته" تغییر داده و نهان‌سازی خطی را برای نوع شیء جدید انجام داد.


title: نهان‌سازی درخط

text: "نهان‌سازی در خط" در مقایسه با "حافظه نهان جستجوی تابع سطح اول" به جای استفاده از انتخاب‌گر (که وظیفه آن انتخاب تابع هدف مناسب به ازای نوع شیء مورد نظر می‌باشد) فقط یک بررسی نوع شیء دارد و همچنین به جای یک فراخوانی غیرمستقیم یا استفاده از جداول توابع مجازی، از یک فراخوانی مستقیم استفاده می‌کند (که برای بارگذاری چند دستور همزمان و همچنین پیاده سازی خط لوله مفید است)، به همین دلیل نهان‌سازی در خط کارایی بهتری دارد.


title: نهان‌سازی درخط

text: نهان‌سازی در خط با توجه به میزان کارایی و پیچیدگی، انواع مختلفی دارند که عموماً هر حالت، تکمیل کننده حالت قبلی است.


title: نهان‌سازی درخط

text: اگر انواع مختلفی از اشیاء از یک نقطه فراخوانی مشاهده شود، عملکرد نهان‌سازی در خط به دلیل تغییرات مکرر وضعیت نقطه فراخوانی تضعیف می‌شود، چرا که با دیدن اشیا از نوع مختلف هر بار باید عملیات تغییر وضعیت و جستجوی پویای تابع را انجام بدهد. مثال زیر یک سناریوی بدترین حالت برای نهان‌سازی در خط تک‌ریخت را نشان می‌دهد: (فرض کنید یافتن تابع toString برای متغیرهای int و string هزینه‌ای فراتر از فراخوانی مستقیم یک تابع دارد)  var values = [1, "a", 2, "b", 3, "c", 4, "d"]; for (var i in values) {


title: نهان‌سازی درخط

text: برای تعامل بهتر با نقاط فراخوانی که تعداد محدودی از انواع مختلف اشیاء را مشاهده می‌کنند، برخی از زبان‌ها از تکنیکی به نام نهان‌سازی در خط چندریخت استفاده می‌کنند. با نهان‌سازی در خط چندریخت، وضعیت سومی به نام "چندریخت" برای نقطه فراخوانی به وجود می‌آید. هنگامی که نقطه فراخوانی نوع جدیدی از شیء را مشاهده می‌کند به جای تغییر وضعیت از "تک‌ریخت" به "ناشناخته"، به حالت جدیدی به نام "چندریخت" تعویض می‌شود. یک نقطه فراخوانی "چندریخت" مجموعه محدودی از توابع شناخته شده را ذخیره می‌کند، و با توجه به نوع شیء تصمیم می‌گیرد که کدام‌یک را به عنوان تابع هدف معرفی کند. به عبارت دیگر، با نهان‌سازی در خط چندریخت، نتایج جستجوی چند تابع را می‌توان در همان نقطه فراخوانی ذخیره کرد. از آنجا که هر نقطه فراخوانی در یک برنامه می‌تواند انواع مختلفی از اشیاء را ببیند، معمولاً یک حد بالا برای تعداد انواع ذخیره شده وجود دارد که پس از رسیدن به این حد بالا، وضعیت نقطه فراخوانی به یک حالت جدید به نام "بس‌ریخت" تغییر پیدا می‌کند و نهان‌سازی بیشتری انجام نمی‌شود.


title: نهان‌سازی درخط

text: اجرای ابتدایی به صورت یک جدول پرش متشکل از یک مقدمه است که نوع شیء مورد نظر را دریافت کرده و پس از انجام چندین مقایسه تعیین می‌کند کدام پرش باید انجام شود. جدول پرش به طور معمول به یک نقطه فراخوانی اختصاص می‌یابد که با انواع مختلفی از اشیاء روبرو می‌شود. اندازه جدول پرش ثابت است و با افزودن مقادیر جدید قادر به رشد می‌باشد، حداکثر اندازه این جدول عدد کوچکی مانند ۴ یا ۶ یا ۸ می‌باشد. با دریافت یک نوع شیء جدید در حالتی که جدول به حداکثر اندازه خود رسیده است، برنامه به صورت عادی اجرا می‌شود و "حافظه‌نهان جستجوی تابع سطح اول" مجدداً فراخوانی می‌شود.


title: نهان‌سازی درخط

text: اگر در زمان اجرا از هر دو نهان سازی خطی "تک‌ریخت" و "چندریخت" استفاده شود، در حالت پایدار (یعنی حالتی که انواع مختلف اشیاء دیده شده باشد) نقطه فراخوانی تنها در حالتی وارد وضعیت ناشناخته می‌شود که جدول مربوط به نهان‌سازی چندریخت به حداکثر اندازه خود رسیده باشد. از آنجا که رسیدگی به چنین وضعیتی کند و هزینه‌بر است، از یک وضعیت جدید برای حل آن استفاده می‌شود. یک نهان‌سازی در خط بس‌ریخت با ایجاد کد برای ایجاد حافظه‌نهان جستجوی تابع سطح اول برای یک نقطه فراخوانی خاص، بهینه‌سازی لازم را انجام می‌دهد. در وضعیت "چندریخت" با عبور از اندازه حداکثری، نهان‌سازی بس‌ریخت وارد عمل شده و کد مربوطه را تولید می‌کند (یا اگر موجود بود از همان استفاده می‌کند)، سپس کد مربوطه اجرا شده و تابع هدف به نقطه فراخوانی متصل می‌شود. کد می تواند به طور قابل ملاحظه‌ای کارآمدتر از یک حافظه نهان جستجو تابع سطح اول عادی باشد زیرا اسم تابعی که به دنبال آن است در حال حاضر ثابت است، که ذخیره‌سازی در ثبات را آسان‌تر می‌کند.


title: نهان‌سازی درخط

text: بررسی‌ها و اندازه‌گیری‌های تجربی نشان می‌دهد پس از اعمال نهان‌سازی در خط در برنامه‌های بزرگ اسمال‌تاک حدود یک سوم از نقاط فراخوانی در حالت ناشناخته باقی می‌مانند و از دو سوم باقی مانده، ۹۰٪ در وضعیت تک‌ریخت، ۹٪ در وضعیت چندریخت و ۱٪ در وضعیت بس‌ریخت هستند.  __نمایه__


title: گاوگوزن تورا

text: گاوگوزن تورا نام یک زیرگونه از گونه گاوگوزن است.


title: دم‌چلچله‌ای نوارخامه‌ای

text: دم‌چلچله‌ای نوارخامه‌ای نام یک گونه از سرده فرانه‌ها است.


title: گوندر بنگتسون

text: گوندر بنگتسون (; – ) مربی فوتبال اهل سوئد بود.


title: گوندر بنگتسون

text: وولرنگا


title: گوندر بنگتسون

text: گوتبورگ


title: گوندر بنگتسون

text: پاناتینایکوس


title: آلبرتو مالسانی

text: آلبرتو مالسانی (؛ زادهٔ ) بازیکن فوتبال سابق و اهل ایتالیا است.


title: آلبرتو مالسانی

text: از باشگاه‌هایی که در آن بازی کرده‌است می‌توان به باشگاه فوتبال ساسوئولو اشاره کرد.


title: توابع کلاس اول

text: به یک زبان برنامه‌نویسی در علوم کامپیوتر، دارای تابع کلاس اول گفته می‌شود اگر آن زبان با توابع خود به صورت شهروند درجه‌ی اول رفتار کند. این موضوع به این معنی است که زبان مورد نظر از چنین کارهایی پشتیبانی کند:


title: توابع کلاس اول

text: برخی از نظریه‌داران حوزه‌ی زبان‌های برنامه‌نویسی برای توابع کلاس اول، علاوه بر موارد بالا، پشتیبانی از توابع ناشناس (anonymous functions) را نیز الزامی می‌دانند. در زبان‌هایی که توابع کلاس اول دارند، نام تابع هیچ معنای خاص یا ویژه‌ای ندارد و همانند متغیرهای معمولی رفتار می‌شود با این تفاوت که نوع آن متغیر، از نوع تابع است. اصطلاح توابع کلاس اول برای اولین بار توسط شخص کریستوفر استراچی به کار برده شده است. او برای اولین بار در مورد رفتار زبان‌های برنامه‌نویسی با توابع به صورت شهروند درجه‌ی اول در اواسط دهه‌ی ۱۹۶۰ میلادی در مقاله‌ای به نام مفاهیم بنیادی در زبان‌های برنامه‌نویسی (Fundamental Concepts in Programming Languages) نوشته بود.


title: توابع کلاس اول

text: توابع کلاس اول برای برنامه‌نویسی تابعی الزامی هستند. در برنامه‌نویسی تابعی استفاده از تابع مرتبه‌ی بالا متداول است و توابع کلاس اول در این بخش لازم هستند. یک مثال ساده از چنین تابع مرتبه‌ی بالا، تابع filter است که به عنوان آرگومان و ورودی خود یک تابع و یک لیست می‌گیرد و در نهایت یک لیست جدید برمی‌گرداند که تابع مورد نظر بر روی هر یک از اعضای لیست اعمال شده است و لیست جدید فیلتر شده است. برای اینکه یک زبان برنامه‌نویسی بتوان از تابعی چون پشتیبانی کند، آن زبان حتماً باید بتواند یک تابع را به عنوان آرگومان تابعی دیگر بپذیرد.


title: توابع کلاس اول

text: در این بخش نحوه‌ی پیاده‌سازی یا شبیه‌سازی اصطلاحات مختلف برنامه‌نویسی در زبان‌های دارای تابع کلاس اول (هسکل و پایتون) و زبان‌های فاقد آن (سی)، بررسی می‌شود.


title: توابع کلاس اول

text: توابع مرتبه‌ی بالا، توابعی هستند که حداقل یک تابع در آرگومان‌های ورودی یا خروجی آن وجود داشته باشد. بقیه‌ی توابع، توابع مرتبه‌ی اول هستند.


title: توابع کلاس اول

text: در زبان‌هایی که دارای توابع کلاس اول هستند، توابع می‌توانند مانند متغیرهای معمولی، به عنوان ورودی به توابع دیگر داده شوند. بنابراین برای پیاده‌سازی توابع مرتبه‌ی بالا، بهتر است که زبان مورد نظر از توابع کلاس اول پشتیبانی کند. این توابع به دو صورت می‌توانند از توابع کلاس اول استفاده کنند: زمانی که آرگومان‌های ورودی تابع، تابع باشند و زمانی که خروجی تابع، یک تابع باشد.


title: توابع کلاس اول

text: در زبان پایتون داریم: def addition(n):


title: توابع کلاس اول

text: numbers = (1, 2, 3, 4) result = map(addition, numbers) در زبان هسکل داریم: map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x:xs) = f x : map f xs زبان‌هایی که از توابع کلاس اول پشتیبانی نمی‌کنند، معمولاً با استفاده از قابلیبت‌هایی همچون اشاره‌گر به تابع یا نماینده‌ها، توابع مرتبه‌ی بالا را پیاده‌سازی می‌کنند. مثلاً در زبان سی داریم: void map(int (*f)(int), int x[], size_t n) {


title: توابع کلاس اول

text: توابع کاری، توابعی هستند که چندین آرگومان را به صورت یکی پس از دیگری، به عنوان ورودی می‌گیرند: در ابتدا یک آرگومان یا پارامتر را می‌گیرد و سپس تابعی برمی‌گرداند که آرگومان بعدی را می‌گیرد و به همین ترتیب ادامه می‌دهد تا تمامی پارامترها به تابع داده شوند. در این مرحله، تابع محاسبه می‌شود و مقدار نهایی برگردانده می‌شود.


title: توابع کلاس اول

text: نام این توابع از اسم منطق‌دان معروف، هسکل کاری آمده است.


title: توابع کلاس اول

text: در زبان پایتون داریم: def compose(g, f): در زبان هسکل داریم: multThree :: (Num a) => a -> a -> a -> a multThree x y z = x * y * z در زبانی همانند سی که در آن از توابع کلاس اول پشتیبانی نمی‌کند، پیاده‌سازی توابع کاری با استفاده از اشاره‌گر به تابع و توابع متغیر امکان پذیر است. هر چند این گونه پیاده‌سازی‌ها، مشکلات خود را دارند: توابع کاری نمی‌توانند از لحاظ نوع متغیر بررسی یا چک شوند. همچنین چون این در این توابع تعداد آرگومان‌ها و نوع آن‌ها مشخص نیست، میزان حافظه‌ای که برنامه باید برای هر متغیر اختصاص بدهد، در ابتدا معلوم نیست و برنامه اندازه‌ی تمام متغیرها را به صورت اندازه‌ی یک عدد صحیح (integer) در نظر می‌گیرد.


title: توابع کلاس اول

text: توابع ناشناس، توابعی هستند که نام مشخصی ندارند. در زبان‌هایی که از توابع ناشناس پشتیبانی می‌شود، می‌توان تابع را به عنوان یک آرگومان به یک تابع مرتبه‌ی بالا ورودی داد.


title: توابع کلاس اول

text: در زبان پایتون داریم: main_function = lambda x: x * 2 در زبان هسکل داریم: main = map (\x -> 3 * x + 1) [1, 2, 3, 4, 5] در زبان سی داریم: int f(int x) {


title: توابع کلاس اول

text: int main() {


title: توابع کلاس اول

text: همانطور که بحث برابری بین متغیرها در زبان‌های برنامه‌نویسی مطرح است، در این زمینه نیز منطقی است که سؤال شود که آیا در مورد توابع هم می‌توان برابری آن‌ها را سنجید یا خیر. این سؤال ساده‌ای نیست و لازم است بین انواع برابری توابع تمایز قائل شود:


title: توابع کلاس اول

text: دو تابع f و g را برابر به صورت گسترده می‌نامند اگر به ازای هر ورودی، خروجی برابری داشته باشند. با این تعریف، هر نوع پیاده‌سازی از انواع الگوریتم‌های مرتب‌سازی برابر هستند. نتیجه‌گیری در مورد برابری توابع به صورت گسترده، امکان‌پذیر نیست و حتی در مورد توابعی که ورودی‌های محدودی دارند، امر ساده‌ای نیست. بنابراین زبان‌های برنامه‌نویسی برابری تابع‌های خود را به صورت برابری گسترده پیاده‌سازی نمی‌کنند.


title: توابع کلاس اول

text: دو تابع f و g را برابر به صورت فشرده می‌نامند اگر ساختار داخلی یکسانی داشته باشند. پیاده‌سازی این نوع برابری نیز در زبان‌های برنامه‌نویسی راحت نیست.


title: توابع کلاس اول

text: از آنجایی که پیاده‌سازی دو برابری بالا امکان‌پذیر نیست، بیشتر زبان‌های برنامه‌نویسی برای بررسی برابری توابع، از این نوع برابری استفاده می‌کنند. در این نوع برابری، تمام توابع با استفاده از یک علامت مشخص می‌شوند و برابری دو تابع بر اساس برابری علامت آن‌ها تعیین می‌شود. دو تابع کاملاً برابر که به صورت جدا تعریف شده‌اند، در این تعریف برابر نخواهند بود.


title: توابع کلاس اول

text: پشتیبانی از توابع کلاس اول در زبان‌های مختلف به صورت زیر است:


title: صالح سخندان

text: صالح سخندان (زاده ۵ آبان ۱۳۶۹ در تهران) طراح آثار حوزه هنری دیدمانی و خطای دید سه‌بعدی و بنیان‌گذار ویداوین و استودیو صالسو است که به خاطر آثارش به نام "آقای خطای دید" نیز شناخته می‌شود. سخندان دانشجوی مهندسی برق بود که به خاطر علاقه‌اش به حوزه هنری خطای دید از دانشگاه انصراف داد. او پیش از آشنایی با خطای دید تجربهٔ کار در زمینه گرافیک را داشت. سخندان در سبک هنری خود آثار شخصی و تجاری زیادی برجای گذاشته‌است و با شرکت در مسابقه تلویزیونی "عصر جدید" هنر خود را در تلویزیون صدا و سیما نیز به نمایش گذاشت.


title: صالح سخندان

text: صالح سخندان ۵ آبان ۱۳۶۹ در تهران متولد شد. به خاطر علاقهٔ خود به مهندسی، هنر و ریاضیات و تجربهٔ کار در زمینه گرافیک به کاربرد این سه رشته در آثارش تمایل داشت. در سال ۱۳۸۹ در حالی که ۲ سال از دوران تحصیلاتش در رشتهٔ مهندسی برق دانشگاه صنعتی خواجه نصیرالدین طوسی می‌گذشت با حوزه هنری خطای دید آشنا شد و اولین پروژه خود را در زمینه واریخت‌سازی تابلوها گرفت و پس از یک سال در سال ۱۳۹۰ این پروژه را به اتمام رساند.


title: صالح سخندان

text: علاقه‌مندی سخندان به حوزه هنری واریخت و تجربه انجام پروژه‌های گرافیکی برای سازمان‌ها و شرکت‌ها مقدمه‌ای بود تا از دانشگاه انصراف دهد و از سال ۱۳۹۰ به‌طور تخصصی به مطالعه و طراحی در زمینه خطای دید بپردازد. اولین نمود فعالیت صالح سخندان در حوزه خطای دید، نقاشی سه بعدی بود اما اولین تجربه او نبود. او همچنین پیشگام نقاشی سه بعدی دیجیتال در دنیا است.


title: صالح سخندان

text: سخندان در سال‌های فعالیت خود صدها اثر شخصی و پروژه تجاری انجام داده‌است که به صورت کلی می‌توان به ساخت پارک‌ها، موزه‌های بزرگ، طراحی گرافیکی و مجسمه‌سازی بر اساس خطای دید و چیدمان‌های خاص و نقاشی‌های سه بعدی اشاره کرد. رؤیا پارک (واقع در دارآباد)، خانهٔ وارونه (واقع در پارک جنگلی چیتگر) و ایلوژنا (واقع در ایران مال) از نمونه آثار او در شهر تهران است.


title: صالح سخندان

text: از سال ۱۳۹۳ به تولید پرداخت و اولین محصول خود را در قالب برچسب ارائه نمود که با برچسب‌های متداولی که در حوزه دکوراسیون استفاده می‌شد، متفاوت بود.


title: صالح سخندان

text: در اسفند ۱۳۹۴ صالح سخندان گروهی هنری به نام «آقای خطای دید» از هنرمندان فعال در حوزه هنری خطای دید با تجربه مطالعاتی و طراحی از سال ۱۳۹۰ تشکیل داد که آثار متعددی از این گروه در فضای مجازی منتشر شده‌است.


title: صالح سخندان

text: آثار هنری خطای دید، آثاری هستند که در نگاه اول آن چیزی که به نظر می‌رسند، نیستند و حتی بی‌نظم و درهم‌وبرهم به نظر می‌آیند اما در زاویه‌ای خاص معنادار می‌شوند. به گفتهٔ سخندان تحصیلات دانشگاهی و حتی کتاب جامعی که به این موضوع پرداخته باشد، وجود ندارد و یک موضوع بین رشته‌ای، ترکیبی از پزشکی، هنر، مهندسی است که برای فعالیت در این زمینه نیاز داریم با نحوه کارکرد مغز و سیستم بینایی و مباحث هندسه، نور و فیزیک آشنا باشیم.


title: صالح سخندان

text: صالح سخندان در کشیدن آثارش از روش بداهه و ایده بدون طرح اولیه استفاده می‌کند. در ابتدا آثاری که با خطای دید خلق می‌کرد به دلیل تازگی این موضوع جدی گرفته نمی‌شد اما به مرور با انتشار عکس آثارش در اینترنت و شبکه‌های اجتماعی بیشتر از قبل مورد توجه قرار گرفت و حوزه هنری خطای دید و کاربرد آن در صنایع و به خصوص در تبلیغات و سرگرمی بیش از پیش شناخته شد.


title: صالح سخندان

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


title: صالح سخندان

text: در سال ۱۳۸۹ سخندان کار خود را با طراحی دگرگون چند سطحی تابلوهای پارکینگ مجتمع تجاری تیراژه ۲ آغاز کرد. این تابلوها به منظور راهنمایی راننده‌ها به سمت در خروجی و طبقات مختلف پارکینگ استفاده شده‌است.


title: صالح سخندان

text: در سال ۱۳۹۱ اولین نقاشی سه بعدی خود را در پارک چیتگر تهران با استفاده از زغال و گچ رنگی در متراژ ۱۷ متر مربع کشید. این اثر بعد از یک روز با بارش باران به علت استفاده از گچ رنگی درکشیدن اثر از روی زمین پاک شد.


title: صالح سخندان

text: در سال ۱۳۹۲ به سفارش شهرداری تهران در بوستان هنرمندان نقاشی سه‌بعدی برج میلاد را با استفاده از رنگ اکرولیک بر روی زمین کشید.


title: صالح سخندان

text: در سال ۱۳۹۴ به سفارش تداکس تهران لوگوی کنفرانس پارادایم نو را طراحی نمود در سال ۱۳۹۷ اولین موزه خطای دید ایران به نام رؤیا پارک در مجموعه موزه‌های دارآباد با طراحی و نظارت صالح سخندان ساخته شد و در فروردین ۱۳۹۸ افتتاح شد. تمام این مجموعه به صورت صددرصدی توسط متخصصان و طراحان تیم مهندسی-هنری "آقای خطای دید" بدون بهره‌گیری از مهندسان و طراحان خارجی ساخته شد. وجود المان‌های ایرانی در بخش‌های مختلف این مجموعه مانند قالیچه پرنده، آرش کمانگیر، سیمرغ، یوزپلنگ ایرانی حس بومی بودن این اثر را برای بازدیدکننده‌ها تداعی می‌کند.


title: صالح سخندان

text: در آبان ۱۳۹۸ سخندان پروژه خانه وارونه را در دریاچه چیتگر با سوژه اتاق‌های وارونه آغاز کرد. موزه‌های زیادی در دنیا با این سوژه که به نام Upside Down شناخته شده‌است، وجود دارد. پیش از این پروژه نیز سه جاذبه اتاق وارونه در موزه رؤیا پارک اجرا شده بود اما خانه وارونه تهران اولین مجموعه اختصاصی با محوریت اتاق‌های وارونه در ایران است که در بهمن ۱۳۹۸ افتتاح شد.


title: صالح سخندان

text: در آذر ۱۳۹۸ به درخواست معاونت فرهنگی هنری مترو تهران صالح سخندان در ایستگاه متروی دکتر شریعتی تهران چیدمان خطای دید از پرتره علی شریعتی را خلق کرد. در این چیدمان از کتاب‌های شریعتی استفاده شده که با تماشای نقاشی روی سطوح مختلف آن‌ها از زاویهٔ‌ای خاص، تصویر پرتره علی شریعتی دیده می‌شود.


title: صالح سخندان

text: صالح سخندان در فصل دوم مسابقه تلویزیونی "عصر جدید" در زمینه هنری برای نمایش استعداد خود در زمینه خطای دید شرکت نمود. با پذیرش در مرحله راستی‌آزمایی این فصل از مسابقه برای اجرا در مرحله اول انتخاب شد. سخندان با اولین اجرای خود در قسمت نهم مرحله اول این مسابقه از داوران سید بشیر حسینی، رؤیا نونهالی و امین حیایی زنگ سفید (رای بله داوران) و از آریا عظیمی‌نژاد زنگ قرمز (رای نه داوران) دریافت نمود. اجرای سخندان تلفیقی از هنر نقاشی و مهندسی بود که در پایان با ترکیب هدفمندی از بی‌نظمی‌ها نتیجه غافلگیرکننده‌ای برای داوران به وجود آورد. در بخش فینال این قسمت از میان شرکت‌کنندگان به عنوان یکی از دو نفر منتخب داوران به مرحله دوم راه یافت.


title: صالح سخندان

text: سخندان برای دومین اجرای خود در قسمت نهم مرحله دوم این مسابقه نیز موفق شد از همهٔ داوران زنگ سفید (رای بله داوران) دریافت نماید.


title: قطع‌کردن (برنامه‌نویسی)

text: در طراحی زبان رایانه ای، قطع کردن(به انگلیسی: stropping) روشی است که توالی ای از حروف را به داشتن خاصیتی ویژه مانند واژه رزروشده، نوع خاصی از متغیر یا مکان حافظه علامت گذاری می‌کند و به این ترتیب فضای نام متفاوتی از اسم‌های معمولی (شناساگرها) خواهند داشت تا از مشابهت غلط آن‌ها جلوگیری شود. این روش در بیشتر زبان‌های مدرن استفاده نمی‌شود - به جای آن کلمات کلیدی، کلمات رزرو شده هستند و نمی‌توان به عنوان شناساگر از آن‌ها استفاده کرد. استروپینگ اجازه می‌دهد تا از همان دنباله حروف هم به عنوان کلمات کلیدی و هم به عنوان شناساگر استفاده کرد، و به این ترتیب عمل تجزیه را ساده‌تر می‌کند. برای مثال اجازه می‌دهد نام متغیری if باشد، بدون اینکه با کلمه کلیدی if تداخل داشته باشد. استروپینگ در درجه اول در دهه ۱۹۶۰ با الگول و زبانهای مرتبط همراه بود. اگرچه این روش استفاده‌های مدرن دارد، اما با سایر تکنیک‌های مشابه که از نظر ظاهری شباهت زیادی دارند، به راحتی اشتباه گرفته می‌شود.


title: قطع‌کردن (برنامه‌نویسی)

text: روش قطع کردن در توسعه الگول در دهه ۱۹۶۰ پدید آمد که از آن برای تمایزهای تایپی مختلف (boldface و underline) استفاده می‌شد که در زبان نشر استفاده می‌شده‌است و نمی‌تواند مستقیماً در زبان سخت‌افزاری نشان داده شود. یک ماشین‌تحریر می‌تواند دارای نویسه‌های bold باشد، اما در مورد کدگذاری در کارت‌های پانچ، هیچ کاراکتر Boldای وجود ندارد. اصطلاح «قطع کردن» در الگول ۶۰، از اپاستروف به وجود آمد، زیرا برخی از پیاده سازیهای الگول ۶۰ از آپوستروف‌ها در اطراف متن استفاده می‌کردند تا نشان دهندهٔ مهم بودن آن باشند. برای مثال codice_1 نشان دهندهٔ کلمهٔ کلیدی «اگر» است. این روش در الگول۶۸ نیز بسیار مهم است، که در آن روش‌های مختلف بریدن، معروف به رژیم‌های بریدن(stropping regimes)، استفاده شده‌است. آپاستروف‌های اصلی الگول ۶۰ به‌طور گسترده مورد استفاده قرار نگرفت در صورتی که حروف بزرگ بیش‌تر رایج بود. مانند codice_2 و codice_3 که روش بریدن برای همهٔ این‌ها اعمال می‌شود.


title: قطع‌کردن (برنامه‌نویسی)

text: گسترهٔ وسیعی از دستور زبان‌های مختلف برای قطع کردن استفاده شده‌است: در حقیقت، اغلب اینگونه است که چندین قرارداد قطع کردن ممکن است در یک زبان مورد استفاده قرار گیرد. به عنوان مثال، در الگول۶۸ انتخاب بین "بریدن"های مختلف را می‌توان با یک دستورالعمل کامپایلر (عملگر در واژه‌شناسی الگول) که به صورت "نقطه" (POINT)، "بالایی"(UPPER)، "نقل و قول"(QUOTE) یا "عطف به"(RES) نامیده می‌شوند، انتخاب کرد. نظام‌های مختلف قواعد یک ویژگی واژگانی برای کاراکترهای منقطع شده (stropped) هستند، هر چند در برخی موارد، این تفسیرها، تفاسیر ساده‌ای دارند: در آپاستروف تنها(single apostrophe) و نظام نقطه‌ای، اولین کاراکتر به عنوان یک کاراکتر فرار عمل می‌کند، در حالی که در نظام‌های آپاستروف، به عنوان حائل عمل می‌کنند. مثال دیگر: برنامه‌های ALGOL 68RS حتی در یک پردازنده یک زبان نیز می‌توانند از چندین نوع روش قطع کردن استفاده کنند.


title: قطع‌کردن (برنامه‌نویسی)

text: توجه داشته باشید به دستورالعمل پیشرو pr (مخفف pragmat)، که خود به سبک نقطه یا نقل قول قطع می‌شوند، و همچنین برای کامنت (از "") تنظیم شده‌است - به الگول ۶۸: عناصر مهم زبانی مراجعه کنید. به دلایل مختلف فورترن۷۷ دارای این مقادیر "منطقی" و عملگرها است: .TRUE., .FALSE., .EQ., .NE., .LT., .LE., .GT., .GE., .EQV., .NEQV., .OR., .AND., .NOT.


title: قطع‌کردن (برنامه‌نویسی)

text: .AND., .OR. و .XOR. همچنین در تست‌های ترکیبی در عبارت‌های codice_3 و codice_13 در پرونده‌های دسته ای که تحت پردازنده‌های خط فرمان JP Software مانند 4DOS , 4OS2 و 4NT / Take Command اجرا می‌شوند، استفاده شده‌اند.


title: قطع‌کردن (برنامه‌نویسی)

text: اکثر زبان‌های مدرن کامپیوتر از روش قطع کردن (stropping) استفاده نمی‌کنند، با دو استثنا قابل توجه:


title: قطع‌کردن (برنامه‌نویسی)

text: استفاده از زبانهای زیادی در Microsoft's .NET Common Language Infrastructure (CLI) به روشی برای استفاده از متغیرها به زبانی متفاوت نیاز دارد که ممکن است در یک زبان مکالمه کلمات کلیدی باشند. این کار گاهی اوقات با پیشوندهایی مانند codice_14 در #c یا شناسه در براکت‌ها در ویژوال بیسیک دات‌نت انجام می‌شود. دومین نمونه مهم در بسیاری از پیاده‌سازی‌های ساختار، جستجوی زبان است. در این زبانها کلمات محفوظ با محدود کردن واژگان از آنها به عنوان ستون، جدول یا نام متغیر قابل استفاده هستند. به صورت استاندارد کلمات محصور شده با " " مشخص می‌شوند اما در عمل مکانیسم دقیق با اجرا تغییر می‌کند؛ برای مثال، مای‌اس‌کیوال اجازه می‌دهد که واژه‌های رزرو شده در زمینه‌های دیگر با استفاده از محصور کردن آنها توسط backticks انجام شود یا مایکروسافت اس‌کیوال سرور از براکت‌های مربعی استفاده می‌کند. قطع کردن(stropping) نیز می‌توانند در زبان برنامه‌نویسی Nim مورد استفاده قرار گیرند. در زبان Nim کلمه رزرو شده می‌تواند به عنوان یک شناسه با ضمیمه کردن آن در براکت استفاده شود. نمونه‌های دیگری نیز وجود دارند. برای مثال، Web IDL از یک زیرخط codice_15 برای نشانه‌گذاری شناسه‌ها استفاده می‌کند که در غیر این صورت با کلمات محفوظ برخورد می‌کند.


title: قطع‌کردن (برنامه‌نویسی)

text: در ابتدا در کامپایلر، قطع نکردن (unstropping) در طول مرحله بازسازی خط اول رخ می‌داد، که همچنین فضاهای خالی را نیز از بین می‌برد. پس از آن تجزیه و تحلیل بدون اسکنر (بدون نشانه گذاری) دنبال شد که در دهه ۱۹۶۰، برای الگول استاندارد بود. در استفاده مدرن، قطع نکردن(unstropping) به عنوان بخشی از تحلیل واژگانی انجام می‌شود. یک امر واضح این است اگر فرد واژگان را به دو مرحله اسکنر و ارزیاب متمایز کند: اسکنر رشته قطع شده(stropped) را در طبقه‌بندی به درستی دسته‌بندی می‌کند و سپس ارزیاب هنگام محاسبه مقدار از تکنیک جدانکردن (unstrops) استفاده می‌کند. به عنوان مثال، در زبانی که زیرخط codice_15 در اول کلمه برای بریدن شناسه‌ها برای جلوگیری از برخورد با کلمات محفوظ استفاده می‌شود، دنباله codice_17 به عنوان یک شناسه (نه به عنوان کلمه رزرو شده در صورت) توسط اسکنر طبقه‌بندی می‌شود سپس ارزیاب این مقدار را به عنوان نوع-نشانه codice_18 مقدار خواهد داد.


title: قطع‌کردن (برنامه‌نویسی)

text: تعدادی روش مشابه وجود دارند که به‌طور کلی با پیشوند یا پسوند گذاری شناسه، برخوردهای مختلف با آن را نشان دهند ولی از لحاظ مفهوم با یکدیگر متفاوتند. به‌طور دقیق قطع کردن (stropping) متشکل از نمایش‌های مختلف برای یک اسم، در فضاهای نام متفاوت است و در مرحله نشان گذاری کردن رخ می‌دهد. از حروف بزرگ برای کلمات کلیدی همچنان به عنوان یک قرارداد برای نوشتن دستور زبان برای واژگان و تجزیه استفاده می‌شود - علامت گذاری کلمه رزرو شده به عنوان کلاس نشانگر IF، و سپس بیان عبارت "if-then-else" با codice_19 که در آن اصطلاح‌های با حروف بزرگ کلمات کلیدی هستند و اصطلاحاتی که فقط حرف اول آن‌ها بزرگ است نمادهای غیر پایانی در یک قاعده تولید هستند (نمادهای پایانی با حروف کوچک مشخص می‌شوند).


title: قطع‌کردن (برنامه‌نویسی)

text: ممکن است از قراردادهای نامگذاری برای جلوگیری از تصادم استفاده شود که به صورت معمول از زیرخط پیشوند یا پسوند استفاده می‌شود. زیرخط پیشوندی اغلب برای نشان دادن اعضای خصوصی در برنامه‌نویسی شی گرا استفاده می‌شود. این اسامی ممکن است توسط کامپایلر تفسیر شوند و تأثیراتی داشته باشند، هرچند این کار معمولاً در مرحله تجزیه و تحلیل معنایی انجام می‌شود، نه مرحله نشانه گذاری. به عنوان مثال، در پایتون، یک زیرخط پیشوندی، یک شاخص خصوصی ضعیف است، در حالی که دو زیرخط برجسته روی یک ویژگی کلاس، دستکاری نام را نشان می‌دهد.


title: قطع‌کردن (برنامه‌نویسی)

text: زبان‌های مدرن به‌طور کلی از واژه‌های رزرو شده به جای قطع کردن (stropping) برای تمایز کلمات کلیدی از شناسه‌ها به عنوان کلمات کلیدی استفاده می‌کنند. این برجسته‌ترین قسمت در زبان C است، در جایی که شناسه‌ها از شناسه‌هایی که از زیرخط (underscore) شروع می‌شوند جداست، اگرچه جزئیات دقیق شناسه در یک دامنه محفوظ است. به‌طور مشابه در ++C هر شناسه ای که حاوی دو زیرخط باشد برای هرگونه استفاده محفوظ است، در حالی که شناسه‌ای که با تأکید زیر شروع می‌شود در فضای جهانی محفوظ است؛ بنابراین می‌توان با استفاده از کلمه رزرو شده codice_20کلمه کلیدی جدید codice_21 را اضافه کرد. در حالی که این از نظر سطحی شبیه به قطع کردن (stropping) است، معنی‌شناسی متفاوتی دارند. به عنوان یک کلمه محفوظ، رشته codice_20 شناسه codice_20 را در فضای نام شناسه مشترک نشان می‌دهد. در قطع کردن(Stropping) (با پیشوند کلمات کلیدی توسط codice_24)، رشته codice_20 کلمه کلیدی codice_21 را در یک نام جداگانه برای کلید واژه‌ها نشان می‌دهد؛ بنابراین با استفاده از کلمات رزرو شده، علائم codice_20 و codice_21 (شناسه، foo__) و (شناسه، foo) - مقادیر مختلفی در همان دسته هستند - در حالی که در تکنیک قطع کردن(stropping) نشانه‌های codice_20 و codice_21 (کلمه کلیدی، foo) و (شناسه، foo) - مقادیر یکسان در دسته‌های مختلف. این مسئله همان مشکل برخورد فضای نام را به گونه‌ای حل می‌کند که برای یک برنامه‌نویس نیز یک‌سان است، اما از نظر دستور زبان و اجرای رسمی تفاوت دارد.


title: قطع‌کردن (برنامه‌نویسی)

text: یک پدیده نحو مشابه اما از نظر معنایی متفاوت امضاءها هستند که در عوض خصوصیات متغیرها را نشان می‌دهد. این موارد در پرل(Perl)، روبی (Ruby) و زبان‌های مختلف دیگر برای شناسایی ویژگی‌های متغیرها / ثابت‌ها مشترک است:در Perl برای تعیین نوع متغیر و در Ruby برای تشخیص متغیرها از ثابت و نشان دادن دامنه. توجه داشته باشید تکنیک معناشناختی متغیر را تحت تأثیر قرار می‌دهد، نه نحو بودن این که آیا آن یک شناسه یا کلمه کلیدی است.


title: قطع‌کردن (برنامه‌نویسی)

text: قطع کردن (stropping) در زبانهای برنامه‌نویسی رایانه ای مورد استفاده قرار می‌گیرد تا کار کامپایلر (یا به عبارت دقیق تر پارسر) آسانتر شود؛ یعنی در توانایی رایانه‌های نسبتاً کوچک و کند در دسترس در روزهای اولیه محاسبات در قرن بیستم باشد. با این حال، روشهای مشابه برای کمک به درک مطلب برای افراد نیز به‌طور معمول مورد استفاده قرار می‌گیرند. برخی از نمونه‌ها عبارتند از:


title: پروانه‌های پاشایی

text: پروانه‌های پاشایی نام یک سرده از زیرخانواده برگ‌بالان است.


title: شاهک هخامنش

text: شاهک هخامنش نام یک گونه از سرده شاهک است. در نام علمی آن achaemenes به معنی هخامنش است.


title: شاهک سبزرگه ماداگاسکاری

text: شاهک سبزرگه ماداگاسکاری نام یک گونه از سرده شاهک است.


title: شاهک سرخ داسی

text: شاهک سرخ داسی نام یک گونه از سرده شاهک است.


title: خط لوله نرم‌افزاری

text: در علوم رایانه، خط لوله‌ی نرم‌افزاری (به انگلیسی:software pipelining) مانند خط لوله‌ی سخت افزاری روشی جهت بهینه‌سازی حلقه‌ها است. خط لوله‌ی نرم‌افزاری یک نوع اجرای پویای دستورها است به گونه‌ای که تغییر ترتیب اجرای دستورها توسط کامپایلر به جای پردازنده انجام می‌شود.


title: خط لوله نرم‌افزاری

text: این مهم است که بتوانیم "خط لوله‌ی نرم‌افزاری" را که روشی است برای بهبود حلقه‌هایی که دستورهای داخل آن به یکدیگر وابسته‌اند را از "زمان‌بندی ماژول" که در حال حاضر شناخته شده‌ترین روش استفاده شده توسط کامپایلرها برای تولید حلقه‌های خط لوله‌ای نرم‌افزاری است تشخیص دهیم. خط لوله‌ی نرم‌افزاری روشی آشنا برای برنامه‌نویسان زبان اسمبلی است. آن‌ها از این روش برای ماشین‌هایی که توانایی اجرای چند دستور همزمان را دارند از زمانی که این گونه معماری‌ها وجود داشته‌اند استفاده می‌کردند. تولید کارآمد این گونه کدها توسط کامپایلرها به خلق زمان‌بدی ماژول توسط Rau و Glaeser بر می‌گردد. Lam نشان داد که نیازی به سخت‌افزار مخصوص برای استفاده کارآمد از زمان‌بندی ماژول نیست. روش استفاده شده توسط او به نام "توسعه‌ی متغیر ماژول" (به انگلیسی:modulo variable expansion) به طور گسترده در عمل استفاده می‌شود.  .Gao et al خط لوله‌ی بهینه برای برنامه نویسی خطی عدد صحیح را فرمول بندی کرد. علاوه بر الگوریتم‌های زمان‌بندی ماژول، الگوریتم‌های دیگری نیز برای برآورده کردن خط لوله‌ی نرم‌افزاری وجوددارند که از بین آن‌ها می‌توان به الگورتیم‌های شناخت هسته (به انگلیسی:kernel recognition) اشاره کرد.این مقاله به مقایسه این دو الگورتیم پیاده سازی خط لوله‌ی نرم‌افزاری پرداخته است. حلقه‌ی زیر را در نظر بگیرید: for i = ۱ to عدد بزرگ end در این مثال، codice_1 ،codice_2 ،codice_3 دستورهایی هستند وابسته به متغیر i و به یکدیگر نیز وابسته‌اند. این به این معنی است که اجرای دستور codice_3 باید قبل از اجرای دستور codice_2 به پایان رسیده باشد. به طور مثال، دستور codice_6 می‌تواند در داده‌ای را از حافظه‌ی اصلی بر ثباتی بنویسد و دستور codice_7 عملیاتی بر روی آن ثبات انجام دهد و دستور codice_8 می‌تواند مقدار آن ثبات را در خانه‌ای از حافظه‌ی اصلی ذخیره کند. اما دستورهایی که مقدار متغیر codice_9 در آن‌ها متفاوت است از یکدیگر مستقل‌اند. به عبارتی دیگر، دستور codice_10 می‌تواند قبل از دستور codice_11 اجرا شود.


title: خط لوله نرم‌افزاری

text: بدون استفاده از خط لوله‌ی نرم‌افزاری، ترتیب اجرای دستورها به صورت زیر است:


خط لوله نرم‌افزاری


title: خط لوله نرم‌افزاری

text: فرض کنید که هر دستور در ۳ چرخه ساعت اجرا می‌شود(فعلاً از هزنیه‌ی نگه‌داری و اجرای حلقه صرف نظر کنید). همچنین در نظر بگیرید که مانند بسیاری از سیستم‌های نوین، یک دستور می‌تواند در هر چرخه ساعت شروع به اجرا کند به شرطی که از دستورهایی که که اکنون در حال اجرا هستند، مستقل باشد. در مثالی که در آن از خط لوله استفاده نشده است، هر تکرار حلقه ۹ چرخه ساعت برای تکمیل شدن زمان می‌برد: ۳ چرخه ساعت برای هر کدام از دستورهای codice_1 ،codice_2 ،codice_3.


title: خط لوله نرم‌افزاری

text: حال ترتیب اجرای دستورهای زیر را با خط لوله‌ی نرم‌افزاری در نظر بگیرید:


title: خط لوله نرم‌افزاری

text: به سادگی می‌توان نشان داد که یک دستور می‌تواند در هر چرخه ساعت اجرای خود را آغاز کند، که این به این معنا است که ۳ تکرار حلقه‌ی اولیه می‌تواند در ۹ چرخه ساعت به پایان برسد. در نتیجه، هر بار تکرار حلقه‌ی اولیه به طور میانگین ۳ چرخه ساعت زمان می‌برد. خط لوله‌ی نرم‌افزاری معمولاً در ترکیب با بازکردن حلقه استفاده می‌شود. این ترکیب روش‌ها معولاً بسیار بهینه‌تر از استفاده از روش بازکردن حلقه به تنهایی است. در مثال بالا، ما می‌توانیم قطعه کد بالا را به صورت زیر بنویسیم(فرض کنید که codice_17 بر ۳ بخش‌پذیر باشد): for i = ۱ to (عدد بزرگ - ۲) step ۳ end در صورتی که تعداد تکرارهای حلقه بخش‍پذیر بر ۳ نباشند مسئله کمی پیچیده تر می‌شود. می‌توانید برای اطلاع از راه حل‌های این مشکل به صحفه‌ی بازکردن حلقه مراجعه کنید. در حالت کلی، بازکردن حلقه لزوماً بهترین روش برای پیاده‌سازی خط لوله‌ی نرم‌افزاری نیست. به طور مثال اگر حلقه شامل دستوری با تاخیر زیاد باشد استفاده از بازکردن حلقه بهینه نمی‌شود. قطعه کد پایین را در نظر بگیرید: for i = ۱ to عدد بزرگ end که این به این معنی است که حلقه باید ۱۲ بار باز شود تا از گلوگاه دستور codice_8 جلوگیری شود. که این موجب می‌شود تا حجم کد حلقه با ضریب ۱۲ افزایش یابد. وضعیت بدتر هنگامی پیش می‌آید که مقدمه ( قطعه کدی که در حالتی که codice_17 بر ۱۲ بخش‌پذیر نباشد قبل از حلقه قرار می‌گیرد) حجم بیشتری از کد حلقه داشته باشد و با احتمال زیاد بهینه نباشد زیرا خط لوله‌ی نرم‌افزاری نمی‌تواند برای این قطعه کد استفاده شود. علاوه بر این، اگر اندازه‌ی codice_17 نزدیک به تعداد بارهای بازشدن حلقه باشد، در هنگام اجرا، اکثر زمان صرف اجرای مقدمه‌ی ناکارآمد می‌شود که این باعث ناکارآمدی بهینه‌سازی از طریق خط لوله‌ی نرم‌افزاری می‌شود. حال اگر بخواهیم بدون استفاده از بازکردن حلقه از خط لوله‌ی نرم‌افزاری استفاده کنیم، قطعه کد زیر را برای مثال خود بدست می‌آوریم(در ادامه به توضیح مقدمه و خاتمه می‌پردازیم): مقدمه for i = ۱ to (عدد بزرگ - ۶) end خاتمه قبل از اینکه به توضیح مقدمه و خاتمه بپردازیم، که شامل دستورهایی می‌شوند که در حلقه اجرا نمی‌شوند، از درستی قطعه کد داخل حلقه اطمینان حاصل می‌کنیم. به طور خاص تکرار هفتم حلقه‌ی اصلی را در نظر بگیرید. حلقه‌ی اول حلقه‌ی خط لوله‌ای اولین تکراری است شامل دستوری از تکرار هفتم حلقه‌ی اصلی است. ترتیب اجرای دستورها به صورت زیر است:


title: خط لوله نرم‌افزاری

text: همانطور که مشاهده می‌کنید برخلاف حلقه‌ی اصلی، در اجرای حلقه‌ی خط لوله‌ای مشکل گلوگاه دستور codice_8 رفع شده است. توجه کنید که 12 دستور بین دستور codice_22 و دستور codice_23 وابسته به آن وجود دارد که این موجب می‌شود که بتوان در چرخه ساعت‌هایی که دستور codice_22 در حال اجرا است، بقیه دستورها را اجرا کرد. مقدمه و خاتمه ،در شروع و پایان حلقه، مسئول اجرای دستورهایی هستند که در حلقه اجرا نشده‌اند. قطعه کد زیر مقدمه‌ای برای مثال بالای ما را نشان می‌دهد: هر خط از قطعه کد بالا نشان دهنده‌ی یک تکرار از حلقه‌ی خط لوله‌ای اصلی است، که دستورهایی که هنوز شروع نشده‌اند را شامل نمی‌شود. به طریق مشابه، خاتمه به تدریج دستورهایی که تکرار آن‌ها به پایان رسیده‌است را حذف می‌کند. قطعه کد زیر نشان دهنده‌ی خاتمه است:


title: خط لوله نرم‌افزاری

text: اما همیشه پیدا کردن مقدمه و خاتمه مناسب ساده نیست. در مثالی که در بالا آورده شده است ۱۸ دستور برای مقدمه و ۱۸ دستور برای خاتمه استفاده شده‌است. این به این معنی است که مقدمه و پایان 6 برابر تعداد دستورات داخل حلقه دستور دارند. این صفحه به خوبی مشکلات به وجود آمده و روشی برای رفع کردن آن‌ها ارائه کرده است.


title: شاهک سفید هادریان

text: شاهک سفید هادریان نام یک گونه از سرده شاهک است.


title: شاهک آبی‌لکه

text: شاهک آبی‌لکه نام یک گونه از سرده شاهک است.


title: چشمک‌بال

text: چشمک‌بال نام یک گونه پروانه از تبار قهوه‌ای‌بال است.


title: فهرست نمایندگان تهران در مجلس شورای ملی

text: فهرست نمایندگان تهران در مجلس شورای ملی ایران


title: فهرست نمایندگان تهران در مجلس شورای ملی

text: نمایندگان: نمایندگان: نمایندگان: از ۱۱۸۰۳ رای ماخوذه: نمایندگان: از ۲۰۴۲۶ رای ماخوذه: از ۵۱۷۷۶ رای ماخوذه: از ۴۰۵۵۱ رای ماخوذه: از ۶۲۱۷۴ رای ماخوذه: نمایندگان: نمایندگان: از ۷۵۴۶۳ رای ماخوذه: از ۸۶۸۳۸ رای ماخوذه: نمایندگان: از ۷۷۲۳۶ رای ماخوذه: نمایندگان: از ۱۴۲۹۰۱ رای ماخوذه: از ۸۶۵۱۴ رای ماخوذه: از ۸۷۴۲۳ رای ماخوذه: از ۶۵۴۵۱ رای ماخوذه: از ۲۷۱۳۲۰ رای ماخوذه: از ۲۷۵۱۸۴ رای ماخوذه: از ۵۳۷۰۹۱ رای ماخوذه: از ۷۲۰۸۸۲ رای ماخوذه:


title: گرامرهای عبارت قطعی

text: گرامرهای عبارت قطعی روشی است برای توضیح گرامر زبان‌های رسمی و طبیعی، که در برنامه‌نویسی منطقی مورد استفاده قرار می‌گیرد. این مفهوم بسیار به مفاهیم گرامرهای صفتی و گرامرهای مضافی مرتبط است که هر دو توسط زبان Prolog توسعه پیدا کرده‌اند. این گرامرها معمولاً در کنار زبان مطرح می‌شوند اما زبان‌های شبیه به آن هم مانند مرکوری (Mercury) شامل "DCG"ها هستند.


title: گرامرهای عبارت قطعی

text: این طرز نشان دادن، گرامرها را به صورت مجموعه ای از عبارات قطعی از منطق مرتبه اول ارائه می‌دهد و به همین دلیل است که به آن گرامر عبارت قطعی گویند.


title: گرامرهای عبارت قطعی

text: کلمه در زبان Prolog و دیگر زبان‌های مشابه اصطلاح خاصی است؛ به این معنی که همیشه نشان دادن گرامرها با بندهای قطعی، DCG نیست. اما همه این گرامرهایی که با بندهای قطعی بیان شده‌اند قابلیت‌های DCG را دارا هستند.


title: گرامرهای عبارت قطعی

text: بندهای قطعی DCG را می‌توان مجموعه ای از جملات بدیهی در نظر گرفت که می‌توان بر اساس آن‌ها معتبر بودن یک جمله را در گرامر مورد نظر بررسی کرد. به عبارت دیگر این مجموعه جملات بدیهی کمک خواهند کرد که تشخیص دهیم آیا می‌توان برای ورودی یک درخت پارس (Pars tree) یکتا ساخت یا خیر. استفاده از این روش تشخیص عضویت ورودی به زبان و تشکیل درخت پارس آن را به یک مسئله ساده قابل حل تبدیل می‌کند.


title: گرامرهای عبارت قطعی

text: تاریخچه DCGها به تاریخچه زبان برنامه‌نویسی Prolog گره خورده‌است. تاریخچه Prolog نیز به تحقیقات و پژوهش‌های مختلفی برمی‌گردد که مرکزیت آن‌ها به دو شهر مارسی فرانسه و ادینبرو اسکاتلند برمی‌گردد. بر اساس نقل قولی از رابرت کوالسکی که یکی از برنامه نویسان قدیمی زبان Prolog است، اولین ورژن از Prolog در سال ۱۹۷۲ توسط آلاین کلمراویر و فیلیپ راسل ارائه شد. اولین برنامه ای که با این زبان برنامه‌نویسی نوشته شد، یک سیستم پردازش زبان طبیعی بزرگ بود. فرناندو پریرا و دیوید وارن از دانشگاه ادینبرو هم در توسعه نسخه‌های اولیه Prolog نقش مؤثری داشتند.


title: گرامرهای عبارت قطعی

text: کلمراویر پیش تر بر روی یک سیستم پردازش زبان به نام سیستم Q کار کرده بود که برای ترجمه متون بین زبان‌های فرانسوی و انگلیسی استفاده می‌شد. درسال ۱۹۷۸ کلمراویر مقاله ای در رابطه با روشی برای بیان کردن گرامرها نوشت و در آن مثال‌هایی از برنامه‌هایی که از آن‌ها استفاده می‌کردند آورد. او نام گرامرهای متامورفوسیس را برای این دسته از گرامرها قرار داد. این گرامرها قسمتی از نسخهٔ مارسی Prolog بودند.


title: گرامرهای عبارت قطعی

text: پریرا و وارن از توسعه دهندگان Prolog که قبل‌تر معرفی شدند برای اولین بار گرامر عبارت-قطعی را مطرح کردند و پایه‌گذار عبارت DCG در Prolog بودند. آن‌ها در ادامه ایده گرامرهای متامورفوسیس، گرامرهای عبارت-قطعی را به عنوان زیرمجموعه‌ای از گرامرهای متامورفوسیس معرفی کردند. این ایده در مقاله‌ای تحت عنوان «گرامرهای عبارت-قطعی برای تحلیل زبان ها» منتشر شد و در آن بیان شد که DCGها شکل فرمول گونه گرامرها هستند به طوری که گرامر توسط عبارت‌های قطعی منطق مرتبه اول بیان می‌شود.


title: گرامرهای عبارت قطعی

text: توسعه‌دهندگان Prolog در ادامه دربارهٔ ابعاد مختلف DCGها در مقاله‌های مختلفی نوشتند.


title: گرامرهای عبارت قطعی

text: مثال زیر نمونه ای ساده از قسمتی از گرامر زبان انگلیسی است که در آن یک جمله از دو عبارت اسمی و فعلی تشکیل شده‌است که عبارت اسمی می‌تواند از ترکیب یک حرف اضافه و اسم تشکیل شود و عبارت فعلی از ترکیب یک فعل و یک عبارت اسمی ساخته می‌شود. این گرامر به روش DCG به صورت زیر نمایش داده می‌شود. جملات “the cat eats the bat” و “a bat eats the cat” مثال‌هایی هستند که با گرامر تعریف شده می‌توان ساخت. برای ساختن تمام جملات حاصل از این گرامر می‌توان از دستور زیر درمفسر Prolog استفاده نمود. برای تشخیص این که جمله‌ای متعلق به این زبان هست یا خیر هم می‌توان از دستور خاصی استفاده کرد که در زیر آمده‌است (در صورتی که جمله مورد بررسی the bat eats the bat باشد). sentence(X,[]) sentence([the,bat,eats,the,bat],[]) در واقع استفاده از DCG برای بهتر نشان دادن عبارات قطعی ساده در Prolog است. مثال قبل به صورت عملی در Prolog به وسیله DCG به فرم زیر نوشته می‌شود: به ورودی‌های هر تابع در بالا (مثل (A,B)) لیست‌های تفاوت گویند. لیست‌های تفاوت روشی برای نشان دادن پیشوند یک لیست (یا یک رشته) هستند که این کار را به وسیله تفاوت بین پسوند دو ورودی انجام می‌دهد.


title: گرامرهای عبارت قطعی

text: به‌طور مثال در نمونه زیر یک لیست پیشوندی تکی، به صورت لیست‌های تفاوت نوشته شده‌است.  P = [H] ---> [H|X] and X در Prolog، در واقع DCGهای عادی پارامتر دیگری برای توابع درنظر نمی‌گیرد (همان‌طور که در بالا اشاره شد). به همین دلیل تنها می‌تواند برای استفاده در گرامرهای مستقل از متن به کار گرفته شود. با به کار گرفتن متغیرهای ورودی بیشتر، می‌توان DCGها را برای گرامرهای وابسته به متن نیز به کار برد. مثال زیر همین کاربرد را نشان می‌دهد: عبارات بالا در واقع یک DCG برای گرامر زبانی است که رشته روبرو را تولید می‌کند؛ formula_1.


title: گرامرهای عبارت قطعی

text: قابلیت‌ها و محدودیت‌های زبانی مختلف می‌توانند توسط DCGها نمایش داده شوند. در برخی موارد لازم است برای رسیدن به این مسئله پارامترهای ورودی توابع را افزایش دهیم.  در مثال بالا گرامری دیده می‌شود که بر روی جملاتش محدودیت‌هایی دارد. مثلاً "he likes her“ و "he likes him“ مورد قبول هستند ولی "her likes he“ و "him likes him“ پذیرفته نیستند.


title: انگشت مورتون

text: انگشت مورتون () نام یکی از الگوهای ناحیه جلوی پا است که در آن انگشت دوم از انگشت شست پا (هالوکس) بلندتر است.


title: انگشت مورتون

text: انگشت مورتون منجر به فشار اضافی بر روی سر دومین استخوان کف پا (پشت انگشت دوم در ناحیه بال پا) شده و دردی شبیه درد کف پا (Metatarsalgia) ایجاد می‌کند. فشار دائمی در حال راه رفتن و ایستادن بر روی این انگشت بلندتر قرار می‌گیرد و می‌تواند منجر به تشکیل پینه در زیر سر دومین استخوان کف پا شود.


title: شانسون د آنتیوش

text: منظومه انطاکیه که با عنوان شانْسون دِ آنْتیوش () شناخته می‌شود، مشتمل بر ۹ هزار بیت به‌صورت الکساندرین، منظومه اشعاری حماسی به‌زبان فرانسه است که در رابطه با نخستین جنگ صلیبی است که اطلاعات تاریخی معتبر و ارزشمندی در رابطه با این حادثه دربردارد. براساس تنها نسخه‌ای که از این منظومه باقی مانده، این اثر در ربع قرن ۱۲ میلادی سروده شده و منسوب به شخصی به نام گریندر د دوئال است. براساس سطر ۹ هزار و چهارده این منظومه، وی مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. این منظومه با دیگر منظومه‌های این سیکل، یعنی منظومه ناچیزان و منظومه اورشلیم ــ که آثاری شگفت‌انگیز و خیالی هستند ــ متفاوت است. همچنین این منظومه، شامل ۹ یا هزار سطر (بیت) شعر حماسی و مشتمل بر حوادث و رویدادهای مرتبط با نخستین جنگ صلیبی است.


title: شانسون د آنتیوش

text: نخستین جنگ صلیبی، نخستین جنگ از سری جنگ‌های صلیبی بود که برای بازپس‌گیری سرزمین مقدس روی داد و به‌وسیلهٔ پاپ اوربان دوم در جریان شورای کلرمونت، در سال ۱۰۹۵ م، اعلان شد. پس از آنکه بسیاری از مناطق تحت کنترل بیزانس در آناتولی به دست ترکان سلجوقی تسخیر شد، پاپ درخواست کرد اردویی نظامی برای یاری امپراتوری بیزانس گسیل شود. نتیجهٔ اردوکشیِ اشرافِ بلندپایهٔ فرانسوی — که با نام جنگ صلیبی شاهزادگان شناخته می‌شود — منجر به تسخیر دوبارهٔ آناتولی و حتی سرزمین مقدس (شام) شد که از ابتدای سدهٔ هفتم میلادی و در زمان گسترش اسلام به دست مسلمانان افتاده بود. سرزمین مقدس در ژوئیهٔ ۱۰۹۹ م، در جریان بازپس‌گیری اورشلیم به دست صلیبیون افتاد و پادشاهی اورشلیم در آن برپا شد.


title: شانسون د آنتیوش

text: این اردوکشی در پاسخ به درخواست کمک نظامی از سوی آلکسیوس یکم، امپراتور بیزانس به وقوع پیوست. اوربان، سخنرانی‌اش را در شورای کلرمونت به تصمیم‌گیری در مورد این موضوع خاص اختصاص داد و پیشنهاد محاصرهٔ جنگی شهرهای نیقیه و انطاکیه را مطرح کرد که به تازگی اشغال شده بودند؛ اگرچه، طبق اظهارات شاهدان عینی که پس از سال ۱۱۰۰ م به‌نگارش درآمده‌است، پاپ در سخنرانی‌اش در کلرمونت از اورشلیم و سرزمین مقدس به عنوان هدفی فرعی یاد کرده بود.


title: شانسون د آنتیوش

text: جنگ صلیبی موفقیت‌آمیز شاهزادگان پس از جنگ صلیبی عوام‌الناس به وقوع پیوست. جنگ صلیبی عوام‌الناس یکی از جنگ‌های صلیبی مشهور به‌شمار می‌رود که به دعوت پیتر راهب در بهار ۱۰۹۶ م شروع شده‌بود. حرکت او علیه ترکان در آناتولی بود، ولی در مسیرش در راینلند به مردم یهودی حمله کرد. او و مردم صلیبی پیروش، سرانجام در ماه اکتبر از ترکان به سختی شکست خوردند.


title: شانسون د آنتیوش

text: جنگ صلیبی شاهزادگان که در مقایسه از سازماندهی نظامی و جنگی بسیار بهتری برخوردار بود، در اواخر تابستان ۱۰۹۶ م آغاز شد و سپاه آنان در میانهٔ نوامبر ۱۰۹۶ تا آوریل ۱۰۹۷ م به قسطنطنیه رسید. آن‌ها به آناتولی یورش برده و نیقیه را در ژوئن ۱۰۹۶ و انطاکیه را در ۱۰۹۷ م تسخیر کردند. صلیبیون در ژوئن ۱۰۹۹ م به اورشلیم رسیدند و در جریان حمله‌ای در ۷ ژوئیهٔ ۱۰۹۹ م، شهر را به کنترل خود درآوردند و مدافعان را قتل‌عام کردند. تلاش کوچک فاطمیان برای بازپس‌گیری اورشلیم، توسط صلیبیون در نبرد اشکلون دفع شد.


title: شانسون د آنتیوش

text: آن‌ها هم‌زمان با پیروزی‌هایشان، دولت‌هایی لاتین و صلیبی مانند پادشاهی اورشلیم، کنت‌نشین طرابلس، شاهزاده‌نشین انطاکیه و کنت‌نشین ادسا را پایه‌ریزی کردند که با آرمان‌های مذهب شرقی امپراتوری بیزانس منافات داشت. آنان خواستار بازگردانی سرزمین‌هایی بودند که مسلمانان از آنان گرفته‌بودند، ولی اکنون بیشترشان به دست لاتین‌های کاتولیک افتاده بود. پس از تصرف اورشلیم، بیشتر صلیبیون به خانه‌هایشان بازگشتند که باعث شد پادشاهی صلیبی در طول جنگ صلیبی دوم و سوم در مقابل مسلمانان آسیب‌پذیر شود.


title: شانسون د آنتیوش

text: اشعار و نوشته‌های منظوم با مضمون‌های حماسی و رمانتیک مردم‌پسند، وقایع مربوط به جنگ‌های صلیبی و حواشی آن را از نگاهی دیگر مورد توجه قرار داده‌اند. در واقع، میراث منظوم برجای مانده از صلیبیون در فرانسه، انگلستان، آلمان، اسکاتلند، اسپانیا، پرتغال و … نیز سهم مهمی در مکتب کلاسیک تاریخ‌نگاری غربی جنگ‌های صلیبی دارند. این آثار افزون بر دربرداشتن اطلاعات تاریخی، اجتماعی و نظامی اروپا و دول صلیبی در اراضی مقدس، بیانگر احساسات تودهٔ مردم همزمان با جنگ‌های صلیبی در اروپا و اراضی مقدس هستند. به بیان دیگر، وقایع مهیج جنگ‌های صلیبی برای غنی ساختن شعر شاعرانی که عمدتاً زاده غرب بودند، مضمون‌هایی شایسته بودند. از جهتی دیگر، ادبیات دول صلیبی در شرق خود فقط شاخه‌ای از ادبیات فرانسه بود. افزون بر آن، رعایای بومی صلیبیون در سرزمین شام نیز ادبیاتی خاص خود را نداشتند. به علاوه، در یونان و قبرس تحت حکمرانی لاتینی‌ها نیز ادبیات یونانی عامه‌پسندی به وجود آمد که بسیار متأثر از ادبیات فرانسه بود. با آنکه جنگ صلیبی چه در زبان لاتین و چه در لهجه‌های محلی شمالی و جنوب فرانسه الهام‌بخش چند شعر حماسی شد، ولی جنبهٔ ادبی این اشعار بر ارزش تاریخی‌شان برتری دارد. اشعار شاعرانی نظیر جفری لمبارد، ژوزف اکستر و گونتر آوبال به لحاظ ادبی قابل ملاحظه‌اند، ولی از نظر تاریخی ارزشی ندارند.


title: شانسون د آنتیوش

text: نظم پروانسی ترانه انتیویک یا همان "منظومه انطاکیه"، منسوب به گریگوری بچادا، از دیگران جالب‌تر و در خود دقتی بیشتر است. به لهجه مردم شمال فرانسه افزون بر نظم بادری، شعر دیگری در دست است که آن نیز به "منظومه انطاکیه"، اثر گریندر دوئال موسوم است.


title: شانسون د آنتیوش

text: شاعر و گردآورنده سه منظومه تاریخی «"منظومه انطاکیه"»، «"منظومه اورشلیم"» یا «فتح اورشلیم» و «"منظومه ناچیزان [اسیران مسیحی]"» است. از شرح حال وی اطلاع چندانی در دسترس نیست جز آن که وی در قرن ۱۲ میلادی و همزمان با لوئی هفتم، پادشاه فرانسه، زندگی می‌کرده و این سه منظومه بدو منسوب هستند. در واقع گریندر، اطلاعات بسیاری را از برخی وقایع‌نامه‌های جنگ صلیبی همچون "گشتا فرانکاروم" اقتباس نمود و در ویرایش. تدوین سه منظومهٔ مزبور به کار برد. همچنین، وی برخی از این اشعار حماسی را که به شکل شفاهی بر زبان مردم جاری بود، جمع‌آوری و مکتوب کرد و آنها را بازنگری نمود و به صورت متونی مدون درآورد که امروزه به "نخستین سیکل جنگ‌های صلیبی" معروف هستند. این سه اثر، شرح منظوم اعمال نخستین لشکرکشی صلیبیون به شرق هستند که عمدتاً با استفاده از اطلاعات و مشاهدات عینی سربازان صلیبی بازگشته به اروپا سروده شده‌اند.


title: شانسون د آنتیوش

text: براساس سطر ۹ هزار و چهارده این منظومه، گریندر مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. همچنین این منظومه به‌طور مشخص با دو منظومه دیگر این سیکل، یعنی "منظومه ناچیزان" و "منظومه یا فتح اورشلیم" ــ که آثاری شگفت‌انگیز و خیالی هستند یا داستان‌های هیولاها، آدم‌های خبیث، قهرمان و دوشیزگانی زیبا به پایان می‌رسند ــ متفاوت است. این منظومه، شامل حدود ۹ هزار یا ۱۰ هزار سطر شعر حماسی و مشتمل بر حوادث و رویدادهایی است که در جنگ صلیبی اول به وقوع پیوسته‌اند. این منظومه، پتر زاهد را به عنوان محرک جنگ‌های صلیبی معرفی می‌کند. سپس نحوه جلب نیروهای صلیبی ــ که در پاسخ به درخواست پاپ بعد از مجمع کلرمون بود ــ و سفر آنها به قسطنطنیه و آسیای صغیر را شرح می‌دهد. بعد از آن چگونگی تسخیر نیقیه و دستیابی بر ادسا ــ که قبل از ورود صلیبیون به انطاکیه رخ داد ــ را بیان می‌کند. در واقع، وقایع و حوادث مزبور در عمق اشعار "منظومه انطاکیه" بیان شده‌اند و با بیان پیروزی مسیحیان در نبرد انطاکیه پر ۱۰۹۸ میلادی، پایان می‌یابد. همچنین در این منظومه به برخی از شخصیت‌های غیرمنتظره شرکت‌کننده در این جنگ همچون تافورس، اشاره می‌شود که رهبر گروه نیمه‌مختار بودند که تحت فرماندهی پادشاه خود، صلیبیون را همراهی می‌کردند.


title: شانسون د آنتیوش

text: متأسفانه هیچ‌یک از مضمون‌های اشعار این منظومه را نمی‌توان به عنوان مدرکی برای جنگ صلیبی اول به کار برد. علت این امر به دو عامل بازمی‌گردد: به تعبیر سوزان ادگینتون، با وجود این، "منظومه انطاکیه"، احتمالاً به عنوان عاملی محرک در تجدید نیروها و سربازگیری در نیمه جنگ صلیبی سوم در حدود سال ۱۱۹۰ میلادی، به کار برده شده و فواید قابل ملاحظه‌ای در این زمینه نصیب صلیبیون نمود. همچنین این منظومه دارای ویژگی‌های زبان‌شناسی منطقه پیکاردی است و از سوی شوالیه‌های و نجیب‌زادگان شمال شرقی فرانسه ــ که اعمال اجدادشان در این اثر مورد تقدیس قرار گرفته‌است ــ از بر خوانده‌اند. به علاوه در منظومه انطاکیه، افکار و عقاید مذهبی و رویاهای برخی کشیشان همزمان با جنگ صلیبی اول و نقش و عملکرد زنان در این دوره نیز بیان شده‌است.


title: تکستران اوییشن

text: تکستران اوییشن شرکت سازنده هواگردهای عمومی شرکت خوشه‌ای تکستران است که از سال ۲۰۱۴ در پی خریداری شرکت‌های بیچ‌کرفت و هاوکر ایرکرفت شکل گرفت. این شرکت همچنین در برگیرنده برند سسنا نیز می‌باشد. اما بعد از خریداری شرکت هاوکر این مجموعه محصول جدیدی تحت برند هاوکر عرضه ننموده و فقط خدمات پس از فروش این برند ادامه دارد.


title: ترکیب کننده تجزیه‌گر

text: یک ترکیب کننده تجزیه‌گر در برنامه‌نویسی رایانه ای، یک تابع مرتبه بالا است که چندین تجزیه کننده (یا پارسر) را به عنوان ورودی می‌پذیرد و یک پارسر جدید را به عنوان خروجی برمی‌گرداند. در این زمینه، یک پارسر تابعی است که رشته‌هایی را به عنوان ورودی می‌پذیرد و ساختارهایی را به عنوان خروجی برمی‌گرداند، به عبارتی پارسر یک درخت تجزیه یا مجموعه ای از شاخص‌هایی است که نمایانگر مکان‌هایی در رشته‌است که تجزیه آن با موفقیت متوقف شده‌است. ترکیب کننده‌های پارسر از استراتژی تجزیه کننده کاهشی بازگشتی استفاده می‌کنند که ساخت و آزمایش ماژولار را تسهیل می‌کند. به این تکنیک تجزیه، تجزیه کننده ترکیبی می‌گویند.


title: ترکیب کننده تجزیه‌گر

text: پارسرهای ساخته شده با استفاده از ترکیب کننده‌ها، خوانا، ماژولار و ساختار یافته و همچنین ساده در مراحل ساخت و نگهداری هستند. از کاربردهای گسترده آن نمونه سازی کامپایلرها و پردازنده‌ها برای زبان‌های خاص دامنه (به انگلیسی: DSL) مانند واسط‌های زبان طبیعی به پایگاه‌داده‌ها، که در آن اقدامات معنایی پیچیده و متنوعی به همراه پردازش نحوی انجام می‌شوند، می‌باشد. در سال ۱۹۸۹، ریچارد فراست و جان لانچبروری نشان دادند که از ترکیب کننده‌های تجزیه گر می‌توان برای ساختن مفسرهای زبان طبیعی استفاده‌کرد. همچنین گراهام هاتن در سال ۱۹۹۲ از توابع مرتبه بالا در تجزیه کننده‌های پایه استفاده کرد. به علاوه S.D. Swierstra جنبه‌های عملی ترکیب کنندهٔ تجزیه گر را در سال ۲۰۰۱ به نمایش گذاشت. در سال ۲۰۰۸، فراست، هافیز و کالاهان مجموعه ای از ترکیب کننده‌های تجزیه گر را در زبان هسکل که مشکل دیرینه تطابق بازگشت چپ را حل می‌کرد، و به عنوان یک ابزار کامل تجزیه کننده از بالا به پایین در زمان و فضای چند جمله ای کار می‌کرد را تعریف کردند.


title: ترکیب کننده تجزیه‌گر

text: در هر زبان برنامه‌نویسی دارای توابع کلاس اول، می‌توان از ترکیب کننده‌های تجزیه گر با ترکیب پارسرهای پایه برای ساخت پارسرهایی با قوانین پیچیده‌تر استفاده کرد. به عنوان مثال، یک قاعده تولید از یک دستور زبان مستقل از متن (به انگلیسی: CFG) ممکن است یک یا چند جایگزین دیگر داشته باشد و هر جایگزین ممکن است شامل یک توالی از غیرپایانه(ها) و پایانه(ها) باشد یا این که می‌تواند یک غیرپایانه یا پایانه یا یک رشته خالی باشد. اگر یک پارسر ساده برای هر یک از این جایگزین‌ها وجود داشته باشد، می‌توان از یک ترکیب کنندهٔ تجزیه‌گر برای ترکیب هر یک از این پارسرها استفاده کرد و یک پارسر جدید که می‌تواند هر جایگزینی را تشخیص دهد را برگرداند.


title: ترکیب کننده تجزیه‌گر

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


title: ترکیب کننده تجزیه‌گر

text: برای ساده نگه داشتن بحث، ترکیب کننده‌های تجزیه‌گر را فقط به عنوان تشخیص‌دهنده‌ها بررسی می‌کنیم. اگر رشته ورودی از طول codice_1 و حرف‌های آن از طریق شاخص codice_2 قابل دسترسی باشند، تشخیص دهنده یک پارسر است که به عنوان خروجی مجموعه ای از شاخص‌هایی را برمی‌گرداند که نمایانگر موقعیت‌هایی هستند که پارسر دنباله‌ای از توکن‌ها را که از شاخص j شروع می‌شود را با موفقیت تشخیص داده‌است؛ بنابراین اگر خروجی یک مجموعهٔ خالی باشد، نشان می‌دهد که تشخیص دهنده نتوانسته هیچ دنباله ای را که از شاخص codice_2 شروع می‌شود، تشخیص دهد. در غیر این صورت خروجی نشان‌دهندهٔ آن است که تشخیص دهنده در موقعیت‌های متفاوت به پایان می‌رسد.باید در نظر گرفت که ممکن است چندین روش متمایز برای تجزیه یک رشته وجود داشته باشد به صورتی که به یک شاخص مشترک منتهی می‌شوند؛ این اتفاق نشان می‌دهد گرامر مبهم است. تشخیص دهنده‌های ساده این ابهامات را نمی‌توانند شناسایی کنند چون هر شاخص انتهایی احتمالی فقط یک بار می‌تواند در مجموعه نتایج خروجی ذکر شود؛ به همین دلیل برای داشتن نتایج کامل تر، باید یک ساختار پیچیده‌تر مانند یک درخت تجزیه به عنوان خروجی برگردانده شود.


title: ترکیب کننده تجزیه‌گر

text: در ادامه دو ترکیب کننده تجزیه گر برای جایگزینی و توالی یابی تعریف کنیم، ابتدا فرض می‌کنیم codice_10 و codice_11 ، دو تشخیص دهنده پایه باشند:یک گرامر مستقل از متن مبهم را در نظر بگیرید، codice_18 . با استفاده از ترکیب کننده ای که بالاتر تعریف کردیم، می‌توانیم به صورت ماژولار، نمادهای اجرایی این دستور زبان را با استفاده از یک زبان کاربردی مدرن (مثلاً هسکل) به صورت codice_19 تعریف کنیم. وقتی که تشخیص دهنده codice_20 بر روی یک دنباله ورودی codice_21 در موقعیت codice_22 اعمال شود با توجه به تعاریف فوق، خروجی codice_23 را برمی‌گرداند.


title: ترکیب کننده تجزیه‌گر

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


title: ترکیب کننده تجزیه‌گر

text: پیاده‌سازی‌های ساده ترکیب کننده‌های تجزیه‌گر دارای کاستی‌هایی هستند که در تجزیه کنندهٔ بالا به پایین هم رایج است. تجزیه‌کننده ترکیبی ساده (به انگلیسی: Naïve combinatory parsing)، هنگام تجزیهٔ دستور زبان مستقل از متن مبهم به زمان و فضای نمایی نیاز دارد. در سال ۱۹۹۶، فراست و Szydlowski نشان دادند که با مموایز کردن در استفاده از ترکیب کننده‌های تجزیه‌گر می‌توان پیچیدگی زمانی را به چند جمله ای کاهش داد. مدتی بعد فراست از مونادها برای ساخت ترکیب کننده‌ها در ریسه (به انگلیسی: thread)های قاعده دار و درست جدول یادداشت‌ها در طول محاسبه استفاده کرد.


title: ترکیب کننده تجزیه‌گر

text: مانند هر تجزیه کننده کاهشی بازگشتی از بالا به پایین، ترکیب کننده‌های تجزیه‌گر معمولی (مانند ترکیب کننده‌های ذکر شده در بالا) در هنگام پردازش یک دستور زبان بازگشتی چپ خاتمه نمی‌یابند (به عنوان مثال codice_24). در سال ۲۰۰۶ یک الگوریتم تشخیص که دستور زبان مبهم را با قوانین مستقیم بازگشتی چپ تطبیق می‌داد ارائه شد. این الگوریتم تجزیه جداکننده بازگشتی چپ که نامتنهی است با تحمیل محدودیت‌های عمق، ساده کرد. در سال ۲۰۰۷، فراست، هفیز و کالاهااین الگوریتم را به یک الگوریتم تجزیه کننده کامل توسعه دادند، که در آن بازگشتی چپ غیرمستقیم مانند مستقیم در زمان چندجمله ای تطبیق می‌دهد، و هم چنین تعداد نمایی ای از درختان تجزیه برای گرامرهای مبهم را در فضای چندجمله ای و متراکم نمایش می‌دهد. این الگوریتم گسترش یافته، بازگشتی چپ غیرمستقیم را با مقایسه «متن محاسبه شده» با «متن فعلی»، مطابقت می‌دهد. همین نویسندگان همچنین پیاده‌سازی خود را در مورد مجموعه ای از ترکیب کننده‌های تجزیه‌گر که به زبان برنامه‌نویسی هسکل نوشته شده بودند رابر اساس همان الگوریتم توصیف کردند.


title: بهینه سازی حلقه

text: بهینه‌سازی حلقه در تئوری کامپایلر، فرایند افزایش سرعت اجرا و کاهش سربارهای مربوط به است. این فرایند نقش بسزایی در بهبود عملکرد حافظه نهان و استفاده مؤثر از قابلیت‌های پردازش موازی ایفا می‌کند. در واقع بیشترین زمان اجرای یک برنامه علمی در حلقه‌ها صرف می‌شود؛ و از این رو تکنیک‌های متعدد بهینه سازی کامپایلر برای اجرای سریعتر ایجاد شده‌اند.


title: بهینه سازی حلقه

text: از آنجا که دستورالعمل‌های داخل حلقه‌ها می‌توانند به‌طور مکرر اجرا شوند، در اغلب موارد ارائهٔ یک کران برای تعداد اجراهای متأثر از بهینه‌سازی حلقه غیرممکن است. این مشکل بررسی به‌جا بودن و درستی بهینه‌سازی حلقه و مزایای آن را در سناریوهای مختلف، چالش‌برانگیز کرده‌است.


title: بهینه سازی حلقه

text: درعمل فرایند بهینه‌سازی حلقه را می‌توان اعمال دنباله‌ای از تبدیل‌های حلقه روی بازنمایی میانی دانست که هریک دارای محکی برای سنجش درستی و به‌جابودن هستند. یک تبدیل (یا دنباله‌ای از تبدیل‌ها) برای اینکه بتواند تضمین کند که کد حاصلش، نتیجهٔ کد اولیه را تولید خواهد کرد، به صورت کلی باید دنبالهٔ تمام وابستگی‌هایی که در ابتدا در کد بوده را حفظ کند. علاوه بر آن بررسی مفید بودن یک تبدیل در این روش دشوار است چراکه ممکن است بکارگیری یک تبدیل نیازمند انجام چندین تبدیل دیگری باشد که خود آن‌ها سربار محاسباتی ایجاد کنند.


title: بهینه سازی حلقه

text: در ادامه تبدیل‌های متداول حلقه به صورت فهرست‌وار آمده‌اند.


title: بهینه سازی حلقه

text: روش تبدیل تکپیمانه‌ای از یک ماتریس تک پیمانه‌ای برای توصیف نتیجهٔ اعمال دنباله‌ای از تبدیل‌های مذکور استفاده می‌کند. ایدهٔ اصلی این روش توصیف مجموعهٔ تمام اجراهای یک دستور در formula_1 حلقه به صورت یک مجموعه از نقاط با مختصات صحیح در فضای formula_1 بعدی است که این نقاط به ترتیب الفبایی اجرا می‌شوند. به عنوان مثال اجراهای یک گزاره که در دو حلقهٔ تودرتو با متغیر پیمایندهٔ بیرونی i و درونی j به صورت دوتاییformula_3 مدل می‌شود. یک تبدیل تک پیمانه‌ای متناظر با ضرب نقاط این فضا توسط ماتریس‌های تبدیل است. مثلاً ماتریس مربوط به جابه‌جایی حلقهٔ بیرونی با درونی formula_4 است. به صورت کلی یک تبدیل تک پیمانه‌ای زمانی صحیح است که تمام دنباله وابستگی‌های زمانی را حفظ کند. دشوارتر از آن، بررسی تأثیر تبدیل تک پیمانه‌ای را روی کارایی است. به این دلایل حلقه‌های تودرتوی معیوب و تبدیل‌هایی مثل بخشبندی به راحتی در این چهارچوب قابل انجام نیستند.


title: بهینه سازی حلقه

text: مدل چندوجهی گسترهٔ وسیعتری از کدها و تبدیل‌ها را درمقایسه با چهارچوب تک پیمانه‌ای پوشش می‌دهد. در این چهارچوب مجموعه اجراهای یک دسته از دستورها داخل حلقه‌های تودرتوی معیوب به صورت اجتماعی از چندوجهی‌هایی مدل می‌شود که اجرای دستورها را نشان می‌دهند. در ادامه تبدیل‌های آفین، روی این چندوجهی‌ها اعمال می‌شود و توصیفی از ترتیب اجرای جدید بدست می‌آید. مرزهای چندوجهی‌ها، وابستگی‌های داده‌ای و تبدیل‌ها معمولاً توسط تعدادی شرط بیان می‌شوند و از این رو این چهارچوب را مبتنی بر شرط می‌نامند. برای مثال یک دستور در حلقهٔ تودرتو با حلقهٔ بیرونی " و حلقهٔ داخلی " را درنظر بگیرید که به ازای هر جفت formula_3 که formula_6 و formula_7 اجرا شود.


title: بهینه سازی حلقه

text: مجدداً تکرارمی‌شود که یک تبدیل زمانی به‌جا است که دنبالهٔ زمانی وابستگی‌ها را حفظ کند. همچنین تخمین بهره‌وری یک تبدیل یا یافتن بهترین تبدیل برای یک مجموعه کد روی یک کامپیوترکماکان موضوع پژوهش‌های امروزه است (زمان نوشتار متن ۲۰۱۰).