aria-haman/haman-fa-wikipedia-articles-186k huggingface dataset:
موضوع مقاله: مقدمه مرجان اشرفی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # مقدمه مرجان اشرفی | مقدمه: مقدمه مرجان اشرفی (۱۳۱۵–۱۳۹۲) پژوهشگر تاجیکستانی، متخصص تاریخ قرون وسطی و تاریخ‌نگار هنر و عضو افتخاری فرهنگستان هنر ایران بود. | ## بخش 1: مقدمه مرجان اشرفی | زندگی او در سال ۱۹۵۴ از مدرسه موسیقی تاشکند فارغ‌التحصیل شد و در سال ۱۹۵۹ موفق به کسب مدرک تاریخ هنر از دانشگاه دولتی مسکو گردید. از آن زمان تا سال ۱۹۶۱ در گروه خاورشناسی آکادمی علوم اتحاد جماهیر شوروی در مسکو مشغول تدریس بود. از ابتدای سال ۱۹۶۲ به عنوان دانشجوی کارشناسی ارشد وارد موسسه مطالعات شرقی شده و در سال ۱۹۶۸ فارغ‌التحصیل گردید. | ## بخش 2: مقدمه مرجان اشرفی | از ۱۹۶۹ تا ۱۹۷۱ در استخدام گروه فلسفه آکادمی علوم تاجیک بود و از سال ۱۹۷۲ به انستیتو تاریخ رفت. از همین سال بود که ریاست گروه علوم انسانی دانشگاه فنی تاجیکستان را هم بر عهده گرفت. به عنوان یک پژوهشگر، رشته تخصصی هنرهای قرون وسطی با تاکید بر نقاشی آسیای مرکزی را در پیش گرفت. | ## بخش 3: مقدمه مرجان اشرفی | وی در آسیای مرکزی اولین کسی است که موفق به اخذ دکترای هنر شده است و در تاجیکستان نیز تنها کسی است که در زمینه هنرهای تجسمی دارای درجه دکتری است. | ## جمع‌بندی | هنگام مرگ وی مشغول کار بر روی جلد سوم سه‌گانه‌ای با موضوع نقاشی‌های نگارگری تاجیک بود که دو جلد اول آن در سال ۲۰۱۱ منتشر شده‌بودند.
موضوع مقاله: شکافت و ادغام حلقه | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # شکافت و ادغام حلقه | مقدمه: در علوم رایانه، شکافت حلقه (توزیع حلقه) یک بهینه‌سازی کامپایلر است که در آن یک حلقه به چندین حلقه در همان محدوده شکسته می‌شود و هر یک از حلقه‌ها تنها بخشی از بدنهٔ حلقهٔ اصلی را در شامل می‌شود. | ## بخش 1: شکافت و ادغام حلقه | هدف از تجزیه‌کردن یک حلقهٔ بزرگ به چندین حلقهٔ کوچک‌تر، دستیابی به استفادهٔ بهتر از مکان مرجع است. این بهینه‌سازی، در پردازنده‌های چند هسته‌ای بسیار کارآمد است به این صورت که می‌تواند یک کار را به چندین کار برای پردازنده‌ها تقسیم کند. در عوض، ادغام حلقه (متراکم کردن حلقه) یک بهینه‌سازی کامپایلر و دگرگونی حلقه است که چندین حلقه را با یک حلقه جایگزین می‌کند. این امکان وجود دارد که دو حلقه در یک محدوده تکرار شوند و هر یک داده‌های دیگری را ارجاع ندهند. | ## بخش 2: شکافت و ادغام حلقه | در بعضی از معماری‌ها، ممکن است دو حلقه بهتر از یک حلقه عمل کنند زیرا، برای مثال، در هر حلقه مکان داده افزایش یافته‌است. شکافت یا توزیع حلقه، جدا کردن دستورات یک حلقه است که دستورات جدا شده از یکدیگر مستقل هستند. برای مثال در کد زیر، برای بهبود دسترسی به حافظه، دستورهایی که مستقل از هم بوده‌اند، در حلقه‌های متفاوت گذاشته شده‌اند. در چنین شرایطی، کامپایلر از ادغام حلقه برای ترکیب چندین حلقه به یک حلقه موازی منفرد استفاده می‌کند تا سربار حلقه کاهش یابد و عملکرد زمان اجرا بهبود یابد و در نتیجه دانه‌بندی حلقه را افزایش می‌دهد. | ## بخش 3: شکافت و ادغام حلقه | زمانی که حلقه‌هایی با تعداد گردش‌های یکسان در مجاورت یکدیگر قرار دارند، ادغام حلقه آسان و ایمن است. به عنوان مثال، اگر همان داده‌ها در دو حلقه ارجاع داده شده باشند، ترکیب آنها می‌تواند باعث بهبود مکان مرجع شود. اگر ادغام حلقه وابستگی داده‌ای که قبلاً وجود نداشته باشد را ایجاد کند؛ ممکن است ادغام منجر به اجرای نادرست شود. گرچه ادغام حلقه‌ها باعث کاهش سربار حلقه می‌شود، اما همیشه عملکرد زمان اجرا را بهبود نمی‌بخشد و ممکن است عملکرد زمان اجرا را کاهش دهد. | ## جمع‌بندی | برای مثال، اگر دو آرایه در حلقه‌های مجزا بجای اینکه هر دو به صورت همزمان در یک حلقه مقداردهی شوند، ممکن است کارایی بهتری داشته باشد.
موضوع مقاله: الله‌وردی باقروف | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # الله‌وردی باقروف | مقدمه: الله‌وردی باقروف (; – ) افسر آذربایجانی، رئیس اسبق شعبه جبهه خلق آذربایجان در آق‌دام و سرمربی باشگاه فوتبال قره‌باغ بود، که در جنگ قره‌باغ کشته شد. | ## بخش 1: الله‌وردی باقروف | 2015-11-2 اوایل زندگی الله‌وردی باقروف ۲۲ آوریل سال ۱۹۴۶ در شهرستان آق‌دام در بخش قره‌باغ کوهستانی آذربایجان شوروی به دنیا آمد. الله‌وردی باقروف بعد از پشت سر گذاشتن آموزش متوسطه خود در مدرسه‌ای در آق‌دام، به عنوان سرمربی در باشگاه فوتبال قره‌باغ فعالیت‌های شغلی خود را آغاز نمود. کارنامه فوتبال الله‌وردی باقروف از همان عنفوان کودکی‌اش علاقه شدیدی به دو و میدانی و والیبال داشت و مشفول به تمرین کردن در این دو رشته ورزشی بود. وی نقش مهمی در پیروزی باشگاه آق‌دام در مسابقات مختلف ورزشی بین‌منطقه‌ای در سال‌های دانش‌آموزی‌اش و بعد از آن از خود نشان داد. در سال ۱۹۷۰، به عنوان کاپیتان دیدار تیم‌های فوتبال آقدام و جبراییل که در چارچوب «جام سنبل طلایی» در شهرستان فضولی صورت گرفت، حضور یافت.Gault, Matt (2014-08-06). The Guardian در سال ۱۹۷۶، به سرمربی‌گری باشگاه فوتبال قره‌باغ انتخاب شد که در همان سال تیم آذربایجان به واسطه بازی مؤثر او در «مسابقه وحدت جهان» جایگاه چهارم را ازان خود کرد. | ## بخش 2: الله‌وردی باقروف | وی در سال ۱۹۹۱ در دیداری بین بازیکنان فوتبال حرفه ای تیم‌های «قره‌باغ» و نفتچی بازی کرد. در این بازی که به تساوی ۱ بر ۱ به پایان رسید، تنها گل باشگاه آق‌دام را الله‌وردی باقروف به ثمر رساند. کارنامه نظامی در سال ۱۹۸۸، همزمان با شروع ادعاهای ارضی ارمنستان نسبت به قره‌باغ کوهستانی آذربایجان، الله‌وردی باقروف برای دفاع از این منطقه به‌طور داوطلبانه اقدام به ثبت نام در ارتش آذربایجان کرد. پرچم جمهوری مستقل آذربایجان را برای اولین بار الله‌وردی باقروف در آق‌دام به اهتزاز درآورد. در سال ۱۹۸۸، هنگامی که پست‌های نگهبانی بین آسکران و آق‌دام در فقدان اطلاع دولت در حال ایجاد شدن بودند، «الدار باقروف»، برادر الله‌وردی، اولین کسی بود، که بعد از تکمیل ساخت تمامی پستها میان مناطق آذربایجانی نشین و ارمنینشین، داوطلبانه روانه آنجا شد. واحدهای نظامی نیروهای مسلح جمهوری آذربایجان در آق‌دام تحت فرماندهی الله‌وردی و برادرش در اول اکتبر ۱۹۹۱ ایجاد شدند. | ## بخش 3: الله‌وردی باقروف | در همان سال بود، که «الدار باقروف» هنگام بازگشت از جلسه شورای عالی در باکو، به طرز مشکوکی در مقابل خانه خود به قتل رسید. در ژانویه سال ۱۹۹۲، کلیه نیروها و جنگ‌افزارهای ارتش ارمنستان در دهکده نخجوانلی توسط یگان‌های نظامی آذربایجان که تحت امر الله‌وردی باقروف بودند، منهدم شدند. این فرمانده سپس همراه با ۱۵۰ نظامی تا دژ آسکران پیشروی کرده و تمامی ارتفاعات روستای «پیرجمال» را بازپس‌گرفته و در روستای «کتوک» مستقر شدند. آن‌ها این عملیات را فقط ظرف دو ساعت انجام دادند و پرچم ارمنستان را پایین کشیده و پرچم آذربایجان را در آن مناطق برافراشتند. 525.az مرگ الله‌وردی باقروف در سال ۱۹۹۲، هنگامی که برای یک کار فوری به آق‌دام فراخوانده شده بود، به همراه راننده اش بر اثر برخورد خودرویشان با مین ضد تانک کشته شدند. | ## جمع‌بندی | نشان بر اساس فرمان شماره ۴۷۶ رئیس‌جمهور آذربایجان به تاریخ ۲۴ فوریه سال ۱۹۹۳، پس از مرگش به الله‌وردی باقروف فرزند تیمور نشان قهرمان ملی این کشور اعطاء گردید.
موضوع مقاله: اوبود | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # اوبود | مقدمه: اوبود شهری در جزیره بالی اندونزی است که در میان مزارع برنج و دره‌های شیب دار جیانیار واقع شده‌است؛ و به عنوان یک مرکز فرهنگی و هنری در منطقه شناخته شده‌است. | ## بخش 1: اوبود | این منطقه جمعیتی در حدود ۷۴۳۰۰ نفر دارد و سالانه بیش از ۳ میلیون گردشگر خارجی را به خود می‌بیند. مناطق اطراف شهر بیش از همه چیز شامل مزارع کوچک، شالیزارهای برنج، جنگل‌ها و اقامتگاه‌های توریستی است. تاریخچه اوبود افسانه ای مربوط به قرن هشتم میلادی بازگو می‌کند که این مکان یک مکان مقدس برای هندوها است که کشیشی به نام Rsi Markendya در مکانی بین دو رودخانه به مراقبه پرداخت و همچنان این منطقه یکی از محل‌های مقدس و زائر پذیر به‌شمار می‌آید. | ## بخش 2: اوبود | اوبود در ابتدا به عنوان یک منبع برای گیاهان دریایی به‌شمار می‌رفت و نام این منطقه نیز به زبان اندونزیایی برگرفته از ubad به معنی پزشکی می‌باشد! در اواخر قرن نوزدهم میلادی این منطقه با توجه به پیمانی بین پادشاه جیانیار و فئودال‌ها محل اقامتی برای اربابان فئودال شد. توریسم در اوبود توریسم در اوبود معمولاً بر محور غذاهای سالم، یوگا و سبک زندگی آگاهانه متمرکز است. | ## بخش 3: اوبود | از جمله مراکز شناخته‌شده در اوبود می‌توان به یوگا بارن و فایرفلای ریتریت (Firefly Retreat) اشاره کرد که با تمرکز بر یوگا، طب سنتی بالیایی، و تجربه‌های فرهنگی، مقصدی محبوب برای مسافران به‌ویژه گردشگران تنها به‌شمار می‌رود. بیشتر رستوران‌های اوبود نیز بر ارائه غذاهای سالم، ارگانیک و مبتنی بر رژیم‌های غذایی خاص تمرکز دارند. | ## جمع‌بندی | از جمله رستوران‌های گیاهی مطرح در اوبود می‌توان به وایلد ویگن (Wild Vegan) اشاره کرد که به عنوان نخستین رستوران دارویی در جهان شناخته می‌شود و غذاهایی بر پایه گیاهان دارویی و خواص درمانی آن‌ها ارائه می‌دهد.
موضوع مقاله: بلوک پایه | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # بلوک پایه | مقدمه: Allen کامپایلرها معمولاً در قدم اول، برنامه‌ها را به بلوک‌های پایه تجزیه می‌کنند. | ## بخش 1: بلوک پایه | تعریف در ابتدا تعریف شهودی از یک بلوک پایه را ارائه می‌کنیم و در ادامه تعریف رسمی آن را بیان می‌کنیم. تعریف شهودی بلوک پایه به این صورت است: کدهایی که در بلوک پایه قرار می­گیرند دو ویژگی زیر را دارند: هر بلوک پایه فقط یک نقطه ورود دارد، یعنی کدهایی که داخل یک بلوک پایه هستند نمی­توانند مقصد دستورها پرش دیگر در هر کجای برنامه باشند. هر بلوک پایه فقط یک نقطه خروج دارد، یعنی فقط آخرین دستور در بلوک پایه می­تواند یک دستور پرشی یا شرطی باشد و جریان اجرای برنامه را تغییر دهد. حال تعریف رسمی را بیان می‌کنیم که به این صورت است: تربیت از دستورها تشکیل یک بلوک پایه را می دهند اگر: هر دستوری درجایگاهش بر دستورها در جاگاه‌های بعدی تسلط دارد، به عبارت دیگر هر دستوری باید قبل از دستورها بعدی‌اش اجرا شود. برای مثال بر اساس این تعریف، امکان اینکه پرش‌های غیرشرطی مقصدهایی داشته باشند که انواع دیگر پرش به آن مقصدها پرش نمی‌کنند را فراهم می‌کند. تعریف رسمی ویژگی‌هایی را برای بلوک پایه‌ها ایجاد می‌کند که کار کردن با آن‌ها را در زمان اجرای الگوریتم‌ها آسان می‌کند. | ## بخش 2: بلوک پایه | همچنین به بلوک‌هایی که وقتی از یک بلوک پایه خارج می‌شویم، به آن‌ها وارد می‌شویم، جانشینان آن بلوک پایه می‌گویند. ابتدا این الگوریتم را به صورت کلی توصیف کرده و در ادامه آن را به طور کامل تشریح می‌کنیم. توصیف کلی الگوریتم: اجرا کننده‌ی الگوریتم در ابتدا باید یک دور کد را خوانده و مرزهای بلوک پایه را شناسایی کند (مرزهای بلوک پایه دستورها شروع و پایان بلوک می باشند) و آن‌ها را نشانه‌گذاری می‌کند. دستور شروع بلوک پایه می‌تواند مقصد یک دستور پرشی و دستور پایان بلوک می تواند یک دستور پرشی باشد. حال کد را در این نقاط "برش" می‌دهیم؛ بلوک‌های پایه تکه کدهایی هستند که باقی می‌مانند. هدرها دستورهایی هستند که در یکی از شرایط زیر صدق می کنند: اولین دستور یک هدر است. | ## بخش 3: بلوک پایه | مرحله دوم: با شروع از یک هدر، تمام دستورها بعد از آن تا هدر بعدی در بلوک پایه مربوط به هدر اولیه قرار می گیرد. دستورهایی که در پایان یک بلوک پایه ظاهر می شوند یکی از موارد زیر می باشند: دستورها پرشی، چه دستورها شرطی و چه دستورها غیر شرطی دستور برگشت به تابع صدا زننده دستورهایی که ممکن است در آنها یک خطا رخ دهد توابعی که نیازی به بازگشت به برنامه ای که آن را صدا زده است نداشته باشد می تواند در پایان یک بلوک پایه ظاهر شوند، مانند توابع exit و longjmp در زبان برنامه نویسی C دستورهایی که مربوط به بازگشت می باشند. دستورهایی که در ابتدا یک بلوک پایه ظاهر می شوند یکی از موارد زیر می باشند: دستور ورودی یک تابع مقصد دستورها پرشی دستورهایی که بلافاصله پس از دستوارتی که خطا تولید می کنند، ظاهر شده باشند. کنترل کننده های خطا مثال قطعه کد زیر را برای ضرب داخلی دو بردار a و b که طول هر یک برابر 10 می باشد، در نظر بگیرید. توجه کنید طبق قواعد گفته شده دستور (1) دستور شروع برنامه می باشد بنابراین یک هدر است. | ## جمع‌بندی | همچنین دستور (3) مقصد دستوری پرشی در (12) می باشد بنابراین این دستور نیز یک هدر است.
موضوع مقاله: سه فراری: داستان‌های آرکادیا | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # سه فراری: داستان‌های آرکادیا | مقدمه: سه فراری: داستان های آرکادیا یک مجموعه تلویزیونی پویانمایی آمریکایی است که توسط دریم‌ورکس انیمیشن تولید شده‌است و دومین قسمت از سه گانه داستان های آرکادیا است. | ## بخش 1: سه فراری: داستان‌های آرکادیا | سومین و آخرین قسمت از داستان‌های آرکادیا با عنوان جادوگران در ۷ آگوست سال ۲۰۲۰(۱۷ مرداد ۱۳۹۹) منتشر شد. داستان دو خواهر و برادر سلطنتی فضایی، پرنسس آجا و پرنس کرِل هاوس تارون، سگ آنها مانند حیوان خانگی به نام لووگ و محافظ آنها، وارواتوس وکس، از سیاره خانه خود آکریدیون-۵ فرار کرده و به‌طور خاصی در زمین و در آرکادیا اوکس[Arcadeia Oaks] کالیفرنیا سقوط می‌کنند. در آنجا، بیگانگان با فرهنگ و پوشش انسانی تنظیم می‌شوند و سعی می‌کنند سفینه فضایی خود را تعمیر کنند (و همچنین پدر و مادر تقریباً مرده خود پادشاه فیالکوو و ملکه کوراندا را ترمیم کنند) برای بازگشت و پس گرفتن آکریدیون-۵، که توسط ژنرال موراندو گرفته شده‌است. ژنرال وال موراندو یک دیکتاتور شیطان صفت است، که تاکنون تیمی از مزدوران بین کهکشانی به نام برادران زیران را برای یافتن و گرفتن شاهزادگان به بیرون فرستاده‌است. | ## بخش 2: سه فراری: داستان‌های آرکادیا | پس از تحقیق در مورد راهی برای متوقف کردن ژنرال موراندو و پیدا کردن محل مخفی شدن آجا و کرل، زادرا، یکی از محافظان نجیب اشرافی از آکریدیون-۵ وارد زمین می‌شود. در همین حال، پس از اطلاع از درگیری وی در کودتای موراندو، آجا و کرل تصمیم به تبعید وِکس می‌گیرند. ویکس در دوران تبعید خود به اسارت برادران زیرون دستگیر می‌شود و در پاسگاه مزدوران واقع در سیاره ماه زندانی می‌شود. در فصل ۲، آجا و کرل از دستگیری او مطلع شده و یک مأموریت نجات را راه اندازی می‌کنند. | ## بخش 3: سه فراری: داستان‌های آرکادیا | پس از شکست موفقیت‌آمیز او، آجا، وکس، زادرا، لوگ و بقیه سرانجام به خانه بازمی‌گردند و به ایلای پیوستند که داوطلبانه سفیر کره زمین در آکریدیون-۵ است. کرل که زمین به خانه او تبدیل شده‌است تصمیم می‌گیرد تا در کنار دوستان انسانی جدید خود در سیاره زمین بماند.در آخر توبی و استیو درحال قدم زدن در خیابان هستند که ناگهان گربه ای سخنگو به آنها میگوید که دنیای آنها در خطر نابودی است داستان درانمیشن جادوگران : داستان های ارکدیا ادامه پیدا میکند. به این ترتیب است: غول کش ها ، سه فراری ، جادوگران آرکادیا ، غول کش ها : ظهور تایتان ها گوینده‌ها تاتیانا مازلانی در نقش آژا، ملکه کوراندا دیه‌گو لونا در نقش کِرِل نیک آفِرمن در نقش وارواتوس وِکس گلن کلوز در نقش مادر فرانک ولکر در نقش لوگ آلون ابوتبول در نقش موراندو اوزو ادوبا در نقش سرهنگ کوبریتز اسکار نویز در نقش گروهبان کاستاس اندی گارسیا در نقش پادشاه فیالکوف تام کنی در نقش دادلبک شریل هاینز در نقش ممبلانک نیک فراست در نقش استوارت دارین د پل در نقش صفر آلفا آن داوود در نقش صفر امگا هایلی اتول در نقش زادرا جنیفر هیل در نقش ایزیتا کریس اوبی در نقش لوت ساابریان دنی تِرِجو در نقش ترونوس کول ماس در نقش الی پپر جک استیون یون در نقش استیو پالچوک ج. | ## جمع‌بندی | اِسموو در نقش فیل تام ویلسون در نقش مربی لارنس چارلی ساکستون در نقش توبی فرد تاتاسیوریور در نقش آررگ!!!، ارشد اول، نب، ماگماترون متیو واترسون در نقش آقای جانسون امیل هیرش در نقش جیم لیک جونیور.
موضوع مقاله: حیات‌الحیوان | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # حیات‌الحیوان | مقدمه: حیات الحیوان، حیات الحیوان الکبری یا منافع الحیوان، کتابی از کمال‌الدین دمیری درباره روحیات و حالات حیوانات و نیز فوائد و مضرات آنها در پزشکی است و به زبان عربی نوشته شده است؛ وی روایات و آیات قرآنی را که در ارتباط با موضوع مورد نظر هستند گرد آورده است. | ## بخش 1: حیات‌الحیوان | محمدتقی تبریزی در دورهٔ صفویه آن را با عنوان خواص الحیوان به فارسی برگردانده‌است. مولف در این کتاب به ذکر نام حیواناتی که اسامی آنها به گوش وی خورده و یا آنها را در کتب یونانی‌ها و یا عرب‌های قدیم و نیز آثاری که درباره طب و حیوانات در زمان‌های نزدیک به عصر مؤلف نگاشته شده است، یافته است می‌پردازد. | ## بخش 2: حیات‌الحیوان | ساختار کتاب این کتاب در سه بخش مجزا نگارش پیدا کرده است؛ در فصل اول به مفهوم تاثیر به مثابه اصطلاحی ادبی اشاره شده است. این فصل صرفاً جهت رفع ابهام از تعاریف و مصادیق بازنگری گشته اما در فصل دوم و سوم در مورد تاثیر قرآن بر عناصر بیانی و بدیعی صور خیال صحبت شده است. | ## بخش 3: حیات‌الحیوان | مولف بعد از آنکه نام حیوان را به صورت کامل و دقیق ضبط می‌کند و اصل لغوی آن را معرفی می‌نماید، به توصیف حیوان پرداخته و سپس اخبار و روایاتی را که بر طبیعت و سرشت آن حیوان دلالت دارد یادآور می‌شود. در بخش روایات دسته‌ای از احادیث نبوی و آیات قرآنی را که در ارتباط با موضوع مورد نظر هستند گرد می‌آورد و پس از آن اشعار و امثال و حکم متناسب با موضوع را نیز ذکر می‌کند. | ## جمع‌بندی | در ادامه نظرات فقهاء را درباره حیوان مورد نظر از جهت حلیت و حرمت خوردن آن یادآور شده و در پایان به بیان فوائد و مضارت طبی آن می‌پردازد.
موضوع مقاله: توابع کلاس اول | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # توابع کلاس اول | مقدمه: در علوم کامپیوتر می‌گوییم یک زبان برنامه‌نویسی، دارای تابع کلاس-اول است اگر آن زبان با توابع خود به صورت شهروند درجه-یک رفتار کند. | ## بخش 1: توابع کلاس اول | در زبان‌هایی که توابع کلاس-اول دارند، نام تابع هیچ وضعیت خاص یا ویژه‌ای ندارد و همانند متغیرهایی از نوع تابع با آنها برخورد می‌شود. اصطلاح توابع کلاس-اول برای اولین بار توسط کریستوفر استراچی در زمینۀ "توابع به عنوان شهروندان درجه-یک" و در اواسط دهۀ 1960 میلادی ابداع شد. یک مثال ساده از تابع مرتبه‌ی بالا، تابع نگاشت (map) است که به عنوان آرگومان و ورودی خود یک تابع و یک لیست می‌گیرد و در نهایت یک لیست جدید برمی‌گرداند که تابع مورد نظر بر روی هر یک از اعضای لیست اعمال شده است. برای اینکه یک زبان برنامه‌نویسی بتواند از تابع نگاشت پشتیبانی کند، باید یک تابع را به عنوان آرگومان تابعی دیگر بپذیرد. مفاهیم در این بخش نحوه‌ی پیاده‌سازی یا شبیه‌سازی اصطلاحات مختلف برنامه‌نویسی در زبان‌های دارای تابع کلاس اول (هسکل و پایتون) و زبان‌های فاقد آن (سی)، بررسی می‌شود. توابع مرتبه‌ی بالا توابع مرتبه‌ی بالا، توابعی هستند که حداقل یک تابع در آرگومان‌های ورودی یا خروجی آن وجود داشته باشد. | ## بخش 2: توابع کلاس اول | در زبان‌هایی که دارای توابع کلاس اول هستند، توابع می‌توانند مانند متغیرهای معمولی، به عنوان ورودی به توابع دیگر داده شوند. بنابراین برای پیاده‌سازی توابع مرتبه‌ی بالا، بهتر است که زبان مورد نظر از توابع کلاس اول پشتیبانی کند. این توابع به دو صورت می‌توانند از توابع کلاس اول استفاده کنند: زمانی که آرگومان‌های ورودی تابع، تابع باشند و زمانی که خروجی تابع، یک تابع باشد. هر چند این گونه پیاده‌سازی‌ها، مشکلات خود را دارند: توابع کاری نمی‌توانند از لحاظ نوع متغیر بررسی یا چک شوند. همچنین چون این در این توابع تعداد آرگومان‌ها و نوع آن‌ها مشخص نیست، میزان حافظه‌ای که برنامه باید برای هر متغیر اختصاص بدهد، در ابتدا معلوم نیست و برنامه اندازه‌ی تمام متغیرها را به صورت اندازه‌ی یک عدد صحیح (integer) در نظر می‌گیرد. در زبان‌هایی که از توابع ناشناس پشتیبانی می‌شود، می‌توان تابع را به عنوان یک آرگومان به یک تابع مرتبه‌ی بالا ورودی داد. | ## بخش 3: توابع کلاس اول | برابری گسترده دو تابع f و g را برابر به صورت گسترده می‌نامند اگر به ازای هر ورودی، خروجی برابری داشته باشند. نتیجه‌گیری در مورد برابری توابع به صورت گسترده، امکان‌پذیر نیست و حتی در مورد توابعی که ورودی‌های محدودی دارند، امر ساده‌ای نیست. بنابراین زبان‌های برنامه‌نویسی برابری تابع‌های خود را به صورت برابری گسترده پیاده‌سازی نمی‌کنند. برابری فشرده دو تابع f و g را برابر به صورت فشرده می‌نامند اگر ساختار داخلی یکسانی داشته باشند. برابری مرجعی از آنجایی که پیاده‌سازی دو برابری بالا امکان‌پذیر نیست، بیشتر زبان‌های برنامه‌نویسی برای بررسی برابری توابع، از این نوع برابری استفاده می‌کنند. در این نوع برابری، تمام توابع با استفاده از یک علامت مشخص می‌شوند و برابری دو تابع بر اساس برابری علامت آن‌ها تعیین می‌شود. | ## جمع‌بندی | دو تابع کاملاً برابر که به صورت جدا تعریف شده‌اند، در این تعریف برابر نخواهند بود.
موضوع مقاله: گرامرهای عبارت قطعی | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # گرامرهای عبارت قطعی | مقدمه: گرامرهای عبارت قطعی روشی است برای توضیح گرامر زبان‌های رسمی و طبیعی، که در برنامه‌نویسی منطقی مورد استفاده قرار می‌گیرد. | ## بخش 1: گرامرهای عبارت قطعی | این مفهوم بسیار به مفاهیم گرامرهای صفتی و گرامرهای مضافی مرتبط است که هر دو توسط زبان Prolog توسعه پیدا کرده‌اند. این طرز نشان دادن، گرامرها را به صورت مجموعه ای از عبارات قطعی از منطق مرتبه اول ارائه می‌دهد و به همین دلیل است که به آن گرامر عبارت قطعی گویند. اما همه این گرامرهایی که با بندهای قطعی بیان شده‌اند قابلیت‌های DCG را دارا هستند. بندهای قطعی DCG را می‌توان مجموعه ای از جملات بدیهی در نظر گرفت که می‌توان بر اساس آن‌ها معتبر بودن یک جمله را در گرامر مورد نظر بررسی کرد. به عبارت دیگر این مجموعه جملات بدیهی کمک خواهند کرد که تشخیص دهیم آیا می‌توان برای ورودی یک درخت پارس (Pars tree) یکتا ساخت یا خیر. استفاده از این روش تشخیص عضویت ورودی به زبان و تشکیل درخت پارس آن را به یک مسئله ساده قابل حل تبدیل می‌کند. تاریخچه Prolog نیز به تحقیقات و پژوهش‌های مختلفی برمی‌گردد که مرکزیت آن‌ها به دو شهر مارسی فرانسه و ادینبرو اسکاتلند برمی‌گردد. | ## بخش 2: گرامرهای عبارت قطعی | بر اساس نقل قولی از رابرت کوالسکی که یکی از برنامه نویسان قدیمی زبان Prolog است، اولین ورژن از Prolog در سال ۱۹۷۲ توسط آلاین کلمراویر و فیلیپ راسل ارائه شد. اولین برنامه ای که با این زبان برنامه‌نویسی نوشته شد، یک سیستم پردازش زبان طبیعی بزرگ بود. فرناندو پریرا و دیوید وارن از دانشگاه ادینبرو هم در توسعه نسخه‌های اولیه Prolog نقش مؤثری داشتند. کلمراویر پیش تر بر روی یک سیستم پردازش زبان به نام سیستم Q کار کرده بود که برای ترجمه متون بین زبان‌های فرانسوی و انگلیسی استفاده می‌شد. درسال ۱۹۷۸ کلمراویر مقاله ای در رابطه با روشی برای بیان کردن گرامرها نوشت و در آن مثال‌هایی از برنامه‌هایی که از آن‌ها استفاده می‌کردند آورد. آن‌ها در ادامه ایده گرامرهای متامورفوسیس، گرامرهای عبارت-قطعی را به عنوان زیرمجموعه‌ای از گرامرهای متامورفوسیس معرفی کردند. این ایده در مقاله‌ای تحت عنوان «گرامرهای عبارت-قطعی برای تحلیل زبان ها» منتشر شد و در آن بیان شد که DCGها شکل فرمول گونه گرامرها هستند به طوری که گرامر توسط عبارت‌های قطعی منطق مرتبه اول بیان می‌شود. | ## بخش 3: گرامرهای عبارت قطعی | مثال‌ها مثال زیر نمونه ای ساده از قسمتی از گرامر زبان انگلیسی است که در آن یک جمله از دو عبارت اسمی و فعلی تشکیل شده‌است که عبارت اسمی می‌تواند از ترکیب یک حرف اضافه و اسم تشکیل شود و عبارت فعلی از ترکیب یک فعل و یک عبارت اسمی ساخته می‌شود. برای ساختن تمام جملات حاصل از این گرامر می‌توان از دستور زیر درمفسر Prolog استفاده نمود. لیست‌های تفاوت روشی برای نشان دادن پیشوند یک لیست (یا یک رشته) هستند که این کار را به وسیله تفاوت بین پسوند دو ورودی انجام می‌دهد. به‌طور مثال در نمونه زیر یک لیست پیشوندی تکی، به صورت لیست‌های تفاوت نوشته شده‌است. به همین دلیل تنها می‌تواند برای استفاده در گرامرهای مستقل از متن به کار گرفته شود. با به کار گرفتن متغیرهای ورودی بیشتر، می‌توان DCGها را برای گرامرهای وابسته به متن نیز به کار برد. نمایش محدودیت زبان‌ها قابلیت‌ها و محدودیت‌های زبانی مختلف می‌توانند توسط DCGها نمایش داده شوند. | ## جمع‌بندی | در برخی موارد لازم است برای رسیدن به این مسئله پارامترهای ورودی توابع را افزایش دهیم.
موضوع مقاله: گره سلطه گر | مخاطب: عمومی | لحن: دانشنامه‌ای | ساختار: عنوان، مقدمه، 3 بخش، جمع‌بندی | مقاله: | # گره سلطه گر | مقدمه: گره ۲ بر تمام گره ها به جز گره ۱ غلبه می‌کند و دیگر گره‌ها در گراف فقط بر خود غلبه می‌کنند. | ## بخش 1: گره سلطه گر | همچنین گره ۱برای گره ۲ یک گره سلطه گر آنی محسوب می‌شود و گره ۲ نیز برای گره های ۳، ۴، ۵ و ۶ گره سلطه گر آنی بوده. در گراف های جهت دار، زمانی می‌گوییم گره بر گره غلبه می‌کند که به ازای هر گره همه مسیر ها از به ، از گره عبور کند. با توجه به تعریف می‌توان برای هر گره مجموعه‌ای از گره های سلطه گر در نظر گرفت که بر این گره غلبه می‌کنند. همچنین می‌توان برای هر گراف یک درخت سلطه گر تعریف کرد که به ازای هر گره در گراف، اجداد این گره در درخت، گره های سلطه گر بر این گره در گراف هستند. گره‌های سلطه گر آنی گره به مجموعه گره‌هایی می گویند که فقط بر گره به صورت اکید غلبه کرده و بر هیچ گره دیگری اکیداً غلبه نکند. گره‌های سلطه گر مرزی گره به مجموعه گره‌هایی می‌گویند که گره بر والدهای مستقیم آنها غلبه کرده ولی به صورت اکید بر آن گره‌ها غلبه نکند. | ## بخش 2: گره سلطه گر | بنابر تعریف می‌توان برای سلطه گری اکید نتیجه گرفت که نزدیک گره سلطه گر اکید برای هر گره یکتا بوده و یک گره برای آن وجود دارد. تاریخچه و کاربرد تعریف گره سلطه گر یا غالب برای اولین بار توسط ریس پروسر در مقاله‌ای تحت عنوان کاربردهای ماتریس بولی برای تحلیل نمودارهای جریان ارائه شد. او در این مقاله الگوریتمی برای پیدا کردن گره های سلطه گر ارائه نکرد و صرفاً آن را تعریف کرده. از کاربرد های آن می‌توان به زمینه های بهینه سازی برنامه، تولید کد، تست مدار اشاره کرد. برای مثال یک کاربرد آن در کامپایلر برای پیدا کردن حلقه ها در بهینه سازی کد به کمک بلوک های پایه است. الگوریتم پیدا کردن گره‌های سلطه گر با توجه به تعریف برای هر گره اگر برابر با مجموعه گره‌های سلطه گر بر گره در نظر بگیریم آنگاه رابطه زیر را خواهیم داشت. | ## بخش 3: گره سلطه گر | در اینجا برابر است با مجموعه تمام گره‌هایی که وارد گره می‌شوند یعنی یک یال از سمت آنها به وجود دارد. الگوریتم دیگری توسط رابرت تارجان و توماس لینگوار ارائه شده که به وسیله الگوریتم جستجوی اول عمق (الگوریتم dfs) در زمان تقریباً خطی این کار را انجام می‌دهد. الگوریتم پیدا کردن گره‌های سلطه گر مرزی با توجه به تعریف برای گره سلطه گر مرزی می‌توان رابطه های زیر را بدست آورد. که در اینجا همان مجموعه گره‌های سلطه گر مرزی است و برابر مجموعه گره‌هایی است که بر آن‌ها غلبه می‌کند و برابر است با . | ## جمع‌بندی | همچنین برای که یک مجموعه است داریم که اینجا برای گره برابر است مجموعه تمام گره هایی که از به آنها در گراف جهت دار مسیر وجود دارد.